LINUX.ORG.RU
ФорумAdmin

fail2ban фильтровать произвольную строку вместо ip

 


0

1

Хочу на одном сервере заюзать fail2ban в качестве монитора некоторого события в логе. Уперся в то, что в фильтре переменная <HOST> обязательно хочет поймать в логах IP адрес и не реагирует на произвольную строку. В частности вот это не ловит

# fail2ban-regex 'Jul 18 12:13:01 Test_HOST connection failed'     '<HOST> connection failed'
Понятно, что есть другие инструменты мониторинга логов, просто fail2ban уже есть, думал воспользоваться им... Реально?

★★

In every line of failregex, the part that matches the host name or IP address must be wrapped in a (?P<host> ... ) sandwich. This is a Python-specific regex extension that assigns the contents of the match to the name <host>. The <host> tag is how you tell fail2ban which host was connecting, so it has to be present in every line of failregex. If it's not, fail2ban will issue an error message about «No 'host' group».

As a convenience, you can use the predefined entity <HOST> in your regexes. <HOST> is an alias for (?:::f{4,6}:)?(?P<host>\S+), which matches either a hostname or an IPv4 address (possibly embedded in an IPv6 address).

То есть <HOST> это не просто так, а регулярное выражение, соответствующее ip-адресу, поэтому с простой строкой не совпадёт. Пробуйте через ″(?P<host> ... )″.

mky ★★★★★
()
Последнее исправление: mky (всего исправлений: 1)
Ответ на: комментарий от mky

да по идее \S+ должен срабатывать, но не хочет. Похоже где-то глубже host еще на айпишность проверяется.

root@cloudweb:~# fail2ban-regex 'Jul 18 12:13:01 aaa connection failed'     '(?P<host>\S+) connection failed' -l heavydebug

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

Use   failregex line : (?P<host>\S+) connection failed
Use      single line : Jul 18 12:13:01 aaa connection failed

D: Working on line u'Jul 18 12:13:01 aaa connection failed'
D: Matched time template MONTH Day Hour:Minute:Second
D: Date: u'Jul 18 12:13:01', message: u' aaa connection failed'
D: Correcting deduced year from 2016 to 2015 since 1468833181.000000 > 1467993055.622136
D: Got time using template MONTH Day Hour:Minute:Second
D: Matched FailRegex('(?P<host>\\S+) connection failed')
D: Unable to find a corresponding IP address for aaa: [Errno -2] Name or service not known
D: Sorting the template list
D: Winning template: MONTH Day Hour:Minute:Second with 1 hits

Results
=======

Failregex: 0 total

Ignoreregex: 0 total

Date template hits:
|- [# of hits] date format
|  [1] MONTH Day Hour:Minute:Second
`-

Lines: 1 lines, 0 ignored, 0 matched, 1 missed
|- Missed line(s):
|  Jul 18 12:13:01 aaa connection failed
`-

Davyd ★★
() автор топика
Последнее исправление: Davyd (всего исправлений: 3)
Ответ на: комментарий от Davyd

Спасибо тебе.

Я тут хотел приспособить f2b для бана email-ов, а оказалось, что грабли лежат на первом же шаге.

vel ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.