4 votes

Écriture d'une regex fail2ban multiligne

J'ai quelques hôtes gênants qui essaient de l'utiliser avec un serveur SSH que je fais tourner, et j'essaie de les interdire en utilisant fail2ban. Le problème est que je n'ai pas beaucoup travaillé avec des regex, et encore moins avec des regex Python.

Voici les lignes qui posent problème dans mon 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]

Je veux saisir les deux lignes de la regex, j'ai vu dans d'autres messages comment faire des choses multi-lignes, mais pour le moment je n'arrive même pas à faire correspondre la première ligne ! Voici un extrait de mon fichier *.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>*$

Je comprends que le "__prefix_line" est conçu pour attraper le premier bit "myhost sshd[PID]", mais tout ce que j'obtiens lorsque j'exécute "fail2ban-regex" est :

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

Quelqu'un a-t-il une idée ?

Merci d'avance !

1 votes

Duplicata de stackoverflow.com/questions/25722626/ (je ne suis pas sûr que cela compte comme une duplication si c'est sur un autre site d'échange de piles)

0 votes

J'ai regardé celui-là, et j'ai basé mes tests dessus, mais je n'ai pas avancé, d'où ma question.

0 votes

Avez-vous essayé <HOST>.*$ au lieu de <HOST>*$ ? Vous n'avez pas donné de jeu de caractères, la fonction * peut utiliser. Ainsi, les * s'appliquerait à la dernière commande de la liste élargie <HOST> .

3voto

user288927 Points 1

J'utilise fail2ban 0.9.5 sur Ubuntu Server LTS 14.04 et utiliser une belle wronguser.conf règle qui bannit tous les utilisateurs 'incorrects/non autorisés' pour mon ssh et squirrelmail (qui utilise 'Dovecot') et recherche dans /var/log/auth.log les multi-lignes suivantes :

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

y

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

avec une seule ligne pour ssh racine interdiction de l'utilisateur :

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

La règle est la suivante :

[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

il est inclus dans jail.local comme :

[wronguser]

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

apt-get par défaut fail2ban sur Ubuntu LTS 14.04 est 0.8.11 et ne fonctionne pas avec les regex multilignes. Vous devez donc installer manuellement la dernière version stable de fail2ban. Je l'ai fait directement à partir de leur repo git.

0 votes

Je suis triste que ce soit "obligatoire"... Je serais bien plus heureux d'avoir un fail2ban installé par PPA... mais malheureusement personne ne fait de backport de nos jours !

1voto

user215387 Points 21

Je me suis longtemps battu avec des expressions rationnelles multilignes sur Ubuntu. Il s'est avéré que j'avais besoin d'une mise à jour vers la version 0.9.1 pour que cela fonctionne, ce qui a nécessité le téléchargement du dernier tar.gz de fail2ban. Pour Ubuntu 14.04 LTS, la version plafonnait à 0.8.11.

Après cela, tout a fonctionné comme prévu.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X