Fail2ban regle ...

Fermé
Steph - 9 mars 2012 à 09:32
massi-85 Messages postés 311 Date d'inscription mercredi 2 novembre 2011 Statut Membre Dernière intervention 5 février 2014 - 10 avril 2012 à 12:32
Bonjour,


J'ai un serveur qui subit en ce moment des attaques brute force ssh.
On m'a conseillé d'installer fail2ban. C'est fait et ça tourne.
Maintenant, il faut que je cale les règles de filtrage, et là c'est plus dur.


La règle de base donnée dans le site fail2ban (Failed ...) fonctionne quand je tape la commande directe :

fail2ban-regex "Mar  8 10:26:05 de468 sshd[11335]: Failed password for root from 1.2.3.4 port XXXXXX ssh2" "Failed [-/\w]+ for .* from <HOST>"



La ligne "Mar 8 ... ssh2" est issue de mon log logauth.log (Debian 4)


Mon problème vient du fait que si je tape la commande :


fail2ban-regex /var/logauth.log "Failed [-/\w]+ for .* from <HOST>"



fail2ban me répond "Sorry, no match" alors que la ligne précédente est issue de ce log.


Du coup, je ne comprend pas et je ne sais pas tracer où il y a un problème.


Y aurait-t'il un connaisseur de fail2ban pour me guider ou pour donner quelques conseils ?


Merci d'avance


Stéphane



7 réponses

massi-85 Messages postés 311 Date d'inscription mercredi 2 novembre 2011 Statut Membre Dernière intervention 5 février 2014 74
9 mars 2012 à 10:32
- Déjà sans parler de fail2ban, change d'abord ton port ( si tu l'as laisser par Default )
- Désactive le root au ssh, c'est celui qui est le plus attaquer par brut force.
- Créer toi un utilisateurs, et change lui c'est droit avec visudo.
- N'autorise que cet utilisateurs a utilisé le ssh.

Après fail2ban c'est un autre problème.

Il nous faudrait ton fichier conf pour voir d'ou viens le problème.
0
Steph_30 Messages postés 5 Date d'inscription vendredi 9 mars 2012 Statut Membre Dernière intervention 11 mars 2012
9 mars 2012 à 11:12
Bonjour massi-85 et merci de me répondre ...

Je vais tenter de suivre tes conseils pour les utilisateurs et port relatif au ssh.

En attendant, voici mes fichiers de conf de fail2ban :


cat jail.conf

# Fail2Ban configuration file.
#
# This file was composed for Debian systems from the original one
#  provided now under /usr/share/doc/fail2ban/examples/jail.conf
#  for additional examples.
#
# To avoid merges during upgrades DO NOT MODIFY THIS FILE
# and rather provide your changes in /etc/fail2ban/jail.local
#
# Author: Yaroslav O. Halchenko <debian@onerussian.com>
#
# $Revision: 281 $
#

# The DEFAULT allows a global definition of the options. They can be override
# in each jail afterwards.

[DEFAULT]

# "ignoreip" can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1
bantime  = 600
maxretry = 3

# "backend" specifies the backend used to get files modification. Available
# options are "gamin", "polling" and "auto".
# yoh: For some reason Debian shipped python-gamin didn't work as expected
#      This issue left ToDo, so polling is default backend for now
backend = polling

#
# Destination email address used solely for the interpolations in
# jail.{conf,local} configuration files.
destemail = root@localhost

# Default action to take: ban only
action = iptables[name=%(__name__)s, port=%(port)s]

# Following actions can be chosen as an alternatives to the above action.
# To activate, just copy/paste+uncomment chosen 2 (excluding comments) lines
# into jail.local

# Default action to take: ban & send an e-mail with whois report
# to the destemail.
# action = iptables[name=%(__name__)s, port=%(port)s]
#          mail-whois[name=%(__name__)s, dest=%(destemail)s]

# Default action to take: ban & send an e-mail with whois report
# and relevant log lines to the destemail.
# action = iptables[name=%(__name__)s, port=%(port)s]
#          mail-whois-lines[name=%(__name__)s, dest=%(destemail)s, logpath=%(logpath)s]

# Next jails corresponds to the standard configuration in Fail2ban 0.6
# which was shipped in Debian. Please enable any defined here jail by including
#
# [SECTION_NAME]
# enabled = true
#
# in /etc/fail2ban/jail.local.
#

