
이를 바탕으로저장소Fail2ban 필터를 사용하여 nginx 로그를 분석하고 의심스러운 요청 및 IP를 금지하고 싶습니다.
내 서버에서는 nginx에 대한 사용자 정의 로그 형식을 사용하고 있습니다. 여러 사이트를 호스팅하고 있기 때문에 로그 파일의 구조는 다음과 같습니다.
log_format custom_format '$server_name $remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent" "$gzip_ratio"'
다음과 같은 로그 항목이 생성됩니다.
www.example.com 62.210.129.246 - - [24/Aug/2018:11:07:46 +0200] "POST /wp-login.php HTTP/1.1" 301 185 "http://example.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36" "-"
사실, <HOST>
정규식 그룹의 remote_addr 앞에 server_name을 추가하고 있습니다(fail2ban은 이를 (?:::f{4,6}:)?(?P<host>\S+))
일치하지 않는 것으로 해결합니다. 내 로그 형식과 일치하도록 정규식을 어떻게 수정해야 하는지 잘 모르겠습니다.
어떤 아이디어가 있나요?
답변1
솔직히 CPU를 낭비하지 마십시오. "WebExploits"는 실제로 배경 소음일 뿐입니다. 웹로그를 줄이기 위해 Fail2ban을 사용하는 것은 실제로 보안상의 이점을 제공하지 않습니다.
꼭 필요한 경우 WebExploits의 정규 표현식 개념과 일치하는 nginx 로그 형식 $server_name
뒤에 추가하세요.$remote_addr -
또는 ^<HOST>
정규식을 ^[^ ]* <HOST>
. 이는 공백이 아닌 문자와 일치하고 공백이 뒤따르고 그 뒤에 오는 것을 의미합니다.<HOST>