Понимание результатов теста fail2ban при запуске fail2ban-regex на Nginx - PullRequest
0 голосов
/ 09 марта 2020

Я настраиваю fail2ban на работающей капле Ubuntu 18.04 Digital Ocean Nginx.

Я следовал этому учебнику для настройки и этому учебнику для создания пользовательский фильтр для перехвата запросов на запрещенные URL.

Вот мой фильтр:

[Definition]
failregex = ^ \[error\] \d+#\d+: .* forbidden .*, client: <HOST>, .*$

ignoreregex =

Вот как выглядит пример файла журнала, который я пытаюсь поймать:

2020/03/09 12:18:08 [error] 14843#14843: *8 access forbidden by rule, client: xx.xx.xx.xx, server: xx.xx.xx.xx, request: "GET /var/ HTTP/1.1", host: "xxx.xxx.xxx.xx"

Вот тест, который я запускаю:

/etc/fail2ban/filter.d# fail2ban-regex /var/log/nginx/error.log /etc/fail2ban/filter.d/nginx-forbidden.conf

А вот вывод:

Running tests
=============

Use   failregex filter file : nginx-forbidden, basedir: /etc/fail2ban
Use         log file : /var/log/nginx/error.log
Use         encoding : UTF-8


Results
=======

Failregex: 131 total
|-  #) [# of hits] regular expression
|   1) [131] ^ \[error\] \d+#\d+: .* forbidden .*, client: <HOST>, .*$
`-

Ignoreregex: 0 total

Date template hits:
|- [# of hits] date format
|  [200] {^LN-BEG}ExYear(?P<_sep>[-/.])Month(?P=_sep)Day(?:T|  ?)24hour:Minute:Second(?:[.,]Microseconds)?(?:\s*Zone offset)?
|  [254] ExYear(?P<_sep>[-/.])Month(?P=_sep)Day(?:T|  ?)24hour:Minute:Second(?:[.,]Microseconds)?(?:\s*Zone offset)?
`-

Lines: 1060 lines, 0 ignored, 131 matched, 929 missed
[processed in 0.47 sec]

Missed line(s): too many to print.  Use --print-all-missed to print all 929 lines

Глядя на мой файл журнала, там около 1060 строк, и 200 из них содержат дату. Из этих 200 131 содержит «запрещено», так что я думаю, что, возможно, оно работает, но я не уверен.

Вот мои вопросы:

1) Что такое «попадания в шаблон даты»? Это строки, начинающиеся с даты в ожидаемом формате? И поэтому являются ли они «кандидатами» на то, чтобы быть записями журнала, которые должны быть сопоставлены?

2) В чем разница между «игнорируемыми» и «пропущенными»?

3) Есть ли способ увидеть 131 «совпадающих» записей, чтобы я мог проверить, выглядят ли они как я пытаясь поймать?

4) Где регулярное выражение в фильтре говорит client: <HOST>, что это за совпадение? Это «клиентский» IP-адрес в записи журнала или «хост» в конце строки?

Ответы, вероятно, очевидны, если вы знаете, что означают эти термины, но я не могу найти любые объяснения достаточно простые для моего невежества.

...