![Fail2ban은 금지하지 않지만 로그와 일치합니다.](https://rvso.com/image/776300/Fail2ban%EC%9D%80%20%EA%B8%88%EC%A7%80%ED%95%98%EC%A7%80%20%EC%95%8A%EC%A7%80%EB%A7%8C%20%EB%A1%9C%EA%B7%B8%EC%99%80%20%EC%9D%BC%EC%B9%98%ED%95%A9%EB%8B%88%EB%8B%A4..png)
나는 Fail2ban을 사용하여 무차별 대입 보호를 시도합니다. Fail2ban 테스트를 사용하면 일치시키려는 로그와 일치하지만 7개 이상의 로그인 실패로 사이트를 무차별 대입하는 테스트에서는 내 IP 주소를 금지하지 않습니다.
필터:
[Definition]
failregex = <HOST>:.*"POST /login.*" 200 .*$
ignoreregex =
교도소:
[shop-brute-force]
enabled = true
filter = shop-brute-force
logpath = /etc/exampleorg/shop/log/access.log
maxretry = 7
findtime = 60
bantime = 900
ignoreip =
로그 예(..., 88.88.88.88 및 example.org로 익명화됨):
2022/04/01 08:09:25.413720 88.88.88.88:10729 - - [01/Apr/2022:08:09:25 +0000] "POST /login?target=%2Fshop%2F HTTP/1.1" 200 2192 "https://example.org/login?target=%2Fshop%2F" "..."
시험:
Running tests
=============
Use failregex filter file : shop-brute-force, basedir: /etc/fail2ban
Use log file : /home/user/test.log
Use encoding : UTF-8
Results
=======
Failregex: 3 total
|- #) [# of hits] regular expression
| 1) [3] <HOST>:.*"POST /login.*" 200 .*$
`-
Ignoreregex: 0 total
Date template hits:
|- [# of hits] date format
| [106] Year(?P<_sep>[-/.])Month(?P=_sep)Day 24hour:Minute:Second(?:,Microseconds)?
`-
Lines: 106 lines, 0 ignored, 3 matched, 103 missed
[processed in 0.02 sec]
Missed line(s): too many to print. Use --print-all-missed to print all 103 lines
답변1
Fail2ban을 사용하여 무차별 대입 보호를 만들려고 합니다.
failregex = ... 200 ...
200이 일반적인 응답이므로 이는 반드시 무차별 시도는 아니며 이는 OK를 의미합니다. 일반적으로 401 또는 403과 같은 코드는 무단 시도를 알리거나 서비스가 200으로 응답하는 경우 추가 로그 항목을 기록합니다. 일부 로그 파일 또는 저널(반드시 에 포함될 필요는 없음 access.log
). 그러나 이론적으로는 POST
.
하지만 내 테스트에서 7회 이상의 로그인 실패로 사이트를 강제로 강제 실행했습니다...
Lines: 106 lines, 0 ignored, 3 matched, 103 missed
이 7번의 시도에 해당하는 전체 로그 발췌문을 제공하지 않았습니다. 그리고 fail2ban-regex
귀하와 관련된 3개의 일치 항목만 찾으십시오 failregex
(전혀 좋지 않습니다. 예를 들어 고정되지 않았고 모든 것을 포괄할 수 있지만 신경 쓰지 마세요. 일치 항목이 없습니다). 아마도 귀하의 RE가 기본적으로 그것과 일치하기 때문에 귀하의 예에서 다른 것을 단일 로그 라인으로 기록할 것입니다. 따라서 귀하가 수행한 7번의 시도에 해당하는 전체 로그 발췌문으로 질문을 업데이트하십시오.
그리고 마지막으로 훨씬 더 나은 RE는 다음과 같이 보일 수 있습니다.
failregex = ^\s*<ADDR>:\d+ [^"]*"[A-Z]+ /login\b[^"]*" 200\b
그러나 나는 당신이 그것을 실제로 사용할지 여전히 확신하지 못합니다(위에서 언급한 200번째 문제로 인해).
테스트(3개의 로그 라인 포함)만 수행했고 실제 로그에 7개의 로그 라인이 모두 표시되는 경우 다음을 확인할 수 있습니다.Fail2ban이 금지되지 않는 이유에 대한 FAQ. 예를 들어, 올바르지 않거나 backend
(파일 관련 모니터링을 위해 설정 auto
), 부적절한 금지 조치 또는 Fail2ban 측의 일부 오류(fail2ban.log도 확인)일 수 있습니다.