Optimiser protéger son serveur Fail2ban




Fail2Ban est un framework de prévention des intrusions écrit dans le langage de programmation Python. Il est capable de tourner sur les systèmes POSIX, c’est une interface à un système de contrôle de paquet ou de pare-feu installé localement (par exemple, iptables ou TCP Wrapper).

Fail2ban

Fail2ban est un script surveillant les accès réseau grâce aux logs des serveurs. Lorsqu’il détecte des erreurs d’authentification répétées, il prend des contre-mesures en bannissant l’adresse IP grâce à iptables. Cela permet d’éviter nombre d’attaques bruteforce et/ou par dictionnaire.

L’attaque par force brute est une méthode utilisée en cryptanalyse pour trouver un mot de passe ou une clé. Il s’agit de tester, une à une, toutes les combinaisons possibles. Cette méthode de recherche exhaustive ne réussit que dans les cas où le mot de passe cherché est constitué de peu de caractères.
Cette méthode est souvent combinée avec l’attaque par dictionnaire et par table arc-en-ciel pour obtenir de meilleurs résultats.

IPtable est installé par défaut sur les serveurs OVH mais pas Fail2ban. Voici comment l’installer :

dans putty sous root

Sous Debian : apt-get update && apt-get install fail2ban

Sous Gentoo/Release2 : # emerge fail2ban

puis installer whois

# emerge whois

Configuration # Fail2Ban configuration file

Fail2ban se configure grâce au fichier : /etc/fail2ban/jail.conf. On va donc éditer ce fichier, nous allons prendre l’exemple avec nano.

nano /etc/fail2ban/jail.conf

Ce fichier de configuration est composé de plusieurs parties, une définissant les paramètres communs (par défaut) et les autres concernant différentes composants de système.

Dans chaque partie du fichier, n’oubliez pas de modifier les adresses mail auxquelles vous souhaitez recevoir les alertes : dest=yourmail@mail.com ou dest=you@mail.com

et sender=fail2ban@mail.com

action = iptables[name=SSH, port=ssh, protocol=tcp]

sendmail-whois[name=SSH, dest=you@mail.com, sender=fail2ban@mail.com]
La partie [DEFAULT] définit donc les paramètres communs par défaut, ils peuvent donc être surchargés (re-définies) dans chaque partie spécifique. Les valeurs indiquées ici sont celles définies par défaut lors de l’installation.

Ignore les adresses IP suivantes des règles (les adresses sont séparées par des espaces)

ignoreip = 127.0.0.1

La durée du bannissement (en secondes)

bantime = 600

La durée pendant laquelle les tentatives de connexions ont lieu (en secondes)

findtime = 600

Le nombre de tentatives de connexions pendant la durée « findtime »

maxretry = 3

Chaque section se paramètre indépendamment, Vous pouvez activer chaque section au choix.

Les paramètres que vous allez retrouver sont :

Sert à activer (true) ou à désactiver (false) la section

enabled = false

Indique le type de filtrage à effectuer (ne pas toucher)

filter = sshd

Indique les actions à effectuer pour le section (ne pas toucher sauf expérimenté à l’exception du dest= et sender= )

action = …

Indique le fichier où doivent être placé les logs de la section. Si vous utilisez syslog-ng (par défaut sur une release 2 OVH) le chemin doit être celui dans le fichier de configuration /etc/syslog-ng/syslog-ng.conf : «  »

logpath = /var/log/….

Prenons l’exemple du serveur ssh.

SSH

[ssh-iptables]

enabled = true

filter = sshd

action = iptables[name=SSH, port=ssh, protocol=tcp]

sendmail-whois[name=SSH, dest=yourmail@mail.com]

logpath = /var/log/ssh.log

maxretry = 3

# durée du banissement

bantime = 600

Là par exemple je bannis au bout de 3 tentatives et pendant 10 minutes toute personne essayant de se connecter 3 fois sans y parvenir.

* enabled = true ==> On active cette fonctionnalité. (false à la place de true et cette fonctionnalité est désactivée).

* maxretry = 3 ==> Nombre de tentatives maximum avant d’être banni.

* bantime = 600 ==> Durée du ban en secondes (soit 10 minutes).

Il existe une duplication des logs ssh dans la release 2 OVH entre /home/log/ssh.log et /home/log/auth.log.

Vous pouvez alléger et spécifier ces logs en suivant le howto suivant : OVH 2:Syslog-ng ssh

Un autre exemple le serveur ftp :

FTP

Tout d’abord dire à notre serveur ftp (proftpd par défaut dans une gentoo release 2 ovh) de loguer les informations de connexion dans /var/log/auth.log

nano /etc/proftpd/proftpd.conf

Ajoutez à la fin du fichier :

SystemLog /var/log/auth.log

Redémarrez proftpd pour prendre en compte la modification :

/etc/init.d/proftpd restart

Puis activez la règle de la section proftpd de notre jail.conf :

nano /etc/fail2ban/jail.conf