[ssh]

enabled = true
port    = ssh
filter  = sshd
logpath  = /var/logauth.log
maxretry = 6

#
# HTTP servers
#

[apache]

enabled = false
port    = http
filter  = apache-auth
logpath = /var/log/apache*/*access.log
maxretry = 6


[apache-noscript]

enabled = false
port    = http
filter  = apache-noscript
logpath = /var/log/apache*/*error.log
maxretry = 6

#
# FTP servers
#

[vsftpd]

enabled  = false
port     = ftp
filter   = vsftpd
logpath  = /var/log/auth.log
maxretry = 6


[proftpd]

enabled  = false
port     = ftp
filter   = proftpd
logpath  = /var/log/proftpd/proftpd.log
maxretry = 6


[wuftpd]

enabled  = false
port     = ftp
filter   = wuftpd
logpath  = /var/log/auth.log
maxretry = 6


#
# Mail servers
#

[postfix]

enabled  = false
port     = smtp
filter   = postfix
logpath  = /var/log/postfix.log


[couriersmtp]

enabled  = false
port     = smtp
filter   = couriersmtp
logpath  = /var/log/mail.log


[sasl]

enabled  = false
port     = smtp
filter   = sasl
logpath  = /var/log/mail.log


Je sais qu'il ne faut pas surcharger ce fichier, mais j'ai quand même activer la partie ssh.

J'ai créé le fichier jail.local
cat jail.local

[ssh-iptables]
enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
logpath  = /var/logauth.log
maxretry = 5
findtime = 600


Le filre associé est :

cat filter.d/sshd.conf


# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 471 $
#

[Definition]

# Option:  failregex
# Notes.:  regex to match the password failures messages in the logfile. The
#          host must be matched by a group named "host". The tag "<HOST>" can
#          be used for standard IP/hostname matching.
# Values:  TEXT
#
failregex = (?:(?:Authentication failure|Failed [-/\w+]+) for(?: [iI](?:llegal|nvalid) user)?|[Ii](?:llegal|nvalid) user|ROOT LOGIN REFUSED) .*(?: from|FROM) <HOST>(?: port \d*)?(?: ssh\d*)?\s*$

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


Et le sshd.local qui va avec :

cat filter.d/sshd.local

[definition]

failregex = Failed [-/\w]+ for .* from <HOST>

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



Du côté des actions :

cat action.d/iptables.conf

# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 455 $
#

[Definition]

# Option:  fwstart
# Notes.:  command executed once at the start of Fail2Ban.
# Values:  CMD
#
actionstart = iptables -N fail2ban-<name>
              iptables -A fail2ban-<name> -j RETURN
              iptables -I INPUT -p <protocol> --dport <port> -j fail2ban-<name>

# Option:  fwend
# Notes.:  command executed once at the end of Fail2Ban
# Values:  CMD
#
actionstop = iptables -D INPUT -p <protocol> --dport <port> -j fail2ban-<name>
             iptables -F fail2ban-<name>
             iptables -X fail2ban-<name>

# Option:  fwcheck
# Notes.:  command executed once before each fwban command
# Values:  CMD
#
actioncheck = iptables -n -L INPUT | grep -q fail2ban-<name>

# Option:  fwban
# Notes.:  command executed when banning an IP. Take care that the
#          command is executed with Fail2Ban user rights.
# Tags:    <ip>  IP address
#          <failures>  number of failures
#          <time>  unix timestamp of the ban time
# Values:  CMD
#
actionban = iptables -I fail2ban-<name> 1 -s <ip> -j DROP

# Option:  fwunban
# Notes.:  command executed when unbanning an IP. Take care that the
#          command is executed with Fail2Ban user rights.
# Tags:    <ip>  IP address
#          <failures>  number of failures
#          <time>  unix timestamp of the ban time
# Values:  CMD
#
actionunban = iptables -D fail2ban-<name> -s <ip> -j DROP

[Init]

# Defaut name of the chain
#
name = default

# Option:  port
# Notes.:  specifies port to monitor
# Values:  [ NUM | STRING ]  Default:
#
port = ssh

# Option:  protocol
# Notes.:  internally used by config reader for interpolations.
# Values:  [ tcp | udp | icmp | all ] Default: tcp
#
protocol = tcp



