開始運行伺服器後,將面對無數的外部攻擊。SSH暴力破解攻擊、針對網頁應用程式的無差別登錄嘗試、端口掃描等都是日常威脅。如果這些威脅被忽視,最終可能導致系統入侵。Fail2Ban是一種輕量且強大的基於Linux的入侵防禦解決方案,可以解決這些問題。
Fail2Ban會自動檢測可疑的IP並將其封鎖。這樣一來,管理員無需費太多精力即可保護伺服器。
Fail2Ban安裝方法
Fail2Ban在大多數Linux發行版中都以包的形式提供,因此安裝非常簡單。
Ubuntu/Debian系列
sudo apt update
sudo apt install fail2ban
安裝完成後,我們需要啟動服務並設置為開機自啟。
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
Fail2Ban基本設置方法
Fail2Ban使用/etc/fail2ban/jail.conf
文件作為基本設置文件,但建議創建/etc/fail2ban/jail.local
文件進行自定義,而不是直接修改此文件。
創建jail.local文件:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
主要設置項目: - bantime: 封鎖期間(秒) - findtime: 被視為攻擊嘗試的時間範圍(秒) - maxretry: 允許的最大失敗嘗試次數
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
實際應用案例示例
1. 封鎖SSH暴力破解
如上所述設置[sshd]
jail後,如果登錄失敗超過5次,該IP將被封鎖1小時。
2. 封鎖Apache登錄攻擊
[apache-auth]
enabled = true
filter = apache-auth
logpath = /var/log/apache2/error.log
maxretry = 3
如果針對網頁伺服器的驗證失敗超過3次,將會被封鎖。
Fail2Ban監控方法
監控Fail2Ban是否正常運行有多種方法。
1. 通過fail2ban-client檢查狀態
可以查看特定 jail(例如:sshd)的狀態。
sudo fail2ban-client status sshd
輸出示例:
Status for the jail: sshd
|- Filter
| |- Currently failed: 2
| |- Total failed: 15
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 1
|- Total banned: 3
`- Banned IP list: 192.168.1.100
2. 監控日誌文件
Fail2Ban的操作歷史記錄在/var/log/fail2ban.log
文件中。
tail -f /var/log/fail2ban.log
藉此可以實時監控封鎖和解封事件。
Fail2Ban工作原理
-
日誌監控: Fail2Ban持續監控設定的日誌文件。(例如:
/var/log/auth.log
,/var/log/apache2/error.log
) -
應用過濾器: 檢測特定模式(登錄失敗、身份驗證錯誤等)。
-
執行措施: 超過設定的
maxretry
後,將通過iptables封鎖該IP或執行例如firewall-cmd、nftables等防火牆命令。 -
自動解除:
bantime
過後,自動解除封鎖。
Fail2Ban具有模組化結構,可以針對不同的服務(jail)進行獨立的監控和封鎖設置,不僅僅是保護SSH,而是加強對各種服務的安全。
SSH攻擊的永久封鎖設置方法
對待SSH攻擊者必須果斷。Fail2Ban中,將bantime
設為-1
即可永久封鎖。
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
bantime = -1
findtime = 600
maxretry = 5
這樣設置後,SSH驗證失敗超過5次的IP將被永久封鎖,無法訪問伺服器。
[高級技巧] 理解Fail2Ban的基本封鎖操作
Fail2Ban在未單獨定義action
的情況下也會自動運作。其原因是基本設置包含使用iptables的封鎖命令。
- 如果未單獨指定
action
,則將應用[DEFAULT]
部分中的action = %(action_)s
設置。 %(action_)s
會內部使用iptables
命令封鎖惡意IP。- 因此,即使不單獨編寫
action
,也會通過iptables進行IP封鎖。
基本封鎖命令示例(參見action_.conf)
iptables -I INPUT -s <ip> -j REJECT
換句話說,Fail2Ban將自動控制iptables來封鎖攻擊IP。
注意:
- 如果想使用其他防火牆工具如UFW、firewalld,則必須明確設置action
。
- 此外,封鎖規則可能在伺服器重啟時消失,因此最好設置Fail2Ban服務於開機時自動啟動。
此外,還可以自定義多種過濾器,或進行電子郵件警報設置等高級設置。
自從伺服器暴露在互聯網世界的一刻起,安全性就不是選擇,而是必須。
瞬間的放鬆可能會引發致命後果。
Fail2Ban將成為抵禦這些威脅的堅實盾牌。
記住,現在就有人在盯著你的伺服器。
目前沒有評論。