最近发现服务器的流量异常,中间也触发了几次报警,于是查看服务器的访问记录才发现,服务器引来了大量的暴库脚本。于是添加了一大批黑IP到防火墙,但是每次都这样手动添加太费事,而且多个服务器还要重复劳动,就想着有没有可能自己做个API接口来自动获取黑IP列表自动维护防火墙配置。写了一天终于弄完了,放出来供需要的人一起使用吧。我服务器挨打涨的小小经验值,就一起来分享吧。
本工具仅对于使用了UFW防火墙的设备有用,使用原生iptables的用户自己提取IP拦截吧。
黑IP一般都是暴库操作,批量请求一些不存的文件试图暴库,或者请求一些sql注入。他能暴库我服务器,大概率也会去你那,所以具有一定的公用属性。
如果只是想获取黑IP列表可以直接打开网址 http://io.paea.cn/ufw/ 来自己配置列表。列表中的黑IP地址都是验证过的发起过攻击的黑IP,虽然其中有一小部分是动态用户IP不过量很少也就不担心误封了。
填写好自己服务器和自己的IP地址之后,添加上自己要开放的端口,全选或者自己挑选要拦截的IP地址。选择好之后,右侧的列表中就会自动生成配置文件文本,自己复制内容替换到自己服务器的user.rules文件即可,记得最后要使用命令ufw reload来加载一次规则,否则不会生效。
TIPS:请一定一定一定记得加上自己服务器的IP地址作为优先放行规则,因为黑IP库中也有一些机房的IP段,有可能你的服务器地址也在其中。之所以加入机房IP段,也是因为该机房多数机器存在攻击行为,干脆直接全部拉黑,反正我们的网站是给人看的又不是给服务器看的,别人服务器能不能访问没啥关系。
人之初,都很懒。能自动一般都不愿意手动。所以自动脚本也在安排计划之内。
使用自动脚本你需要会Linux的crontab命令,自己添加一下规则来自动请求最新的配置文件。
0 3 * * 1 cp /etc/ufw/user.rules /etc/ufw/user.rules_back$(date +\%s);/usr/bin/curl -o /etc/ufw/user.rules "https://io.paea.cn/ufw/index.php?sip=192.168.1.1&ports=22|80|443";ufw reload
如上,代码会自动请求我的接口并下载最新的规则替换已有的user.reles文件,最后记得一定要加上ufw reload。
TIPS:如果你确定要使用,请注意不要频繁请求,一般更新周期都很长(一个月能有个2次不错了),所以你只要1周请求一次即可。测试的时候多几次我不管,如果长期过密集请求只能拉黑了。
1. 主接口 https://io.paea.cn/ufw/index.php
2. 参数【sip】(必填) 本机(服务器)IP,优先放行不受黑名单影响,多个IP使用“|”间隔,支持IP段。
3. 参数【ports】 开放端口,如不提交默认为“22|80|443”,多个端口使用“|”间隔,支持端口段。
4. 参数【banip】 手动黑名单,多个IP使用“|”间隔,支持IP段。
建议你第一次请求的时候不要加载,请求完之后自己看一下自动生成的规则是否合适,合适再加入自动加载。日后每次更新都只会替换拦截IP的部分。
有人提议说开放个提交接口,但是我无法确定用户提交的是否是经过验证的黑IP,万一是恶意提交呢。所以目前不考虑,只记录我服务器记录的攻击黑IP地址。如果你有更好的提交方案,可以联系我一起探讨一下。