簡體   English   中英

將日志字符串轉換為fail2ban的正則表達式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM