필자의 통제하에 서버에 데비안 패키지로 fail2ban을 설치했습니다. 이전에 몇 가지 failregexe가 있기 때문에 로컬 필터 정의 파일에 넣어서 고려할 것입니다. 따라서 예를 들어 /etc/fail2ban/filter.d/sshd.conf 및 /etc/fail2ban/filter.d/sshd.local로 끝납니다. 이것은 설정하는 것이 권장되는 방식 이며 원래대로 작동하는 것처럼 보입니다.
그러나, .local의 파일에, 나는 실제로있어 교체 의 .conf 파일에서 failregexes의 전체 목록을. 설명서 에는 다른 방법이 있음을 나타내지 않고 작동하게하기 위해 배포 제공 .conf 파일을 .local 파일에 복사하고 추가했습니다.
배포 유지 로그 항목 필터 정규식에 대한 변경 사항을 유지하면서 업스트림 및 데비안 관리자의 작업을 통해 목록을 간단히 수정할 수 있다면 정말 좋을 것 입니다.
내가 생각할 수있는 유일한 실제 해결 방법은 실제로 배포 제공 구성을 사용하는 하나와 내 자신을 사용하는 두 개의 감옥을 만드는 것입니다. 이것은 그들이 독립적 인 감옥으로 취급된다는 (상당히 중요한) 단점이있는 것으로 보입니다 (이러한 설정으로 기대할 수 있습니다).
확실히 나는 최소한의 유지 보수 번거로 이미 존재하는 컬렉션에 내 자신의 몇 개의 failregexe를 추가하려는 유일한 사람이 될 수는 없습니다.
해당 전역 또는 배포 제공 파일을 변경하지 않고 사이트 로컬 또는 호스트 로컬 파일을 통해 fail2ban 필터 정의 내에서 failregex 및 ignoreregex 목록 을 수정할 수 있습니까? 그렇다면 어떻게해야합니까?
답변
/etc/fail2ban/filter.d/sshd.conf
파일의 일부를 살펴 보겠습니다 .
[INCLUDES]
# Read common prefixes. If any customizations available -- read them from
# common.local
before = common.conf
따라서 여기에 추가 할 수 있다고 생각할 수도 있습니다. after = sshd.local
이러한 파일을 읽도록하십시오. 그 안의 모든 설정은이 파일의 설정보다 우선합니다.
그리고 작동합니다. 단순히 항목을 수정 failregex
하거나 다른 지침 을 수정할 수는 없습니다 . 교체 만 가능합니다.
당신의 느낌은 정확합니다. 이것은 fail2ban 구성 파일 형식의 단점입니다. 개발자에게 불평합니다.
답변
나는 동일한 요구 사항을 가지고 문제로 게시했습니다. 저자는 https://github.com/fail2ban/fail2ban/issues/867 에서 작업하고있는 것으로 보입니다 .
병합되면 다음과 같이 작동합니다 (이 예제는 개발자 인 Serg Brester가 제공함).
# filter test.conf:
[Definition]
failregex = failure test 1 (filter.d/test.conf) <HOST>
# filter test.local:
[Definition]
failregex = %(known/failregex)s
failure test 2 (filter.d/test.local) <HOST>
그리고 같은 방법으로 감옥에 정규식을 추가 할 수 있습니다 …
# jail.local
[test3known-interp]
filter=test
enabled = true
failregex = %(known/failregex)s
failure test 3 (jail.local) <HOST>
결과 :
$ bin/fail2ban-client -d -c config | grep addfail
['set', 'test3known-interp', 'addfailregex', 'failure test 1 (filter.d/test.conf)]
['set', 'test3known-interp', 'addfailregex', 'failure test 2 (filter.d/test.local)]
['set', 'test3known-interp', 'addfailregex', 'failure test 3 (jail.local) <HOST>']