Avec tout ça, lorsque je tape la commande :
fail2ban-regex "Mar 8 10:26:05 de468 sshd[11335]: Failed password for root from 1.2.3.4 port XXXXXX ssh2" "Failed [-/\w]+ for .* from <HOST>"

Le système me répond :

Success, the following data were found:
Date: Thu Mar 08 10:26:05 2012
IP  : 1.2.3.4

Date template hits:
1 hit: Month Day Hour:Minute:Second
0 hit: Weekday Month Day Hour:Minute:Second Year
0 hit: Year/Month/Day Hour:Minute:Second
0 hit: Day/Month/Year:Hour:Minute:Second
0 hit: TAI64N
0 hit: Epoch

Benchmark. Executing 1000...
Performance
Avg: 0.07336878776550293 ms
Max: 0.13804435729980469 ms (Run 246)
Min: 0.068902969360351562 ms (Run 990)


J'espère donner suffisamment de données pour éclaircir la situation.

Merci encore pour l'aide
0
massi-85 Messages postés 311 Date d'inscription mercredi 2 novembre 2011 Statut Membre Dernière intervention 5 février 2014 74
9 mars 2012 à 12:19
J'peux savoir a quoi sa te sert de taper la commande : fail2ban-regex /var/logauth.log "Failed [-/\w]+ for .* from <HOST>" ?
0
massi-85 Messages postés 311 Date d'inscription mercredi 2 novembre 2011 Statut Membre Dernière intervention 5 février 2014 74
9 mars 2012 à 12:21
Mais moi y'a un truq que je comprend pas c'est le :

fail2ban-regex "Mar 8 10:26:05 de468 sshd[11335]: Failed password for root from 1.2.3.4 port XXXXXX ssh2" "Failed [-/\w]+ for .* from <HOST>"

1.2.3.4 port XXXXXXX .. a l'origine tu as une adresse IP et un port ici.
0
Steph_30 Messages postés 5 Date d'inscription vendredi 9 mars 2012 Statut Membre Dernière intervention 11 mars 2012
Modifié par Steph_30 le 9/03/2012 à 13:16
Hello,

