Debian

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

  • December 30, 2018

目前我一直在執行 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 收到垃圾郵件。

fail2ban可以通過設置為永久禁止bantine配置-1

jail.conf

bantime = -1 

這些將在重新啟動時失去,但這不一定是一件壞事,因為在殭屍網路中的 pwned 家用機器上會有如此多的嘗試是短暫的……

如果您想要持久性,那麼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網站。

引用自:https://unix.stackexchange.com/questions/491533