잘못된 파일에 액세스하는 경우 IP를 금지하도록 fall2ban을 올바르게 구성하는 방법

잘못된 파일에 액세스하는 경우 IP를 금지하도록 fall2ban을 올바르게 구성하는 방법

구성하려고 합니다실패2금지내 테스트 서버에서. 내 사이트를 조사하려는 스크립트 봇을 일시적으로 차단하고 싶습니다. 따라서 cgi-bin, 등이 있는 모든 것입니다 admin. setup.php나는 이전에 grep "HTTP/1.1\" 404" access.log | awk '{print $7 } ' | sort | uniq -c | sort -n내 access.log와 같은 내용을 사용하여 404 오류를 생성하는 모든 것을 검토했습니다.

내 URL에 이러한 부분이 전혀 포함되어 있지 않은지 확인했습니다.

jail.local그래서 설치 후 jail.conf. 내 파일은 다음과 같습니다(10분 동안 IP를 차단하고 싶습니다).

[DEFAULT]
ignoreip  = 127.0.0.1
bantime   = 600
destemail = myemail
banaction = iptables-multiport
action    = %(action_mwl)s


[apache-script-bots]
enabled  = true
port     = http,https
filter   = apache-script-bots
logpath  = /var/log/apache2/access.log
maxretry = 1

나는 또한 내부에 다음과 같은 폴더만 만들었 apache-script-bots.conf습니다 filter.d.

[Definition]
failregex = (admin|setup.php|main.php|w00tw00t|web-console|.jsp|manager|cgi-bin)
ignoreregex =

Fail2ban을 다시 시작하면 모든 것이 정상이라는 메시지가 표시됩니다. 그러나 다음과 같이 실행하여 감옥이 작동하는지 테스트하려고 하면 mydomain/main.php내가 감옥에 있지 않다는 것을 알 수 있습니다.

Fail2ban의 상태를 확인하면 내 감옥이 작동하고 있다는 메시지가 나타납니다.

fail2ban-client status
Status
|- Number of jail:  2
`- Jail list:       ssh, apache-script-bots

문제는 정규 표현식에 있다고 가정하지만 그 이유를 이해할 수 없습니다.

답변1

<HOST>해당 호스트를 금지할 수 있도록 로그 항목에서 를 찾을 위치를 정규식을 통해 fall2ban에 알려야 합니다 . 줄의 시작 부분에 있는 일반 액세스 로그의 경우

<HOST> -.*(w00tw00t|main.php|setup.php)

작동하지만 로그 항목의 관련 트리거와 일치하므로 원하는 것을 정확하게 수행하지 못할 수도 있습니다.


다음과 같은 것을 시도해 볼 수도 있습니다.

<HOST> -.*(/w00tw00t|/main.php |setup.php )

문자열 중 일부를 보다 구체적인 위치에 묶어야 합니다.

관련 정보