如何自动永久禁止IP地址?

如何自动永久禁止IP地址?

目前我一直在运行 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

fail2banbantine可以通过设置来配置永久禁止-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 网站。

相关内容