Installation of fail2ban for asterisk

Created on 110215 by Yannick Vaucher

Switzernet.com

 

1      Introdution. 1

2      Installation Debian. 1

3      Création d'un fichier de filtrage. 2

4      jail.conf 3

5      Modifier les format de date d'asterisk. 3

6      References. 3

 

1         Introduction

 

Nos serveurs se faisant constamment attaquer par des attaques de type brute force, nous avons décidé de mettre en place fail2ban pour le protocole SIP sur nos serveurs asterisk.

 

Ceci pour des raisons évidentes de sécurité mais également pour la qualité de notre système.

 

Par attaques de type brute force nous désignons les tentatives répétées d'entrer des mots de passe. Ceci dans le but de trouver le mot de passe correct pour prendre possession du compte SIP dans le cas présent.

 

Lors de ces attaques nos servers doivent alors gérer des milliers de requêtes en même temps. De l'ordre de 120 requêtes par secondes.

 

Il en résulte une forte sollicitation du CPU. Comme nous pouvons le voir dans le graphe suivant, des pics de 10 à 15 minutes utilisent parfois plus de 3 fois la charge CPU d'une utilisation moyenne.

 

Cela à pour incidence de diminuer la qualité des appels en surchargeant les serveurs.

 

2         Installation Debian

apt-get update

apt-get install fail2ban

3         Création d'un fichier de filtrage

 

Créer :

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

 

Et y insérer les définitions suivantes:

# Fail2Ban configuration file

#

#

# $Revision: 250 $

#

 

[INCLUDES]

 

# Read common prefixes. If any customizations available -- read them from

# common.local

#before = common.conf

 

 

[Definition]

 

#_daemon = asterisk

 

# 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 and is only an alias for

#          (?:::f{4,6}:)?(?P<host>\S+)

# Values:  TEXT

#

 

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>' - 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.* <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>.*

 

# Option:  ignoreregex

# Notes.:  regex to ignore. If this regex matches, the line is ignored.

# Values:  TEXT

#

ignoreregex =

4         jail.conf

 

Ajouter les règles pour asterisk à la fin du fichier /etc/fail2ban/jail.conf

 

Attention à bien définir le chemin de notre fichier de log : /var/log/asterisk.log

Définir également le sender afin d'identifier le serveur qui génère l'alerte.

 

Il est aussi important de paramétrer les paramètres suivants :

 

maxretry : Le nombre de tentative authorisée avant de bloquer l'IP

bantime : Le temps en seconde de la durée du banissement.

 

[asterisk-iptables]

 

enabled  = true

filter   = asterisk

action   = iptables-allports[name=ASTERISK, protocol=all]

           sendmail-whois[name=ASTERISK, dest=<alerts mail address>, sender=fail2ban@server]

logpath  = /var/log/asterisk.log

maxretry = num_of_retry

bantime = ban_time

5         Modifier le format de date d'asterisk

Modifier le format de date dans

/etc/asterisk/logger.conf

 

 

 

Exécuter

asterisk -rx "logger reload"

 

-r         Au lieu de lancer un nouveau processus Asterisk, essayer de se connecter au processus asterisk lancé et fournis l'interface pour le contrôler

-x         Executer une commande

 

 

6         Démarrer le service fail2ban

 

/etc/init.d/fail2ban start

7         Retirer une adresse IP de la liste de banissement

 

iptables -D fail2ban-ASTERISK -s xxx.xxx.xxx.xxx -j DROP

8         Références

Fail2Ban (with iptables) And Asterisk

http://www.voip-info.org/wiki/view/Fail2Ban+%28with+iptables%29+And+Asterisk