모기 무차별 대입 Fail2ban이 정규 표현식에 실패했습니다.

모기 무차별 대입 Fail2ban이 정규 표현식에 실패했습니다.

사용자 이름/비밀번호 조합을 추측하여 사용자 이름/비밀번호로 보호된 모기 서비스에 가입하려는 무차별 대입 IP 주소를 차단하기 위해 Fail2ban 필터를 작성하려고 합니다. 잘못된 세부 정보로 구독을 시도하면 mosquitto는 아래와 같이 두 줄의 로그를 작성합니다.

1544984465: New connection from 123.123.123.123 on port 1883.
1544984465: Socket error on client <unknown>, disconnecting.

나는 다음을 사용하여 이 두 줄의 패턴과 일치하는 정규식을 작성했습니다.https://regex101.com/"아나콘다 맛"으로 설정하세요. 정규식은 다음과 같습니다.

\s(?P<date>\d+)\: New connection from (?P<host>[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}) .+\n(?P=date): Socket error on client \<unknown\>, disconnecting.

불행하게도, fall2ban은 다음 정규식을 사용하여 로그에서 일치하는 항목을 찾을 수 없습니다:

# fail2ban-regex '/var/log/testlog.log' '\s(?P<date>\d+)\: New connection from (?P<host>[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}) .+\n(?P=date): Socket error on client \<unknown\>, disconnecting.'

Running tests
=============

Use   failregex line : \s(?P<date>\d+)\: New connection from (?P<host>[0-...
Use         log file : /var/log/testlog.log
Use         encoding : UTF-8


Results
=======

Failregex: 0 total

Ignoreregex: 0 total

Date template hits:
|- [# of hits] date format
|  [13] Epoch
`-

Lines: 13 lines, 0 ignored, 0 matched, 13 missed
[processed in 0.00 sec]

|- Missed line(s):
|  1544984465: New connection from 123.123.123.123 on port 1883.
|  1544984465: Socket error on client <unknown>, disconnecting.
|  1544984466: New connection from 123.123.123.123 on port 1883.
|  1544984466: Socket error on client <unknown>, disconnecting.
|  1544984468: New connection from 123.123.123.123 on port 1883.
|  1544984468: Socket error on client <unknown>, disconnecting.
|  1544984469: New connection from 123.123.123.123 on port 1883.
|  1544984469: Socket error on client <unknown>, disconnecting.
|  1544984470: New connection from 123.123.123.123 on port 1883.
|  1544984470: Socket error on client <unknown>, disconnecting.
|  1544984471: New connection from 123.123.123.123 on port 1883.
|  1544984471: Socket error on client <unknown>, disconnecting.
|  1544984473: New connection from 123.123.123.123 on port 1883.
`-

Fail2ban 버전은 0.9.6-1.el6.1입니다. Centos 6 서버에서 실행됩니다.

답변1

글쎄, 내가 해냈어. 질문은 다음과 같습니다.

정규식(failregex,ignoreregex)은 날짜/시간이 로그 줄에서 제거되었다고 가정합니다(fail2ban이 ATM에서 내부적으로 작동하는 방식입니다). 원천:https://fail2ban.readthedocs.io/en/latest/filters.html

필터링하려면 maxlines = 2를 추가해야 합니다.

최종/작업 필터는 다음과 같습니다:

[Init]
maxlines = 2

[Definition]
failregex = .+ New connection from <HOST> on port \d+\.\n.+Socket error on client <unknown>
ignoreregex = 

관련 정보