其实之前用FAIL2BAN只是为了防SSH被暴力破解,但其实我一般都是关闭22端口的。今天发现原来FAIL2BAN还可以防CC!
经常会有那么几次网站被疯狂扫描以及攻击导致接近宕机状态,其实可以用FAIL2BAN封杀之。
以下备用:
在DEBIAN系统下同样是编辑 /etc/fail2ban/jail.d/defaults-debian.conf:
[http-flood]
enabled = true
port = http,https
filter = http-flood
logpath = /var/log/nginx/access.log
maxretry = 100
findtime = 60
bantime = 600
这个规则使用了名为 http-flood
的filter,监控Nginx的访问日志 /var/log/nginx/access.log(具体根据实际路径修改)
。它设置了在60秒内超过100次访问的IP将被封锁,封锁时间为600秒。
然后创建一个自定义的Fail2Ban filter规则,以匹配CC攻击的特征。在 /etc/fail2ban/filter.d/
目录下创建一个名为 http-flood.conf
的文件,内容如下:
[Definition]
failregex = ^<HOST> -.*"(GET|POST).*
ignoreregex =
这个规则用于匹配HTTP请求的日志条目,你可能需要根据你的Web服务器日志格式进行调整。
这个过滤器的目的是在日志中查找包含某个IP地址和包含 "GET" 或 "POST" 请求的行。这有助于检测到针对网站的某些攻击或滥用行为,例如频繁的HTTP请求。如果在 findtime
时间窗口内有超过 maxretry
次的这种行为,Fail2Ban 将采取相应的封禁动作。
最后重启
sudo systemctl restart fail2ban
或者
sudo service fail2ban restart
这样,Fail2Ban将监控HTTP请求日志,如果检测到某个IP在短时间内发起过多请求,将自动封锁该IP一段时间,从而防范CC攻击。确保根据你的实际情况调整maxretry
、findtime
和bantime
等参数。