即使其他方面都已經鎖緊,機器人也從不會停止對 22 埠的密碼嘗試——這是持續的背景噪音和負載。fail2ban 會監控您的記錄,自動封禁登入失敗次數過多的任何 IP,讓攻擊者嘗試幾次後就被擋在外面,而不是無休止地猜下去。安裝很簡單,記錄垃圾資訊卻能大幅減少。
1. 安裝 fail2ban
sudo apt update && sudo apt install -y fail2ban
2. 建立本機設定
不要直接編輯系統自備的 jail.conf——而是在 jail.local 中覆蓋它:
sudo tee /etc/fail2ban/jail.local > /dev/null <<'EOF'
[DEFAULT]
# don't ban yourself — add your home/office IP
ignoreip = 127.0.0.1/8 ::1
bantime = 1h
findtime = 10m
maxretry = 5
[sshd]
enabled = true
EOF
這會在 10 分鐘內出現 5 次登入失敗後,將該 IP 封禁一小時。把您自己的 IP 加到 ignoreip 裡,這樣打錯一次密碼也不會把您鎖在外面。
3. 啟動並設定開機自啟
sudo systemctl enable --now fail2ban
4. 檢查 SSH jail
sudo fail2ban-client status sshd
您會看到目前有多少個 IP 被封禁——短短幾分鐘內的數字往往會讓人意外。
管理封禁
sudo fail2ban-client set sshd unbanip 1.2.3.4 # lift a ban
sudo fail2ban-client status # list all jails
sudo systemctl reload fail2ban # apply config changes
誠實的提醒
- 把您自己的 IP 加到
ignoreip,這樣反覆打錯密碼不會封禁您自己。如果真的被封了,等 bantime 結束,或者使用服務供應商的控制台——EQVPS 為每台 VPS 都提供了這個。 - fail2ban 是對 SSH 金鑰的補充,而不是替代。 金鑰讓猜測永遠不可能成功;fail2ban 則消除噪音,並保護其他服務。
- 隨選調整: 更長的
bantime能嚇退執著的攻擊者;但太激進則有可能誤封正常但不穩定的連線。
下一步
fail2ban 只是加固伺服器的一層防護。把它和 SSH 金鑰認證、UFW 防火牆結合起來,並在對外暴露任何東西之前,走一遍完整的新 VPS 安全清單。
評論
目前還沒有評論。歡迎成為第一位。