缘由

为什么会写这样的一篇文章呢,原因是本人的小破站于2020年曾被小学生恶意攻击过,当时只能通过各种防御方法,去保证网站的稳定运行,不然的话这个域名就算废了。我们又不能去学习那些歪门邪道的去反击,所以防御自然就是最好的方法了。近日,有QQ交流群里的人通过ping域名的方式找到了我的服务器IP,我随手一点,震惊了,居然可以通过IP访问我的域名,我明明记得自己配置过了Nginx,于是我前往查看,发现配置是配置了,但是没有生效。于是写一篇文章分享下个人小破站被(盈盈自得的)小学生恶搞时,该如何做好防御的措施。顺便记录下禁止IP访问网站的方法。

如果被攻击怎么办

网站被攻击时,会出现拥堵情况,导致访问变慢。接着就是访问失败,网站会访问失败。然后触发预警,服务器陷入封锁状态,一般这个状态会持续几个小时。此时云服务器提供商会发短信提醒你,网站正在被攻击等详细信息。而此时不推荐立即解除封锁,因为对方的攻击行为可能还没有结束,所以这个时候,应该去布防。这期间去布置防御的话,可以在下一次解除封锁状态时暂时或永久解决被攻击的问题。

常见的攻击类型

一般网站遭遇的攻击类型有CC、DDOS、SQL注入、DNS劫持等。那么我在遭遇攻击(恶搞)时,是如何防御的呢!

防御措施

1.高防服务器

首先最直接的方法就是购买高防服务器,选择大品牌的云服务器提供商的服务器,稳定,有保障。阿里云腾讯云华为云西部数码等。

2.CDN隐藏IP

可以给网站套CDN,达到隐藏IP的效果,这样别人就找不到你的服务器IP自然就攻击不到了,同时CDN还可以加速网站的访问速度。但是启用CDN后应注意合理的设置流量和请求阈值。如果不设置阈值的话,遭遇恶意请求刷流量等,可能会造成流量费用。一般大点的网站遭遇严重的后果,可能会损失一套房。滑稽。
CDN的选择一般云服务器提供商都会提供,也有第三方的CDN平台也值得推荐又拍云七牛云 等。

3.启用Nginx防火墙

3.1: linux服务器开启NGINX防火墙
linux服务器下先安装NGINX。

yum install nginx

启动服务

systemctl start nginx

开启/关闭防火墙

//开启
systemctl start firewalld
//关闭
systemctl stop firewalld

查看端口开放情况

firewall-cmd --list-ports

开放某个特定的端口

firewall-cmd --zone=public --add-port=81/tcp --permanent

关闭某个特定的端口

firewall-cmd --remove-port=80/tcp --permanent

更改配置后重启防火墙

systemctl reload firewalld

3.2: 宝塔面板开启NGINX防火墙
3.2.1: 在宝塔应用商店找到Nginx免费的防火墙,下载并安装

3.2.2: 安装后找到NGINX防火墙并打开站点配置

3.2.3: 然后打开防火墙开关并点击cc防御设置

3.2.4: 根据实际情况谨慎设置详细参数

4.关闭闲置端口服务等

可以前往服务器面板查看端口列表将一些不常用的端口关闭,还有提供的一些不必要的服务也可以关闭。这样能够一定程度的提高安全性。

5.禁止ping IP

禁止ping IP也可以提高网站的安全性
5.1 linux服务器禁止ping IP方法
登录Linux服务器运行下面的指令

//禁止ping IP
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
//恢复
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all

5.2 宝塔面板用户开启禁ping
前往宝塔面板打开系统安全,打开禁ping按钮

5.3 可以看到开启后确实ping不到了

6.回归正题

通过禁ping IP的方式确实能够提升安全性,但是通过IP访问还能够访问网站,所以下面就说说如何禁止别人通过IP访问自己的网站,而只能通过域名来访问。

6.1: 首先可以配置nginx
前往nginx文件夹下的conf/nginx.conf,双击打开文件,

6.2: 几种配置方法
①添加配置

//在server段里插入如下正则:
listen       80;
server_name  域名;
if ($host != '域名'){
   return 403;
}

②添加配置
新增server模块

server {
  listen 80 default;
  server_name _;
  return 403;
}

在原来的server模块内添加:

listen 80;
server_name  域名;

③添加配置

server {
listen 80 default;
return 500;
}

④添加配置

//重定向到域名,提升访问体验
server {
listen 80 default;
rewrite ^(.*) 你的域名 permanent;
}

干脆点

通过上面的设置确实IP不能访问域名了,但是如果你的站点如果添加了站点地图了sitemap。也会导致不能访问。所以本人直接在网站的nginx配置文件添加了以下配置,

server
{ 
    listen 80 default_server;
    server_name www.iftiger.com iftiger.com;
    if ($host = '你的IP'){
        return 403;
        }
最后修改:2021 年 06 月 28 日 01 : 00 PM
本文作者:博主:    
文章标题:配置Nginx禁止用户通过IP访问网站,以此提高网站安全性。
本文地址:https://www.iftiger.com/archives/153.html     
版权说明:若无注明,本文皆为“泰戈尔のBlog”原创,转载请保留文章出处。
如果觉得我的文章对你有用,可以对我进行您主观即不限定金额大小的打赏。