是否可以使用fail2ban正则表达式在多行上捕获身份验证失败?
以下是示例:
Sep 08 11:54:59.207814 afpd[16190] {dsi_tcp.c:241} (I:DSI): AFP/TCP session from 10.0.71.149:53863
Sep 08 11:54:59.209504 afpd[16190] {uams_dhx2_pam.c:329} (I:UAMS): DHX2 login: thierry
Sep 08 11:54:59.272092 afpd[16190] {uams_dhx2_pam.c:214} (I:UAMS): PAM DHX2: PAM Success
Sep 08 11:55:01.522258 afpd[16190] {uams_dhx2_pam.c:666} (I:UAMS): DHX2: PAM_Error: Authentication failure
谢谢
答案 0 :(得分:4)
是的,fail2ban使用python regex和多行选项。在您的情况下,请尝试:
"afpd\[[0-9]+\] {dsi_tcp.c:241} \(I:DSI\): AFP/TCP session from <HOST>:[0-9]+\n.*afpd\[[0-9]+\] {uams_dhx2_pam.c:[0-9]+}.*\n.*afpd\[[0-9]+\] {uams_dhx2_pam.c:[0-9]+}.*\n.*afpd\[[0-9]+\] {uams_dhx2_pam.c:[0-9]+}.*PAM_Error: Authentication failure"
如您所见,您只需将\n
放在需要的位置即可。在您的情况下,不要忘记将maxlines
选项设置为4,以便fail2ban使用4行匹配正则表达式。您的过滤器文件应如下所示:
[Init]
maxlines = 4
[Definition]
failregex = "afpd\[[0-9]+\] {dsi_tcp.c:241} \(I:DSI\): AFP/TCP session from <HOST>:[0-9]+\n.*afpd\[[0-9]+\] {uams_dhx2_pam.c:[0-9]+}.*\n.*afpd\[[0-9]+\] {uams_dhx2_pam.c:[0-9]+}.*\n.*afpd\[[0-9]+\] {uams_dhx2_pam.c:[0-9]+}.*PAM_Error: Authentication failure"
ignoreregex =
使用fail2ban-regex测试你的正则表达式。
答案 1 :(得分:1)
我只是在寻找解决同一问题的方法-但我认为wpoely86给出的答案可能会导致阻止无害的IP(如果有多个IP或多或少同时连接)。
Route::POST('subscription', 'MyController@store')->name('susbcribe');
上面,有问题的连接来自10.0.71.149。但是,正则表达式将阻止10.10.10.10。换句话说,正则表达式需要区分afpd [99999]和afpd [16190](它们标识afpd进程的PID)。