有時,我控制下的一台 VPS 會受到 POP3 登入嘗試的轟炸。它們都失敗了,但大量產生的進程和活動連接幾乎相當於 DoS 攻擊。
當我看到這種情況時,我通常會進去並手動封鎖 iptables 中的違規 IP 位址。我想要什麼是在伺服器上運行一個進程來監視系統日誌(或其他適當的位置),並且如果存在與特定模式匹配的重複日誌條目,則將它們傳遞給命令,然後該命令將提取相關部分(遠端主機 IP位址,在本例中)並執行指令(向iptables 新增DROP 規則)。例如,如果具有相同訊息部分的日誌條目在一分鐘內記錄了五次,則執行此操作。
VPS 運行 syslog-ng 以防有幫助。我在 iptables 中設定了速率限制,這有所幫助,但肯定不是完美的,因為它阻止我自己的連線嘗試,就像阻止攻擊者的連線嘗試一樣(獲得已建立連線的人會很幸運)。由於應該連接的用戶端具有來自動態區塊的 IP 位址,因此很難在不限制速率的情況下僅新增覆蓋規則。
由於 VPS 在 Virtuozzo 上運行,雖然我確實擁有來賓的 root 存取權限,但我無法載入自訂核心模組或自訂核心。所以它必須在使用者空間中完成。
什麼軟體可以幫助我?
答案1
答案2
我使用 OSSEC (http://www.ossec.net/)。它進行日誌分析,但也具有主動回應選項(動態新增和刪除 iptables 和hosts.deny 條目),只需最少的設定。它有幾個預設規則,但您可以添加自己的規則。我已經對其進行了測試,並在 CentOS、Ubuntu 和 Slackware 機器(實體機和 VPS)的生產中使用它。
安裝非常簡單(調整它,主要是將其配置為忽略某些規則,這需要更多時間)。如果您使用它並啟用主動回應功能,預設值通常就足夠了。
我建議保留預設的封鎖時間(幾分鐘),使用您的 IP 新增白名單(或您信任的其他伺服器的 IP,以防萬一您的 IP 不是靜態的並且伺服器封鎖您)。
此外,如果您需要更複雜的阻止管理,您可以將 OSSEC 設定為使用 bash(例如)腳本在執行實際的主動封鎖之前檢查和處理 IP 位址。