Sur le site de fail2ban, (http://www.fail2ban.org/wiki/index.php/MANUAL_0_8#Testing) ils expliquent qu'on peut tester les configurations des filtres mis en place de plusieurs manières :
fail2ban-regex "chaine_a_tester" "expression reg"

et

fail2ban-regexp fichier "expression reg"

(il y a d'autres combinaisons)

Donc fail2ban-regex /var/logauth.log "Failed [-/\w]+ for .* from <HOST>" correspond à ce 2ème test (selon moi).
(en même temps, et au moment où j'écris, je me demande si ce 2ème cas n'est pas traité comme le premier, à savoir que la commande prend /var/logauth.log comme une chaine et non un fichier --> je vais vérifier)


Pour ta 2ème remarque, j'ai effectivement une adresse réelle à la place de 1.2.3.4 et un vrai numéro de port à la place de xxxx.
Je deviens un brin parano en ce moment, donc je les ai cachés .... ok, c'est un peu n'importe quoi.

Merci de ton aide

Stéphane
0
massi-85 Messages postés 311 Date d'inscription mercredi 2 novembre 2011 Statut Membre Dernière intervention 5 février 2014 74
9 mars 2012 à 14:35
ah oui d'accord. Cette ligne indique que l'adresse IP "1.2.3.4 " a essayer de se connecter avec l'utilisateur root mais c'est planter. Donc c'est normal ! Au bout de 3 fois cette adresse devrait être banni pendant un lapes de temps que tu as définie.

Après le test avec : fail2ban-regex /var/logauth.log "Failed [-/\w]+ for .* from <HOST> je ne le comprends pas trop.

essaye juste fail2ban-regex /var/logauth.log
0
Steph_30 Messages postés 5 Date d'inscription vendredi 9 mars 2012 Statut Membre Dernière intervention 11 mars 2012
9 mars 2012 à 14:54
Exact, l'utilisateur d'adresse IP 1.2.3.4 a tenté sa chance et a échoué, mais il a été filtré par l'expression régulière et donc il est repéré. Et comme tu dis, au bout de 3 fois (en fait 5), il est banni pendant 600 secondes. Ca permet d'éviter à des robots de venir scanner sans cesse un port avec un nouveau mot de passe.

Pour le test fail2ban-regex /var/logauth.log "Failed [-/\w]+ for .* from <HOST>
En fait, fail2ban-regex permet de tester si une expression régulière qu'on va utiliser pour le filtrage fonctionne.
Pour les phases de test, les dev de fail2ban préconisent de tester :

1 - une ligne du log (où il y a un accès refusé) avec l'expression régulière.
2 - Si ça marche, on peut tester le log entier en lui passant le fichier.

Mais, tout ça, c'est pour la version 0.8... et je suis avec la version 0.7.5 (je sais, je sais, j'aurais dû regarder, mais j'ai fait l'install avec aptitude et j'ai cru avoir la dernière version).
Sur les version 0.7.5, cette fonctionnalité n'existe pas (tester une expression régulière sur un fichier).

Par contre, il y a quand même un soucis car aucune adresse n'est repérée dans mon log. Or, j'ai à peu près 100 attaques dedans (c'est un peu la fête au niveau de mon serveur en ce moment).
Est ce que fail2ban ne s'occupe que des nouvelles entrées dans le log ou bien, il analyse tout le log ?

Bref, je nage en eaux très troubles.
Comment avoir plus d'information de la part de fail2ban ?

Merci de ton aide
0
massi-85 Messages postés 311 Date d'inscription mercredi 2 novembre 2011 Statut Membre Dernière intervention 5 février 2014 74
Modifié par massi-85 le 9/03/2012 à 15:12
Change ton port 22 dans la conf ssh et fail2ban.. sa va limiter l'attaque des robots !

Je sais pas vraiment comment marche fail2ban au niveaux des logs. A mon avis il fait un check des nouvelles entrées ! si la ligne apparaît 5 fois, boom, l'IP est banni. Si tu as été attaqué qu'une fois depuis c'est peut etre normal. Enfin je sais pas trop !
0
massi-85 Messages postés 311 Date d'inscription mercredi 2 novembre 2011 Statut Membre Dernière intervention 5 février 2014 74
9 mars 2012 à 15:32
une petite commande sympa aussi :

grep "failure" /var/log/auth.log

Tu veras qui sont bloquer.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Steph_30 Messages postés 5 Date d'inscription vendredi 9 mars 2012 Statut Membre Dernière intervention 11 mars 2012
9 mars 2012 à 15:54
Hello,

A priori, fail2ban scanne les fichiers qu'on lui donne et si une ligne du fichier remplit les conditions, l'IP est bannie (direct au niveau iptables).

Effectivement, aujourd'hui, c'est le calme plat au niveau des attaques (tant mieux), mais du coup, je ne peux pas voir les réactions de file2ban.

Je vais donc attendre en laissant ce post ouvert et je reviendrai pour donner des nouvelles.

Je note la commande qui va bien. Ca peut me permettre de récupérer les iP qui posent problème. A moi de les bannir ... à la main

Merci encore de ton aide
0
massi-85 Messages postés 311 Date d'inscription mercredi 2 novembre 2011 Statut Membre Dernière intervention 5 février 2014 74
9 mars 2012 à 16:17
Si tu veux je t'attaque pour faire le test ^^ :)

mais derien !
0
Steph_30 Messages postés 5 Date d'inscription vendredi 9 mars 2012 Statut Membre Dernière intervention 11 mars 2012
11 mars 2012 à 21:37
Aloa,

Juste une petite réponse pour te dire que ce n'est pas la peine de m'attaquer (mais ça aurait été une bonne idée pour faire les tests).

Résultats du Week end : plusieurs attaques mais à chaque fois, fail2ban a fonctionné. C'est à dire qu'après le 5ème essai des hackers, ils étaient banni du serveur. Efficace et assez rassurant.

Je suis absent cette semaine (sans connexion possible au net, d'où mon coup de speed vendredi dernier), mais je ferai une petite suite à ce post pour donner mes config. Ca pourra toujours servir à d'autre.

A plus donc
0
massi-85 Messages postés 311 Date d'inscription mercredi 2 novembre 2011 Statut Membre Dernière intervention 5 février 2014 74
12 mars 2012 à 10:25
C'est toujours un plaisir de parler avec des linuxiens ! ^^

Bon si ça marche t'en mieux pour toi !

A plus tard !
0
massi-85 Messages postés 311 Date d'inscription mercredi 2 novembre 2011 Statut Membre Dernière intervention 5 février 2014 74
10 avril 2012 à 12:32
Des nouvelles :) ?
0