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

fail2ban Regex для POST не срабатывает

Поэтому я пытаюсь ограничить количество запросов POST на моем сервере. Я осмотрелся и попробовал каждую перестановку строк, которую могу найти в Интернете.

это мой jail.local apache conf

[apache-postUsHttp]

enabled = true
port = http,https
filter = apache-postflood
logpath = /var/log/apache2/other_vhosts_access.log
findtime = 30
bantime = 3600
maxretry = 10

и здесь у вас есть фильтр apache-postflood.conf

# Fail2Ban configuration file
#
#
# $Revision: 1 $
#

[Definition]
# Option: failregex
# Notes.: Regexp to catch known spambots and software alike. Please verify
# that it is your intent to block IPs which were driven by
# abovementioned bots.
# Values: TEXT
#
failregex = ^<HOST>.*"POST.*

# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =

вот пример журнала доступа.

my.tld:80 x.x.x.x - - [25/Aug/2016:05:53:52 -0400] "POST /location/of/file.php HTTP/1.1" 302 300 "http://my.tld/" "Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_4 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13G35 Safari/601.1"

Я также пробовал следующий failregex = ^ -. * "POST. *

и множество других небольших вариаций. но независимо от того, что я делаю, я не получаю уведомлений о фильтрах / информации в моих журналах fail2ban.

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

Итак, я понял это.

проблема была в журнале общего доступа.

Я использовал один журнал доступа для нескольких сайтов на этом сервере, и журнал пытался использовать первый хост, являясь именем веб-сайта, и пытался найти DNS, чтобы заблокировать его.

IE

my.tld:80 x.x.x.x ......

x.x.x.x был ip, который мне нужно было использовать для регулярного выражения. Если бы кто-нибудь мог сказать мне правильное регулярное выражение для этого, это было бы здорово, но просто создание моих собственных файлов журнала для этих сайтов решило проблему.

Ваше регулярное выражение неверно. Вы пытаетесь сопоставить <HOST> в начале строки ^<HOST> и того, что вы хотите, нет, это после my.tld: 80 :.

Что-то вроде

'^.*:80 <HOST> - - .*"POST.*'

может работать для вас, но вам, возможно, придется его настроить. Не забывайте, что есть fail2ban-regex (1), который удобен для тестирования.