利用 Fail2ban 防止 Nginx 被 DDOS

等了好几天都没有收到信用卡扣费的通知,于是问了下中华电信的扣费周期(请不要问我等了多久才收到回复谢谢)。

信用卡认证后,会于费用产生次月之 6~8 号,向该信用卡扣款。

但是如果客户使用 hicloud 费用达 NT$10,000 者,将会于费用满 NT$10,000 该日之次周,

提前向信用卡扣款。

为了避免我的信用卡被刷爆,今天研究了一下怎样用 fail2ban 防止被 DDOS。

参考文献:

  1. Survive DDOS Attack with Nginx and Fail2ban
  2. fail2ban 防暴力破解介绍使用
  3. Nginx Anti-DOS filter for Fail2Ban

原理其实蛮简单,就是用正则表达式去查看 log 里面有没有同一个 IP 在某个区间段内频繁访问。

在/etc/fail2ban/filter.d/下建立一个新的规则 nginx-req-limit.conf:

修改/etc/fail2ban/jail.conf,增加:

这样就是每 60 秒单 IP 只能访问 100 次,对比 log 文件,大概长这个模样:

其实这是一个比较强的规则,所以为了避免误判,关闭一些对缓存文件的 log:

最后重启 nginx 和 fail2ban 即可,重启 fail2ban 时需注意有没有找不到 log 的错误提示。

我把 100 次改成了 3 次测试了一下,效果还不错,果然就打不开网站了,不过 ssh 还正常访问。

比较奇怪的是这几天收到的邮件都说流量为 0,不知道是不是因为处于扣费周,总之这是个神奇的事情。

流量使用明细

顺带用 ChinaZ 站长工具测了一下,可以看得出来移动的国际宽带出口是最好的,可惜我家没有移动宽带入户,在深圳估计能用上移动宽带的极少。

ping

下面这个测的是首页加载速度:

speed

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.