Запись fail2ban мультилинии regex

У меня есть некоторые неприятные хосты, примеряющие его с сервером SSH, который я выполняю, и я пытаюсь запретить их использующий fail2ban. Проблема, я не сделал большой работы с regexes, и еще меньше с Python regexes.

Вот неприятные строки в моем auth.log:

Nov 19 18:58:17 myhost sshd[48272]: Connection from xxx.xxx.xxx.xxx port 3284 on my.host.ip.address port 22
Nov 19 18:58:21 myhost sshd[48272]: fatal: Read from socket failed: Connection reset by peer [preauth]

Я хочу захватить обе строки в regex, я видел в других сообщениях о том, как сделать многострочный материал, но в данный момент я не могу даже заставить его соответствовать первой строке! Вот отрывок из моего *.conf файла:

[INCLUDES]

# Read common prefixes. If any customizations available -- read them from
# common.local
before = common.conf

[Init]

maxlines = 2

[Definition]

_daemon = sshd

failregex = ^%(__prefix_line)s^Connection from <HOST>*$

Я понимаю, что "__ prefix_line" разработан для ловли первого "myhost sshd [PID]" укусил, но все я, когда я выполняю "fail2ban-regex":

Results
=======

Failregex: 0 total

Ignoreregex: 0 total

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

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

У кого-либо есть какие-либо идеи?

Заранее спасибо!

3
задан 20 November 2014 в 00:38
2 ответа

Я долгое время боролся с многострочным регулярным выражением в Ubuntu. Оказывается, мне нужно было обновить до версии 0.9.1, чтобы заставить его работать, что потребовало загрузки последней версии tar.gz из fail2ban. Для Ubuntu 14.04 версия LTS ограничивалась значением 0.8.11

После этого все работало, как ожидалось.

1
ответ дан 3 December 2019 в 07:01

Я использую fail2ban 0.9.5 на Ubuntu Server LTS 14.04 и использую красивое правило erroruser.conf , которое запрещает все «неправильные / неавторизованные» пользователи для моего ssh и squirrelmail (использующие dovecot) и просматривающие /var/log/auth.log на наличие следующих мультилиний:

Aug 15 10:15:25 server auth: pam_unix(dovecot:auth): check pass; user unknown
Aug 15 10:15:25 server auth: pam_unix(dovecot:auth): authentication failure; logname= uid=0 euid=0 tty=dovecot ruser=alumni rhost=14.141.17.167

и

Aug 15 12:39:10 server sshd[5851]: pam_unix(sshd:auth): check pass; user unknown
Aug 15 12:39:10 server sshd[5851]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=91.224.160.106

вместе с единственной строкой для ssh root бан пользователя:

Aug 15 05:50:20 server sshd[20677]: Failed password for root from 62.147.227.164 port 55253 ssh2

Правило:

[INCLUDES]

before = common.conf

[Definition]

_daemon = (?:sshd|postfix/smptd)

failregex = ^%(__prefix_line)s[iI](?:llegal|nvalid) user .* from <HOST>\s*$
            ^%(__prefix_line)sFailed (?:password|publickey) for root from <HOST>(?: port \d*)?(?: ssh\d*)?$
            dovecot.*user unknown\n.*dovecot.*authentication failure.*rhost\=<HOST>

ingoreregex =

[Init]

maxlines = 2

он включен в jail.local как:

[wronguser]

enabled  = true
port     = 1:65535
filter   = wronguser
logpath  = /var/log/auth.log
maxretry = 1
bantime  = -1

Default apt-get fail2ban на Ubuntu LTS 14.04 0.8.11 и не работает с многострочным регулярным выражением. Поэтому вам следует вручную установить последнюю стабильную версию fail2ban. Я сделал это прямо из их репозитория git.

1
ответ дан 3 December 2019 в 07:01

Теги

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