Fail2ban 필터 정규식

Fail2ban 필터 정규식

저는 centos8 +fail2ban + haproxy를 사용합니다

다음 설정을 사용하는 특수 감옥 "my-haproxy404"가 있습니다.

[my-haproxy404]
enabled  = true
port     = http,https
filter   = my-haproxy404
logpath  = /var/log/my-haproxy.log
backend  = poller
journalmatch =
maxretry = 3
bantime  = 86400
findtime  = 3600

및 필터 :

[Definition]
failregex = .*:<HOST>(?::\d+)?\s+.*\d* 404

내 예제 로그 줄은 다음과 같습니다.

Sep 19 14:38:21 localhost haproxy[53925]: 77.77.77.77:55763 [19/Sep/2021:14:38:21.483] backend1 line1/test1 0/0/12/88/100 404 687 - - ---- 1/1/0/0/0 0/0 "GET /test/string HTTP/1.1"

그래서...이것이 작동할 수도 있지만, failure2ban.log에 다음과 같은 IP가 표시됩니다.

INFO    [my-haproxy404] Found 0.0.217.211 - 2021-09-19 14:38:21

이것은 실제 IP가 아닙니다(실제 IP는: 77.77.77.77). Fail2ban 이 IP(0.0.217.211)를 차단합니다. ....하지만(77.77.77.77)은 여전히 ​​작동합니다.

나도 정규식에 문제가 있는 걸 알아

이 404 문자열에 대한 올바른 정규식 규칙을 알려주세요.

Sep 19 14:38:21 localhost haproxy[53925]: 77.77.77.77:55763 [19/Sep/2021:14:38:21.483] backend1 line1/test1 0/0/12/88/100 404

문안 인사

답변1

failregex = ^\s*\S+ haproxy\[\d+\]: <ADDR>:\d+(?: \[[^\]]+\])? \S+ \S+ \d+(?:/\d+)+ 404\b

"잘못된" 코드를 일치시키기 위해 다음 으로 404\b대체 할 수도 있습니다 (인증 핸드셰이크를 적절하게 고려하려면 몇 가지 전제 조건이 필요하며 이를 위해 사용할 수 있는 필터가 있습니다 ).(?!401)[45]\d\d\b4xx5xx401haproxy-http-auth

관련 정보