[英]Convert log string into regex for fail2ban
我在轉換與 VNC 服務器和客戶端交互相關的日志字符串時遇到問題,因此我可以使用 fail2ban 禁止某些 IP。
VNC 日志中有問題的字符串如下:
** (vino-server:28986): WARNING **: 01:02:54.300: VNC authentication failure from '888.88.9.999.dynamic.whatever.net'
那是我需要匹配的確切字符串(帶有所有括號,星號......),顯然告訴fail2ban以下命令主機在哪里。
到目前為止我嘗試過的:
執行檢查的命令: fail2ban-regex "log line" "failregex"
fail2ban-regex "00:19:51.297: VNC authentication failure from 'server-185-153-197-251.cloudedic.net'" "VNC authentication failure from '<HOST>'"
有用; 但日志行字符串與日志中的不同。
使用確切的日志行時,我經常失敗:
fail2ban-regex "** (vino-server:11241): WARNING **: 00:19:51.297: VNC authentication failure from 'server-185-153-197-251.cloudedic.net'" "authentication failure from '<HOST>'"
是否與不了解 failregex 表達式的放置方式有關?
是否與日志文件中的特殊字符有關?
我對字符串有什么錯誤嗎?
如果你能幫助我在正確的方向上 go 我會非常感激它,這樣我就可以更多地了解正則表達式並能夠保護系統。
這基本上與正則表達式無關,更多的是 fail2ban 的事情 - 為了避免與預期數據混淆,它的幾個默認日期模式被“錨定”到行首(尤其是最簡單的時間,比如你的格式),所以你必須指定你的自己的datepattern
。
這應該適合你:
msg="** (vino-server:11241): WARNING **: 00:19:51.297: VNC authentication failure from 'server-185-153-197-251.cloudedic.net'"
fail2ban-regex -d '\s%H:%M:%S\.%f:' "$msg" "authentication failure from '<HOST>'"
請注意, datepattern
將在開始失敗正則failregex
搜索之前刪除消息匹配日期模式的部分,因此為您的日志failregex
提前錨定的失敗正則表達式如下所示:
fail2ban-regex -d '\s%H:%M:%S\.%f:' "$msg" "^\*\* \(\S+\): WARNING \*\*: VNC authentication failure from '<HOST>'"
另請注意,在 fail2ban 配置文件中,您必須使用%%
指定%
-char ,所以它看起來像這樣:
datepattern = \s%%H:%%M:%%S\.%%f:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.