Debian
VNC 身份驗證失敗過多錯誤 - Fail2ban
在帶有 Xtightvnc 的 Debian 11 伺服器上,我收到很多“身份驗證失敗太多”的消息。我想使用fail2ban 來阻止未經授權的使用者嘗試通過VNC 登錄我的伺服器。但我找不到有效的規則。我發現的規則很舊,不適用於日誌。
14/10/21 20:37:43 Got connection from client 209.141.49.123 14/10/21 20:37:43 Using protocol version 3.3 14/10/21 20:37:43 Too many authentication failures - client rejected 14/10/21 20:37:43 Client 209.141.49.123 gone 14/10/21 20:37:43 Statistics: 14/10/21 20:37:43 framebuffer updates 0, rectangles 0, bytes 0
我正在使用 iptables 僅發布我的訪問 ip,但我不想要這個解決方案。
不幸的是,這個 VNC 日誌記錄的日誌格式並不適合 fail2ban - 失敗的消息不包含 IP 地址,並且帶有 IP 的條目和失敗的嘗試不包含一些標識符,以便能夠按此 ID 對它們進行分組。
基本上fail2ban可以處理這樣的多行日誌(一行包含IP,另一行包含失敗)有兩種處理方法:
- 監獄/過濾器
maxlines
>= 2 滾動日誌,消息視窗包含超過 1 條消息;- 新的多行處理使用
<F-MLFID>...</F-MLFID>
標籤在每一行中擷取與會話相關的 ID,以便考慮 2 條消息來自同一個客戶端。這兩種方法在這裡都不太合適。
很快,如果它們同時發生,您將無法區分合法嘗試和失敗嘗試,例如:
Got connection from client 192.0.2.111 Got connection from client 192.0.2.222 Too many authentication failures - client rejected Client successfully connected ~artificial log-entry (I don't know ~
在這裡,我們看到 2 個客戶端已連接,但一個失敗,另一個成功。哪個成功,哪個不成功?
在被拒絕的消息之後仍然有一個日誌條目(帶有 IP 和
gone
),所以如果您說客戶端在成功連接後不太可能直接離開,您可以說我們將考慮附近的消息client rejected
和gone
作為來自的消息同一個客戶端(這有點“危險”,特別是如果在某個時間點成功和稍後消失之間沒有進一步的消息,但是……)。然後可以使用以下配置:
# increasing the value of `maxlines` would make that the filter works more precise (can consider failures also in case of some flood in log between `client rejected` and `gone`), # but it would make it more unsafe at the same time (because it can cause false positives on `gone` messages from legitimate clients occurring after `client rejected` logged from evildoers): maxlines = 2 failregex = ^\s*Too many authentication failures - client rejected<SKIPLINES>\s*Client <ADDR> gone
(如果您的 fail2ban 版本早於 0.10 ,請替換
<ADDR>
為)<HOST>
但無論如何,最好在 VNC 站點上修復它 - 例如直接在
client rejected
消息中添加 IP 地址或引入一些與會話相關的 ID 明確辨識客戶端。