“问题是:如何列出被阻止的IP地址?”
创建一个BANNED链:
iptables -N BANNED
iptables -F BANNED
创建一个日志链:
iptables -N BANNEDLOG
iptables -F BANNEDLOG
iptables -A BANNEDLOG -j LOG --log-prefix "BANNED:" --log-level 6
iptables -A BANNEDLOG -j DROP
在其他大多数规则之前,在INPUT链中添加跳转到禁止链
...
iptables -A INPUT -j BANNED
...
现在将ipaddresses添加到被禁止的链中:
flock -w 5 /var/lock/iptables -c 'iptables -A BANNED -s 140.130.20.202/32 -i eth0 -m comment --comment "2012-03-19 23:49:33 accesslog" -j BANNEDLOG'
etc...
您还可以像使用带注释选项的数据库一样使用它,因此您可以知道何时,为什么等等。当iptables被许多进程频繁更新时,flock很重要-看来iptables并未内置任何锁定。
要查看禁止链中的禁止地址和规则:
iptables -S BANNED
要查看刚刚排序的唯一ipaddress,请执行以下操作:
iptables -S BANNED | egrep -o '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | sort -u
我的服务器上运行着许多守护进程,用于检查syslog文件和Weblog,因此,如果任何人尝试进行任何令人讨厌的操作,则其地址将被自动禁止几天,具体取决于类型,严重性和以前的攻击次数。该信息已登录到mysql数据库,并定期过期。该地址还通过mysql复制分发到群集中的所有其他计算机,因此它们也受到保护并保持同步。我的软件还查询网络的所有者,并将投诉邮寄到ISP。
经过10年的工作,我希望将其提供给所有人,以供尽快使用。我目前有大约150万个ip地址历史记录,并报告了数十万封邮件和ssh攻击,有助于清理网络。如果更多的人会使用它,那么我希望它将产生更大的影响。
iptables -L INPUT -v -n
显示所有被阻止的ip