Fail2ban

Debian Buster 上的 Fail2ban - 正確的配置方式?

  • September 15, 2021

Fail2ban 可以在很多地方進行配置。

$ fail2ban-client -i 
Fail2Ban v0.10.2 reads log file that contains password failure report
and bans the corresponding IP addresses using firewall rules.

在 Debian Buster 上,我可以在幾個配置文件中編輯我的設置:

/etc/fail2ban/jail.d/defaults-debian.conf
/etc/fail2ban/fail2ban.conf
/etc/fail2ban/jail.conf
/etc/fail2ban/action.d/

而且 - 最後但並非最不重要 - 一些教程推薦:

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

fail2ban的文件說:

修改應在 .local 而不是 .conf 中進行。這避免了升級時的合併問題。這些文件有據可查,那裡應該有詳細的資訊。

這是否意味著,我要編輯的每個 .conf 文件都應該作為 .local 文件存在?

我很困惑!有人可以對此有所了解嗎?

您只需要編輯一個文件。

為避免在系統升級過程中出現問題,您應該始終只複製jail.confjail.local修改後者。所有其他的 fail2ban 配置文件都是一樣的。

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

然後編輯此文件並向下滾動到您要使用的過濾器。

在這些過濾器中,添加enabled = true. 我建議不要在開始時啟用太多過濾器。一兩個就夠了。如果您通過 SSH 連接,請小心使用 SSH 過濾器。你可能會把自己鎖在外面。

過濾器

查看filter.d目錄以查看所有可用的過濾器。選擇一兩個合適的。請務必了解他們的正則表達式匹配的內容以及您需要的日誌文件。

Fail2ban 適用於日誌文件。因此過濾器必須匹配適當的日誌文件。你可以用

fail2ban-regex <logfile> <filter>

例如

fail2ban-regex /var/log/nginx/default_access.log /etc/fail2ban/filter.d/nginx-botsearch.conf

例如,此過濾器404會在您的 NGINX 中查找錯誤access.log並在條件匹配時阻止它們。有關條件,請參見下文。

完成編輯後重啟fail2ban:

systemctl restart fail2ban

文件中的其他設置jail.local

所有設置都可以全域化,也可以特定於過濾器。

bantime  = 7200
findtime  = 10m
maxretry = 10

意味著 10 分鐘內出現 10 個錯誤將導致 2 小時禁令。

如果你不想使用 iptables 來禁止,你可以改變你的banaction. 預設禁令使用 iptables,它應該適用於我知道的所有系統,但您可能在熟悉的防火牆界面中看不到禁令。

banaction = ufw

請參閱 中的操作action.d。使用此設置,fail2ban 將使用 ufw 阻止 IP。然後你可以通過 看到禁令ufw status

特別是對於 SSH,請務必將您的本地 IP 範圍排除在禁止之外,這樣您就無法禁止自己:

ignoreip = 127.0.0.1/8 ::1 192.168.178.0/24

我建議您不要創建或修改新的過濾器或操作。使用隨附的並感到高興。建構自己的正則表達式模式並不容易,並且日誌文件格式會不時更改 - 這會破壞您的過濾器。您的系統將不會受到保護。您也不應該編輯Apaches預設日誌格式。

引用自:https://serverfault.com/questions/997099