自己搞了个简易防火墙,应对最近发生的恶心事儿。自从撤掉360网站卫士之后,VPS经常遭遇“坏人”攻击。最令我无奈的是几个垃圾蜘蛛,它们的抓取速度过快导致网站性能下降很严重;最令我恶心的事儿是CC攻击,隔三差五就会有一些无聊的人发起CC,网站就会变得很慢,可以说基本打不开了;最令我恼火的事儿是暴力破解密码,某天下午从1点开始一直持续到晚上7点,访问记录几乎全是wp-login.php。

undercca

忍不下去了,写了一个简易的类似防火墙的东西应对这些恶心行为,大体上是这样运作的:

1.首先是判断,访问者IP是否在黑名单中,如果在黑名单中直接退出,并保存此次访问记录,最大程度减少服务器资源的浪费

2.访问者不在黑名单中:打开访问记录,统计指定时间段内此IP访问次数,如果没超过预定值(比如1000)继续;超过预定值退出,并将IP加入黑名单

3.生成访问记录,以便做下一次分析

4.开始加载WordPress

这样一来,三个恶心问题全部解决。试运行一周,感觉效果还是很不错的。垃圾蜘蛛已不再来骚扰;暴力破解者只有1000次机会,这也谈不上暴力破解了;CC攻击也只能造成很短时间的冲击,网站很快就会恢复正常。

经过几天测试,网站运行状况有了很明显的改观,几个频繁攻击的IP也被记录下来。被记录下来的IP除了垃圾蜘蛛以外,其余几个IP的位置信息基本都是XXX机房、XXX IDC之类的。感慨啊,爱搞破坏的大多是IDC圈内人。

标签: PHP, 防火墙, CC, DDOS, 破解

已有 44 条评论

  1. 用nginx可以直接在vhost的规则里屏蔽攻击恶意爬虫或者恶意user-agent,防ddos这个就要看服务器的了。还有一种方法是使用htpasswd对wp-login进行保护。

  2. 看了这么多博主的文章了 在下请问 楼主是干嘛的?运维?程序员?

    1. FROYO

      都不是 :image_emoticon8:

  3. 你这个主题叫什么?挺好看的

  4. 垃圾流量跟垃圾评论一样讨厌,我也是前两天才找到合适的禁止垃圾评论的方法。

  5. 不错的。好久不来,你的博客变好看了。

  6. 自定義更符合自身需求

  7. 会代码的胜利

  8. 莫言

    什么软件都不如自己更了解如何保护自己的电脑,我把某杀毒软件的防火墙稍稍改了一下(事实上我没能力改太多)然后试着用了一个星期,我电脑再没受到攻击,特奶奶的,一堆无聊的人成天攻击别人电脑,真不知道给说什么好

  9. Yu

    > 其余几个IP的位置信息基本都是XXX机房、XXX IDC之类的。感慨啊,爱搞破坏的大多是IDC圈内人。

    不是这么解吧.
    个人观感,攻击者主要是两种,一种是利用免费空间攻击,很多机房都会开放一些零散的资源开放点免费服务给某个圈子,然后就被利用来做点坏事。
    其次是你看到的攻击者未必就是想这么做,实验室在学校机房有个1T内存的2U服务器,用来做实验用的,某日突然机房电话来说这货咋回事每秒700+ mbps的对外流量? 一检查,elasticsearch的bug导致被注入了 -- 这种开集群一不小心就是一注一排机器,他们也大多在各种IDC.

    基本没人没事在自家搞攻击,上行流量那么低,不小心被ISP注意到直接被干了,只有平时就是各种飚流量的IDC才能浑水摸鱼..吧

    1. FROYO

      说的对,我想的太简单了

  10. Qa

    我的网站也这样。。经常负载飙升到12.

    求脚本来看看。
    我直接是限制所有端口30秒链接超过50就ban

添加新评论