서버 보안을 위해 Fail2ban을 구현해야 합니다. 로그를 검사하고 404 메시지를 많이 생성하는 호스트를 차단하고 싶습니다.
제가 가진 문제는 특정 NAT IP 뒤에 다수의 클라이언트가 있을 수 있으며 이들을 구별해야 한다는 것입니다. 각 클라이언트는 다음 형식으로 다른 URL을 요청합니다.
https://server.example.com/path/<uniqueid>/<mac_address>
IP당 404 오류 수를 보는 대신 정규식의 고유 ID를 고려하도록 fall2ban을 실행하고 싶습니다.
필요한 이벤트를 포착하는 것처럼 보이는 다음 정규식을 개발했습니다.
(?P<host>(\d{1,3}.){4})\ -\ -\ \[\d{1,2}\/\w+\/\d{4}[\:\d{2}]+\ \+\d{4}\] "GET \/path\/(?P<unique_id>.+)\/.+HTTP\/\d.\d" ".+" ".+" 404.+
이는 다음과 일치해야 합니다.
1.1.1.11 - - [29/Aug/2018:01:27:45 +0100] "GET /path/3B44444444483/ddddee37D4.cfg HTTP/1.1" "somestring" "otherstring" 404 - 2005 5 0.117
그리고 이는 일치해야 하지만 위와는 다른 인스턴스로 간주됩니다.
1.1.1.11 - - [29/Aug/2018:01:27:45 +0100] "GET /path/3B46666444483/ddddee37D4.cfg HTTP/1.1" "somestring" "otherstring" 404 - 2005 5 0.117
답변1
이 구성을 사용하면 서버는 보안상의 이점이나 X IP에 대한 404 응답을 제공하지 않는 CPU 이점을 찾는 로그에서 404 응답을 찾는 데 더 많은 CPU를 사용하게 됩니다.
이러한 응답을 보고 싶지 않다면 해당 응답에 대한 로그 항목을 생성하지 마세요.