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

Int*_*ked 4 debian iptables fail2ban ip-address

目前我一直在运行 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
Run Code Online (Sandbox Code Playgroud)

我也想禁止这些IP。

我不会自动阻止不正确的登录尝试,就像我粗指可以锁定我的密码一样。但也许在 3 次尝试后永久禁止 IP 就足够了。

我可以用 iptables 做到这一点吗?我还没有发现任何关于“永久禁令”的东西像这样工作,似乎它现在更有效。

我或多或少喜欢手动完成我一直在做的事情;在一次错误的用户名登录、一次错误的端口连接或 3 次不正确的登录尝试(使用正确的用户名)后永久阻止 IP 范围。我希望这将防止 auth.log 收到垃圾邮件。

Ste*_*ris 10

fail2ban可以通过设置来配置永久禁令bantine,以-1

jail.conf

bantime = -1 
Run Code Online (Sandbox Code Playgroud)

这些将在重新启动时丢失,但这不一定是件坏事,因为在僵尸网络中,从被盗的家用计算机进行的许多尝试都是短暂的......

如果您想要持久性,那么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
Run Code Online (Sandbox Code Playgroud)

现在,当fail2ban标记一个条目时,它会添加一行/etc/fail2ban/persistent.bans (通过actionban配置)。当fail2ban启动时,它调用actionstart读取这个文件并建立iptables必要的规则。

当然,fail2ban更改任何配置文件后都需要重新启动。

这个食谱的所有功劳都归功于“arno0x0x”和他的 wordpress 网站。