Q1: 网站无法访问,疑似被爬虫打垮了。
Tips: 轻量级 2核4G 服务器。
今天本想访问下自己的网站,给他添加些新功能,结果发现,网站无法访问了。

傻了!!啥问题,服务器崩了??
登录服务器,查看pm2 前端日志,没有问题,一切正常,服务也是在运行状态。

惊了,查看nginx日志,果然发现问题了,居然有请求访问不存在的路径,我顿时就明白了,感情是安全实习生把我的服务器当靶场训练了,并且试图进入我的php数据库管理员和solr后管界面,但是可惜的是我的服务器只是简单的项目,并没有后管也没有使用这么复杂的技术,但是这么些请求就把我网站打垮了,不可思议。

无论如何,要先控制他们的访问才是王道。这时候,我们就要推出一款比较优秀的防止爆破攻击的工具fail2ban了
A1: 重启前端服务,重启nginx,开启fail2ban
fail2ban
Fail2ban 是一款开源的、用于防止网络服务被暴力破解的软件。它可以监控系统日志文件,并寻找有恶意行为的迹象,比如太多的密码失败尝试、寻找系统漏洞等。一旦检测到这样的行为,Fail2ban 就会自动更新防火墙规则以阻止恶意 IP 地址的进一步访问,从而增加了服务器的安全性。它可以保护 SSH、FTP、SMTP、Apache 等多种服务。通过自动封禁恶意 IP,Fail2ban 可以显著提高服务器的安全性。
fail2ban 防止SSH口令爆破攻击

fail2ban的安装,可以参考我的其他博文。
这次我们安装好之后,过了一会再查看日志,我们发现不止cc攻击还有,居然还有ssh口令爆破攻击,可以看见fail2ban可以帮我们屏蔽大部分ssh爆破攻击了,不愧是你:
ssh防止爆破配置
vim /etc/fail2ban/jail.local
添加一下内容
1 | [sshd] |
重启fail2ban:
1 | systemctl restart fail2ban |
等待一会发现ssh爆破攻击日志
1 | tail /var/log/fail2ban.log |

查看ssh禁用ip列表
1 | fail2ban-client status sshd |

fail2ban防止cc攻击
要配置Fail2ban以在60秒内出现10次404或者400的错误时禁止IP,需要在Fail2ban的配置文件中创建一个新的过滤器和一个新的监视动作。以下是一个基本的步骤:
- 创建一个新的过滤器。在
/etc/fail2ban/filter.d目录下创建一个新的文件,例如nginx-404.conf,并添加以下内容:
1 | [Definition] |
这个正则表达式将匹配任何返回404或者400的状态码的GET|POST|HEAD请求。
- 在
/etc/fail2ban/jail.local文件中创建一个新的监视动作。添加以下内容:
1 | [nginx-404] |
logpath = /var/log/nginx/*access.log 用于匹配所有的nginx的配置文件。
这个配置将监视Nginx的访问日志,并在60秒内发现10次匹配的行为时,将IP地址添加到iptables的HTTP链中,禁止其访问10分钟。
- 保存你的更改并重启Fail2ban服务以应用新的配置:
1 | sudo systemctl restart fail2ban |
请注意,你可能需要根据你的系统和Nginx配置进行一些调整。例如,你可能需要更改logpath以匹配你的Nginx访问日志的实际位置。