Назад | Перейти на главную страницу

Как игнорировать журнал источника событий

У меня регулярно работает источник событий. Проблема в том, что http-get-dos from fail2ban поймает IP, если пользователь оставил вкладку открытой в течение длительного времени.

Итак, я думаю, как я могу отключить этот тип конкретного журнала в ningx? Альтернативой является настройка fail2ban для игнорирования этого шаблона.

"GET /users/stream HTTP/2.0"

Я готов реализовать в nginx или fail2ban.

Возможно, соответствующим образом изменив эту строку в /etc/fail2ban/filter.d/http-get-dos.conf это самый простой способ:

failregex = ^<HOST> -.*"(GET|POST).*

Обновить (/etc/fail2ban/filter.d/http-get-dos.conf):

# Fail2Ban configuration file
[Definition]

# Option: failregex
# Note: This regex will match any GET entry in your logs, so basically all valid and not valid entries are a match.
# You should set up in the jail.conf file, the maxretry and findtime carefully in order to avoid false positives.
failregex = ^<HOST> -.*"(GET|POST).*
# Option: ignoreregex
ignoreregex =

##To stop DOS attack from remote host.
[http-get-dos]
enabled = true
port = http,https
filter = http-get-dos
logpath  = /usr/local/nginx/localhost-access.log
maxretry = 300
findtime = 300
bantime = 600
action = iptables[name=HTTP, port=http, protocol=tcp]

Первая попытка: По-видимому, не работает с регулярным выражением ниже:

fail2ban-regex /usr/local/nginx/localhost-access.log '^<HOST> -.*"(GET|POST).*' '^.+?:\d+ <HOST> -.*"(GET) /users/stream.*$'

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

Use   failregex line : ^<HOST> -.*"(GET|POST).*
Use ignoreregex line : ^.+?:\d+ <HOST> -.*"(GET) /users/stream.*$
Use         log file : /usr/local/nginx/localhost-access.log
Use         encoding : UTF-8


Results
=======

Failregex: 22431 total
|-  #) [# of hits] regular expression
|   1) [22431] ^<HOST> -.*"(GET|POST).*
`-

Ignoreregex: 0 total

Вторая попытка: Но будет работать с ^<HOST> -.*"(GET) /users/stream.*$

fail2ban-regex /usr/local/nginx/localhost-access.log '^<HOST> -.*"(GET|POST).*' '^<HOST> -.*"(GET) /users/stream.*$'

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

Use   failregex line : ^<HOST> -.*"(GET|POST).*
Use ignoreregex line : ^<HOST> -.*"(GET) /users/stream.*$
Use         log file : /usr/local/nginx/localhost-access.log
Use         encoding : UTF-8


Results
=======

Failregex: 1574 total
|-  #) [# of hits] regular expression
|   1) [1574] ^<HOST> -.*"(GET|POST).*
`-

Ignoreregex: 22093 total
|-  #) [# of hits] regular expression
|   1) [22093] ^<HOST> -.*"(GET) /users/stream.*$
`-

Вы на правильном пути, используя

ignoreregex =

директива в вашем

/etc/fail2ban/filter.d/http-get-dos.conf

файл конфигурации. Это должно быть просто вопросом настройки регулярного выражения. Что-то вроде этого:

^<HOST> -.*"(GET) /users/stream.*$

который соответствует строке вашего файла журнала, а затем соответствует любым GET и только GET с запросами с префиксом / users / stream и любой добавленной к нему строкой.