展开

文章目录

修改历史

历史修改版本

  1. 2021-03-11 18:27:19
  2. 2021-02-23 10:27:08
  3. 2021-02-23 10:26:46

记一次网站被高频爬虫攻击

2021-02-23 10:24:45 应用部署 188

简介

网站开放的疆域辽阔的互联网中,当然避免不了一些不必要麻烦,比如DDoS攻击,高频爬虫攻击等等,正好昨天就出现了一次,因此记录一下处理方式。

1.问题

昨天下午(2021-02-22)4点多的时候,访问网站发现打开速度非常的慢,个人感觉有点不正常。虽然说部署服务器的带宽只有1M,但是首页的日访问量一般都是100-200之间,其中还包括我本人的访问量,因此感觉是有IP一直占用这服务器带宽,导致网站打开十分缓慢。

2.排查

通过SSH登录到云服务器上,发现SSH也变得十分卡顿,这一般都是因为网络出口带宽太低或者被占用,平时通过SSH操作的时候都十分流畅,毕竟买的是鹅肠成都地区的服务器,通过如下命令查看网络流量详情

sudo iftop 

iftop不是系统自带工具需要安装

  • sudo apt-get install iftop 

因为服务器配置低只有一个网卡,如果有多个网卡可以通过-i参数来指定哪个网卡

  • sudo iftop -i eth0 

流量详情如下图

iftop

可以看到IP116.253.54.18一直有网络数据交换,而且瞬时数据量非常大(虽然说只有1M多点但对于我这个IM带宽的服务器已经是很巨大了),经过IP查询该IP为广西贺州,如下图

3.解决办法

那么查明了问题的根源解决办法就出来了,可以封禁该IP来解决这个问题,现在是我的SSH很卡没办法使用,我们可以通过鹅肠云服务器安全组策略来禁止该IP。

a.通过网页控制台

登录鹅肠云服务器控制台,点击左侧安全组选项,在右侧页面中点击蓝色新建按钮,模板选择自定义,其他的默认设置就好。

点击确认按钮然后弹出提示框点击立即设置安全规则,在入站规则中添加规则,按照下面的提示进行设置即可,然后点击完成。

image-20210223093757362

到现在只是添加了安全规则,但是并没有在你的云服务器实例上生效,在点击页面上关联实例tab,将新建的安全规则关联到对应的实例上,然后点击确定,这时候你禁用的IP就访问不了你的服务器了。

image-20210223094114780

b.通过nginx封禁IP

上面那种方式是在SSH没办法正常使用的情况下的解决方法,如果SSH能够正常使用的话,那么可以通过nginx的一些机制来禁用访问IP。

假设nginx安装在/etc/nginx/目录下,在该目录中新建黑名单IP配置文件

sudo vim blacklist.conf 

blacklist.conf中按照下面的方式写入内容

禁用IP
deny 116.253.54.18;
禁用IP段
deny 116.253.54.0/225; 

保存退出文件,输入下面的命令配置nginx.conf

sudo vim nginx.conf

http配置段中加入下面的内容

include blacklist.conf;

测试配置是否正确

sudo nginx -t
# 出现下面的提示则说明配置正确
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful 

重启nginx配置

sudo nginx -s reload

blacklist.conf文件可以新建在任何地方,在ngxin.conf中引用的时候加入绝对路径就可以了;

nginx封禁IP只是将响应返回403并没有真正的封禁IP;

当然除了上面的两种方式还可以通过防火墙等其他方式来解决这个问题,这篇文章只说明我个人的处理方式。

网站恢复正常访问之后打开运行日志发现这个B发起了6800多次请求,如下图

 

当前共有2条评论


ouyang123 用户

厉害了

清水 博主 回复:ouyang123

哈哈哈 还好吧 挺简单的


ynushehao 用户

niu

清水 博主 回复:ynushehao

哈哈哈哈 昨天还加了一个新功能 根据nginx请求日志自动拉黑异常流量IP