
最近幾位朋友問我,SvrGuard 不就是 fail2ban 的 GUI 版本嗎?
老實說還真不是,兩者都是讀 log 來找攻擊,但開發 SvrGuard 的最大原因還是我懶,手上有多台聯合國主機,Ubuntu / Debian / NAS / Mac,如果我要用 fail2ban 還真的有些麻煩,索性就自己來。
fail2ban 是開源的老牌工具:讀日誌、用正規式比對失敗紀錄,同一個位址在時間內失敗到門檻(預設 10 分鐘 5 次)就呼叫防火牆封掉。它內建約一百個服務的比對規則,封鎖可以接 iptables、nftables、pf、Cloudflare,Linux、BSD、macOS 都能跑。只想擋 SSH 暴力破解,它很夠用。
兩者在分析 log 上最大的差異是,SvrGuard 在網站日誌上會分析脈絡,訂出不同規則去判斷有威脅的 IP,而 fail2ban 是直接比對日誌是否失敗或有問題。
但 fail2ban 的日誌涵蓋面較廣,網站、SSH、xrdp、郵件……等,而 SvrGuard 涵蓋 SSH、網站(Apache、nginx 的存取與錯誤日誌)、遠端桌面(xrdp)和 Mac 的螢幕共享,種類少一些,不過會針對特定的網站架構來分析,如 WordPress 等。
回到那台被駭的機器
上次被駭那台 Ubuntu,密碼被試了三千多次,最後被猜中。這三千多次記在 lastb 讀的登入失敗紀錄裡,但 auth.log 裡找不到任何 sshd 的紀錄。
fail2ban 靠日誌比對,而那台機器上本該記下 sshd 的地方是空的,它就沒有東西可以比對。
SvrGuard 會拿登入紀錄和 SSH 日誌互相對照:如果登入紀錄顯示有人登入過,而 SSH 日誌沒有發現紀錄,就會發通知。
密碼被猜中之後
擋暴力破解處理的是門口。密碼一旦被猜中,問題就變成屋裡有沒有人:有沒有被掛 ld.so.preload、有沒有從暫存目錄跑起來的程式、cron 和 systemd 有沒有被加料、sudoers 有沒有多一行免密碼的 root。
AI 當道下,很難單用日誌來處理,如果可以主動定時去檢查異常執行程式、異常檔案等,那就有了主動檢查的功能,機器的安全也多了一層保障,起碼知道什麼時候該打掉重練。所以我把上次 Ubuntu 的檢查清單也做進 SvrGuard,定期檢查,強化防禦能力。
兩者比較

選哪一個
青菜蘿蔔喜好各不同,fail2ban 牌子老,可以支援的日誌也多,而 SvrGuard 多了入侵檢查及多台管理,就看需求囉~
本系列文章:主機防禦系統-SvrGuard。想了解更多 SvrGuard,歡迎造訪 SvrGuard 官方網站,有問題或想法歡迎到 SvrGuard 討論區。