Modifiez comme suit (vous pouvez adapter selon les explication ci-dessus) :

[proftpd-iptables]

enabled = true

filter = proftpd

action = iptables[name=ProFTPD, port=ftp, protocol=tcp]

sendmail-whois[name=ProFTPD, dest=yourmail@mail.com]

logpath = /var/log/auth.log

maxretry = 6

Courier Pop3

Vous pouvez ajouter cette section qui n’existe pas dans la configuration de base de Fail2ban (0.8.2) mais qui est implémenté.

Elle vous permettra de vous protéger également contre les tentatives de connexion sur les boites email via le prorocole Pop3.

Pour le paramètre logpath = /var/log/maillog

[courierpop3-iptables]

enabled = true

filter = courierlogin

backend = polling

action = iptables[name=courierpop3, port=pop3, protocol=tcp]

sendmail-whois[name=courierpop3, dest=yourmail@mail.com, sender=fail2ban@mail.com]

logpath = /var/log/mail.log

bantime = 600

findtime = 60

maxretry = 5

Remarques : sur une release2 installé le 08/01/2009, remplacer sendmail-whois par mail-whois sinon fail2ban ne démarrera pas.

action = iptables[name=courierpop3, port=pop3, protocol=tcp]

mail-whois[name=courierpop3, dest=yourmail@mail.com, sender=fail2ban@mail.com]

Courier Imap

Vous pouvez ajouter cette section qui n’existe pas dans la configuration de base de Fail2ban (0.8.2), son implémentation n’est pas encore stabilisé.

Elle vous permettra de vous protéger également contre les tentatives de connexion sur les boites emails via le protocole imap.

[courierimap-iptables]

enabled = true

filter = courierlogin

backend = polling

action = iptables[name=courierimap, port=imap, protocol=tcp]

sendmail-whois[name=courierpop3, dest=yourmail@mail.com, sender=fail2ban@mail.com]

logpath = /var/log/mail.log

bantime = 600

findtime = 60

maxretry = 5

Remarques : sur une release2 installé le 08/01/2009, remplacer sendmail-whois par mail-whois sinon fail2ban ne démarrera pas.

action = iptables[name=courierpop3, port=pop3, protocol=tcp]

mail-whois[name=courierpop3, dest=yourmail@mail.com, sender=fail2ban@mail.com]

Logrotate

Enfin pour éviter que le fichier de log de fail2ban « gonfle trop » vous pouvez faire tourner ces logs avec logrotate fourni sur votre distribution :

nano /etc/logrotate.d/fail2ban

Ajoutez :

/var/log/fail2ban.log {

weekly

rotate 7

missingok

compress

postrotate

/usr/bin/fail2ban-client reload 1>/dev/null || true

endscript

}

Ce qui fera que les fichiers de log de fail2ban seront permutés et compressés toutes les semaines et que seuls les 7 derniers fichiers journaux de fail2ban seront gardés.

Démarrage

Après toutes modifications sur le fichier de configuration, n’oubliez pas de redémarrer Fail2Ban pour les prendre en compte :

/etc/init.d/fail2ban restart

Pour démarrer automatiquement fail2ban avec le serveur (utile pour qu’il se lance au reboot par exempe) faites :

rc-update add fail2ban default

Quelques jours plus tard, vous aurez peut-être envie de voir le log de fail2ban pour essayer de voir si beaucoup d’IPs ont été bannies. Le log de fail2ban se trouve à cet endroit : /var/log/fail2ban.log

Si vous avez envie de le lire avec nano :

nano /var/log/fail2ban.log

*** Attention au reboot

Fail2ban risque de ne pas se lancer au reboot car le fichier /tmp/fail2ban.sock existe. Il suffit de l’effacer et de relancer fali2ban

référence : http://www.fail2ban.org/wiki/index.php/Main_Page





  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • Twitter
  • RSS

Si vous avez apprécié cet article, s’il vous plait, prenez le temps de laisser un commentaire
ou de souscrire au flux afin de recevoir les futurs articles directement dans votre lecteur de flux.

Une Réponse pour “Optimiser protéger son serveur Fail2ban”

  1. Dge-06 dit :

    Bonjour,

    merci pour ce tuto, cependant j’ai un petit problème sur les courriers pop et imap.

    J’ai ce message d’erreur :

    /etc/init.d/fail2ban restart
    Arrêt de fail2ban : [ OK ]
    Démarrage de fail2ban : ERROR Found no accessible config files for ‘filter.d/courierlogin’ under /etc/fail2ban
    ERROR No section: ‘Definition’
    ERROR No section: ‘Definition’
    ERROR Unable to read the filter
    ERROR Errors in jail ‘courierpop3-iptables’. Skipping…
    ERROR No section: ‘Definition’
    ERROR No section: ‘Definition’
    ERROR Unable to read the filter
    ERROR Errors in jail ‘courierimap-iptables’. Skipping…
    [ÉCHOUÉ]

    Une idée d’ou peut venir le problème ?

    Merci.

Laisser un Message