使用 lastb 和 iptables 阻止暴力攻击

使用 lastb 和 iptables 阻止暴力攻击

使用 linuxlastb命令,我发现我的服务器遭到了来自世界各地许多不同 IP 的暴力攻击!我开发了一个脚本来检测暴力攻击者并通过lastb阻止他们iptables。脚本如下:

#!/bin/bash

cd /root/
windowSize=100
tresh=10
lastb | head -n $windowSize | awk '{print $3}' | uniq -c > .ips
nlines=`wc .ips -l | awk '{print $1}'`
END=`expr $nlines - 1 `
for i in `seq 0 $END`;
do
        range=`expr $nlines - $i`
        count=`tail .ips -n $range | head -n 1 | awk '{print $1}'`
        if [ $count -gt $tresh ] ; then
                IP=`tail .ips -n $range | head -n 1 | awk '{print $2}'`
                if [ ! -z .blips ] ; then
                        touch .blips
                fi ;
                blocked=`cat .blips | grep $IP -c`
                if [ $blocked = '0' ] ; then
                        echo blocking $IP
                        iptables -A INPUT -s $IP -j DROP
                        echo $IP >> .blips
                fi ;
        fi;
done
rm .ips

如果我每小时通过 crond 运行该脚本,是否会引起任何问题?

答案1

是的,您没有采取任何措施来确保您连接到系统的 IP 地址被排除,因此您可能会将自己锁定在系统之外。

更好的解决方案是安装失败2ban它被广泛用于做你想做的事情。

答案2

建议的解决方案是缺乏的(或者说是不聪明的),因为它不保存 IPTABLES,所以对 IPTABLES 所做的更改将在下次启动时丢失。

你应该通过提交来保存被阻止的 IP:/sbin/service iptables save

更改完成 /sbin/service iptables 保存 rm .ips

另一方面,由于系统是自动化的,也许在看到 .blips 中的更改后才手动提交是明智的

答案3

DenyHosts 或 Fail2ban 的效果比大多数自制的自定义脚本更好。

http://en.wikipedia.org/wiki/DenyHosts

http://en.wikipedia.org/wiki/Fail2ban

相关内容