Asterisk – Fail 2 Ban

Fail 2 Ban est un outil propre aux systèmes Linux, permettant de se protéger contre les attaques de brute force ayant pour but de permettre à un attaquant de s’authentifier.

Il est possible de configurer Fail2Ban pour qu’il protège Asterisk.

 

1) Fonctionnement

 

Fail2Ban n’est donc pas un outil propre à Asterisk.

Il est utilisé pour se protéger contre les attaques de brute force d’authentification (SSH, Apache, FTP, etc…).

 

Dans le cas d’Asterisk, Fail2Ban va analyser les logs d’Asterisk, à la recherche de tentatives de connexions échouées.

 

Si Fail2Ban détecte plus d’un certain nombre de connexions échouées, il va bloquer l’IP source du client qui tente de se connecter.

Le blocage se fait à l’aide d’une règle IP table.

 

Il est bien entendu possible de paramétrer le nombre de connexion menant à un blocage.

De même qu’il est possible de paramétrer le temps de blocage, ou l’intervalle de temps de recherche de Fail2Ban.

Par exemple : bloquer un client pendant 1h après 5 tentatives d’authentifications manquées en 10 mins.

 

La configuration va se faire dans les deux fichiers suivants :

  • /etc/fail2ban/filter.d/asterisk.conf
  • /etc/fail2ban/jail.conf

 

De plus, le fichier de log d’Asterisk sera utilisé pour chercher les tentatives de connexion.

 

Le fichier asterisk.conf correspond au filtre de Fail2Ban pour Asterisk. Il permet de définir les logs qui correspondent à des erreurs de connexion.

Le fichier jail.conf permet de dire à Fail2Ban d’analyser le fichier de log d’Asterisk à l’aide des filtres définis dans asterisk.conf.

 

2) Configuration

 

Tout d’abord, il nous faut installer Fail2Ban.

Pour cela, entrer la commande suivante :

apt-get install fail2ban

 

Puis démarrer Fail2Ban.

/etc/init.d/fail2ban start

 

Afin de ne pas vous bloquer vous-même, vous pouvez mettre votre IP (ou une autre) en liste blanche.

Pour cela, éditer le fichier jail.conf, et ajouter votre IP dans ingnoreip.

Dans /etc/fail2ban/jail.conf

[DEFAULT]
ignoreip = 127.0.0.1  192.168.1.200

 

Ensuite, il faut modifier le format de date des logs d’Asterisk.

Dans le fichier /etc/asterisk/logger.conf, documenter la ligne :

;dateformat=%F %T

Ainsi, Asterisk utilisera le format suivant pour les logs :

yyyy-mm-dd HH:MM:SS

 

Puis redémarrer Asterisk.

asterisk -rvv
logger reload

 

A présent, nous pouvons créer le filtre Fail2Ban pour Asterisk.

 

Le filtre est à créer dans le fichier /etc/fail2ban/filter.d/asterisk.conf.

[INCLUDES]

[Definition]
failregex = NOTICE.* .*: Registration from '.*' failed for '<HOST>:.*' - Wrong password
        NOTICE.* .*: Registration from '.*' failed for '<HOST>:.*' - No matching peer found
        NOTICE.* .*: Registration from '.*' failed for '<HOST>:.*' - No matching peer found
        NOTICE.* .*: Registration from '.*' failed for '<HOST>:.*' - Username/auth name mismatch
        NOTICE.* .*: Registration from '.*' failed for '<HOST>:.*' - Device does not match ACL
        NOTICE.* .*: Registration from '.*' failed for '<HOST>:.*' - Peer is not supposed to register
        NOTICE.* .*: Registration from '.*' failed for '<HOST>:.*' - ACL error (permit/deny)
        NOTICE.* .*: Registration from '.*' failed for '<HOST>:.*' - Device does not match ACL
        NOTICE.* .*: Registration from '\".*\".*' failed for '<HOST>:.*' - No matching peer found
        NOTICE.* .*: Registration from '\".*\".*' failed for '<HOST>:.*' - Wrong password
        NOTICE.* <HOST> failed to authenticate as '.*'$
        NOTICE.* .*: No registration for peer '.*' \(from <HOST>\)
        NOTICE.* .*: Host <HOST> failed MD5 authentication for '.*' (.*)
        NOTICE.* .*: Failed to authenticate user .*@<HOST>.*
        NOTICE.* .*: <HOST> failed to authenticate as '.*'
        NOTICE.* .*: <HOST> tried to authenticate with nonexistent user '.*'
        VERBOSE.*SIP/<HOST>-.*Received incoming SIP connection from unknown peer

ignoreregex =

 

Il faut maintenant créer la prison.

Celle-ci a pour but de faire le lien entre le filtre et le fichier de log. C’est aussi elle qui définit les paramètres de blocage.

 

Dans le fichier /etc/fail2ban/jail.conf, ajouter la section suivante :

[asterisk-iptables]

enabled  = true
filter   = asterisk
action   = iptables-allports[name=ASTERISK, protocol=all]

logpath  = /var/log/asterisk/messages
maxretry = 5
bantime = 3600
findtime = 120

 

Cette prison définie un maximum de 5 tentatives manquées dans l’espace de 2 minutes. Au-delà, l’utilisateur est bloqué pour 1 heure.

Libre à vous de personnaliser ces paramètres.

 

Nous pouvons à présent relancer Fail2Ban puis faire un test.

/etc/init.d/fail2ban restart

 

Pour tester Fail2Ban sur Asterisk, entrer la commande suivante :

fail2ban-regex /var/log/asterisk/messages /etc/fail2ban/filter.d/asterisk.conf

 

Cela va demander à Fail2Ban d’analyser le fichier de log, pour voir si le filtre détecte des erreurs de d’authentification.

Parmi les résultats, vous retrouverez la partie suivante, qui vous indiquera les erreurs d’authentification détectées :

Test Fail2Ban

Après une erreur d’authentification, vous pourrez voire le compteur augmenter.

 

Si les tests sont concluants, c’est que Fail2Ban est en mesure de protéger votre serveur Asterisk contre le Bruteforce.

 

Tagués avec :
Publié dans Sécurité
Un commentaire pour “Asterisk – Fail 2 Ban
  1. Jean-Dominique dit :

    Merci.
    Je viens de mettre en place. Si cela marche comme annoncé, cela va me résoudre bien des problèmes de tentatives de piratage.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Le temps imparti est dépassé. Merci de saisir de nouveau le CAPTCHA.