目前我一直在运行 Asterisk 的新 Debian 服务器上使用 iptables。
我每天都会检查 auth.log 中的 IP 地址并手动执行iptables -A INPUT -s IPA.DRE.SS.0/24 -j DROP
我最初只处理 IP 地址,但许多点击都来自相似的 IP 地址,因此 /24 效果更好,我已经使用过 /16 几次。
我已经有数百个 iptables 条目了,这已经失控了!我知道一定有一种更简单的方法可以做到这一点。
已经向我推荐了fail2ban,但似乎它只是在一定次数的尝试后才暂时阻止IP。
我看到的两种主要入侵尝试是使用虚假用户名和随机端口。
如果尝试使用我当前未使用的任何用户名登录,是否可以自动永久阻止该 IP 地址?与未使用的端口相同吗?
我也看到很多这样的:
Did not receive identification string from (malicious IP) port 48334
我也想禁止这些IP。
我不会自动阻止错误的登录尝试,就好像我偷偷输入了可能将我拒之门外的密码一样。但也许 3 次尝试后永久禁止某个 IP 就足够了。
我可以用 iptables 做到这一点吗?我还没有发现任何关于“永久禁令”的东西像这样起作用,似乎它只是在当下更有效。
我或多或少希望手动完成我一直在做的事情;在一次错误的用户名登录、一次错误的端口连接或 3 次错误的登录尝试(使用正确的用户名)后永久阻止 IP 范围。我希望这能防止 auth.log 收到垃圾邮件。
答案1
fail2ban
bantine
可以通过设置来配置永久禁止-1
在jail.conf
bantime = -1
这些将在重新启动时丢失,但这不一定是坏事,因为僵尸网络中被攻击的家用计算机的许多尝试都是短暂的......
如果你想要坚持,那么https://arno0x0x.wordpress.com/2015/12/30/fail2ban-permanent-persistent-bans/可能会给予一些指导。
本质上修改fail2ban
配置以创建所有被禁止 IP 的持久配置文件,并让 iptables 在重新启动时加载此列表...
因此,如果您检查默认值,jail.conf
您可能会发现默认操作是iptables-multiport
。这个对应配置文件/etc/fail2ban/ction.d/iptables-multiport.conf
我们可以添加以下条目:
[Definition]
# Option: actionstart
# Notes.: command executed once at the start of Fail2Ban.
# Values: CMD
#
actionstart = iptables -N fail2ban-<name>
iptables -A fail2ban-<name> -j RETURN
iptables -I <chain> -p <protocol> -m multiport --dports <port> -j fail2ban-<name>
cat /etc/fail2ban/persistent.bans | awk '/^fail2ban-<name>/ {print $2}' \
| while read IP; do iptables -I fail2ban-<name> 1 -s $IP -j <blocktype>; done
# Option: actionstop
# Notes.: command executed once at the end of Fail2Ban
# Values: CMD
#
actionstop = iptables -D <chain> -p <protocol> -m multiport --dports <port> -j fail2ban-<name>
iptables -F fail2ban-<name>
iptables -X fail2ban-<name>
# Option: actioncheck
# Notes.: command executed once before each actionban command
# Values: CMD
#
actioncheck = iptables -n -L <chain> | grep -q 'fail2ban-<name>[ \t]'
# Option: actionban
# Notes.: command executed when banning an IP. Take care that the
# command is executed with Fail2Ban user rights.
# Tags: See jail.conf(5) man page
# Values: CMD
#
actionban = iptables -I fail2ban-<name> 1 -s <ip> -j <blocktype>
echo "fail2ban-<name> <ip>" >> /etc/fail2ban/persistent.bans
现在,当fail2ban
标记一个条目时,它将添加一行/etc/fail2ban/persistent.bans
(通过actionban
配置)。fail2ban
启动时,它会调用actionstart
读取此文件并构建iptables
必要的规则。
当然,fail2ban
更改任何配置文件后都需要重新启动。
所有这一切都归功于“arno0x0x”和他的 WordPress 网站。