Fail2ban에 대한 자체 필터 생성 실패

Fail2ban에 대한 자체 필터 생성 실패

저는 kubernetes에서 Fail2ban을 가지고 놀고 있습니다. 이를 위해 가짜 로그 메시지를 생성하는 포드를 만들었습니다. 2021-08-04 18:33:13 인증 실패 15.15.15.15 fall2ban이 작동하는지 테스트하기 위해 사용자 지정 필터를 만들었습니다. 먼저 이러한 로그 메시지 10줄이 포함된 파일을 사용하여 fall2ban-regex 유틸리티를 시도했고 다음과 같은 출력을 얻었습니다.

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

Use   failregex filter file : test, basedir: /etc/fail2ban
Use         log file : /logs.txt
Use         encoding : UTF-8


Results
=======

Failregex: 10 total
|-  #) [# of hits] regular expression
|   1) [10] \sAuthentication failed\s<HOST>
`-

Ignoreregex: 0 total

Date template hits:
|- [# of hits] date format
|  [10] ExYear(?P<_sep>[-/.])Month(?P=_sep)Day(?:T|  ?)24hour:Minute:Second(?:[.,]Microseconds)?(?:\s*Zone offset)?
`-

Lines: 10 lines, 0 ignored, 10 matched, 0 missed
[processed in 0.12 sec]

하지만 계속해서 로그가 포함된 파일에 대해 동일한 필터를 시도하면 다음 오류가 발생합니다.

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

Use   failregex filter file : test, basedir: /etc/fail2ban
Use         log file : /logs/kubernetes.logs
Use         encoding : UTF-8

Traceback (most recent call last):
 File "/usr/bin/fail2ban-regex", line 34, in <module>
   exec_command_line()
 File "/usr/lib/python3.8/site-packages/fail2ban/client/fail2banregex.py", line 836, in exec_command_line
   if not fail2banRegex.start(args):
 File "/usr/lib/python3.8/site-packages/fail2ban/client/fail2banregex.py", line 776, in start
   self.process(test_lines)
 File "/usr/lib/python3.8/site-packages/fail2ban/client/fail2banregex.py", line 584, in process
   line_datetimestripped, ret, is_ignored = self.testRegex(line)
 File "/usr/lib/python3.8/site-packages/fail2ban/client/fail2banregex.py", line 456, in testRegex
   found = self._filter.processLine(line, date)
 File "/usr/lib/python3.8/site-packages/fail2ban/server/filter.py", line 613, in processLine
   timeMatch = self.dateDetector.matchTime(line)
 File "/usr/lib/python3.8/site-packages/fail2ban/server/datedetector.py", line 368, in matchTime
   (line[distance] == self.__lastPos[2] and not self.__lastPos[2].isalnum())
IndexError: string index out of range

그리고 Fail2ban에 대한 필터를 활성화하면 차단된 IP가 없으므로 필터가 작동하지 않는 것 같지만 실수를 찾을 수 없습니다.

filter.conf:

[Definition]

failregex = \sAuthentication failed\s<HOST>

답변1

이것은 알려진 버그입니다(이미 수정되었습니다).https://github.com/fail2ban/fail2ban/issues/3020

그러나 실제 이유는 정확하지 않은 날짜 패턴과 불완전한 타임스탬프(기본 날짜 패턴 세트와 일치) 또는 타임스탬프가 전혀 없는 일부 행 때문입니다. 해결책은 가능한 한 업데이트 또는 (더 나은) 정확한 날짜 패턴이 될 것이며 최상의 경우 시작(또는 끝)에 고정되는 것입니다.

관련 정보