Fail2ban не может заблокировать (dos-атака)

Я хочу использовать fail2ban для защиты моего сервера. HTTP-сервер - это узел сценария, журналы которого мне удалось отформатировать следующим образом:

2017-03-18 18:03:32.940 [ INFO ] - ::ffff:192.168.1.56 GET /

Интересная часть jail.conf:

[node-get-dos]
enabled = true
port = 8080 
filter = node-get-dos
logpath = /logs/selector.log
maxretry = 10
findtime = 10
bantime = 600

, а содержимое node-get-dos:

[Definition]
failregex = \[.*\].*:.?:.*:<HOST>.*\ (GET|POST|DELETE).*
ignoreregex =

Итак, когда я запускаю следующую команду, меня не забанят:

ab -n 1000 -c 100 http://192.168.1.3:8080/

И я не знаю, важно ли это, но скрипт узла находится в контейнере докера.

У меня уже есть решение, которое заключается в размещении узла за обратным прокси-сервером (apache) и настройке fail2ban для анализа журналов apache (access.log), но я хочу избежать этого (потребляет больше ЦП и ОЗУ) . Вот пример после перезагрузки и запуска команды ab:

2017-03-18 19:25:52,296 fail2ban.server         [15690]: INFO    Exiting Fail2ban
2017-03-18 19:25:52,584 fail2ban.server         [21170]: INFO    Changed logging target to /var/log/fail2ban.log for Fail2ban v0.9.3
2017-03-18 19:25:52,586 fail2ban.database       [21170]: INFO    Connected to fail2ban persistent database '/var/lib/fail2ban/fail2ban.sqlite3'
2017-03-18 19:25:52,591 fail2ban.jail           [21170]: INFO    Creating new jail 'sshd'
2017-03-18 19:25:52,606 fail2ban.jail           [21170]: INFO    Jail 'sshd' uses pyinotify
2017-03-18 19:25:52,617 fail2ban.filter         [21170]: INFO    Set jail log file encoding to UTF-8
2017-03-18 19:25:52,622 fail2ban.jail           [21170]: INFO    Initiated 'pyinotify' backend
2017-03-18 19:25:52,626 fail2ban.filter         [21170]: INFO    Set maxRetry = 3
2017-03-18 19:25:52,627 fail2ban.actions        [21170]: INFO    Set banTime = 900
2017-03-18 19:25:52,630 fail2ban.filter         [21170]: INFO    Added logfile = /var/log/auth.log
2017-03-18 19:25:52,633 fail2ban.filter         [21170]: INFO    Set findtime = 600
2017-03-18 19:25:52,633 fail2ban.filter         [21170]: INFO    Set jail log file encoding to UTF-8
2017-03-18 19:25:52,634 fail2ban.filter         [21170]: INFO    Set maxlines = 10
2017-03-18 19:25:52,691 fail2ban.server         [21170]: INFO    Jail sshd is not a JournalFilter instance
2017-03-18 19:25:52,695 fail2ban.jail           [21170]: INFO    Creating new jail 'node-get-dos'
2017-03-18 19:25:52,695 fail2ban.jail           [21170]: INFO    Jail 'node-get-dos' uses pyinotify
2017-03-18 19:25:52,696 fail2ban.filter         [21170]: INFO    Set jail log file encoding to UTF-8
2017-03-18 19:25:52,699 fail2ban.jail           [21170]: INFO    Initiated 'pyinotify' backend
2017-03-18 19:25:52,703 fail2ban.filter         [21170]: INFO    Set maxRetry = 10
2017-03-18 19:25:52,703 fail2ban.actions        [21170]: INFO    Set banTime = 600
2017-03-18 19:25:52,706 fail2ban.filter         [21170]: INFO    Added logfile = /logs/selector.log
2017-03-18 19:25:52,710 fail2ban.filter         [21170]: INFO    Set findtime = 10
2017-03-18 19:25:52,710 fail2ban.filter         [21170]: INFO    Set jail log file encoding to UTF-8
2017-03-18 19:25:52,718 fail2ban.jail           [21170]: INFO    Jail 'sshd' started
2017-03-18 19:25:52,724 fail2ban.jail           [21170]: INFO    Jail 'node-get-dos' started
0
задан 18 March 2017 в 21:50
1 ответ

Утилита fail2ban-regex говорит, что ваш регекс хорош и соответствует журналу, который вы предоставили

Lines: 1 lines, 0 ignored, 1 matched, 0 missed

, поэтому вам нужно искать в другом месте. Вам следует проверить сообщения журнала fail2ban при запуске fail2ban, чтобы убедиться, что, например, он может прочитать файл журнала. Понятия не имею, где вы их найдете в предоставленном вами стоге.

.
0
ответ дан 5 December 2019 в 08:24

Теги

Похожие вопросы