Fail2ban и X-Forwarded
Я настраиваю fail2ban на своих веб-серверах. Мои веб-серверы стоят за ELB. поэтому я настроил X-forwarded для получения реальных IP-адресов в журналах Apache Access. Но, к сожалению, fail2ban не может сканировать журналы доступа, когда x-forwarded включен в журналах доступа. Это мое условие регресса
failregex = ^<HOST> -.*\"(GET|POST).*
А ниже приведен мой лог-формат, когда x-forwarded включен
10.0.2.18 (42.104.63.31) - - [01/May/2014:16:05:39 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/537.75.14"
2 ответа
Часть вашей проблемы в том, что вы вытаскиваете не то <HOST>
, Ваш ^<HOST>
будет соответствовать <HOST>
когда найден в начале, например, 10.0.2.18, когда я думаю, что вы действительно хотите, это 42.104.63.31. Вы можете исправить это, сказав fail2ban искать <HOST>
внутри ()
например
failregex=\(<HOST>\) -.*(GET|POST)
который, кажется, работает при запуске через fail2ban-regex с вашим фрагментом журнала
fail2ban-regex logsnippet '\(<HOST>\) -.*(GET|POST)'
Running tests
=============
Use failregex line : \(<HOST>\) -.*(GET|POST)
Use log file : logsnippet
Results
=======
Failregex: 1 total
|- #) [# of hits] regular expression
| 1) [1] \(<HOST>\) -.*(GET|POST)
| 42.104.63.31 Thu May 01 16:05:39 2014
`-
Теперь он может читать IP-адреса клиентов, но снова и снова получать это предупреждение. 28<28>fail2ban.filter: WARNING Невозможно найти соответствующий IP-адрес для -