Protection asterisk avec fail2ban
Dans un précédent article j’ai présenté comment protéger son serveur des attaques bruteforce avec l’aide de fail2ban. Comme décrit dans cet article de nos jours, il est très important de se protéger de ce type d’attaque et c’est pourquoi dans ce billet je vais vous montrer comment protéger un serveur asterisk avec fail2ban en une dizaine de minutes au maximum.
1. Installation de fail2ban
Si vous n’avez pas fail2ban d’installé, passez voir l’article ici
2. Création du fichier filtre
Vous devez créer le fichier /etc/fail2ban/filter.d/asterisk.conf et le remplir avec ceci :
Pour des raisons de mauvais affichage, consultez le fichier texte disponible ici => asterisk.conf
Corrigé suite aux commentaires d’Emmanuel que je remercie de cette information 😉
3. Création de la prison (jail)
Éditez le fichier /etc/fail2ban/jail.conf et ajoutez ceci dans la liste des jails :
[asterisk-iptables] enabled = true filter = asterisk action = iptables-allports[name=ASTERISK, protocol=all] sendmail-whois[name=ASTERISK, dest=root, sender=fail2ban@example.org] logpath = /var/log/asterisk/messages maxretry = 5 bantime = 259200 |
4. Modification du logger d’asterisk
Vous devez modifier la configuration du logger d’asterisk pour des raisons de compatibilité de format de date, éditez le fichier /etc/asterisk/logger.conf et décommentez la ligne dateformat comme ceci :
[general] dateformat=%F %T |
Relancez le logger asterisk via la commande shell suivante :
asterisk -rx "logger reload" |
5. Recommandations
[nice_warning]Attention à ne pas vous bannir ainsi que les autres utilisateurs du système, je vous rapelle que pour la configuration donnée, une ip bannie par fail2ban est totalement bloquée sur tous les ports[/nice_warning]
6. Fin
Redémarrez fail2ban :
/etc/init.d/fail2ban restart |
Le tour est joué 🙂 Vous pouvez tester ca fonctionne 🙂
Bonsoir,
Erreur dans le failregex, la bonne ligne la suivante :
failregex = NOTICE.* .*: Registration from ‘.*’ failed for » – Wrong password
NOTICE.* .*: Registration from ‘.*’ failed for » – No matching peer found
NOTICE.* .*: Registration from ‘.*’ failed for » – Username/auth name mismatch
NOTICE.* .*: Registration from ‘.*’ failed for » – Device does not match ACL
NOTICE.* failed to authenticate as ‘.*’$
NOTICE.* .*: No registration for peer ‘.*’ \(from \)
NOTICE.* .*: Host failed MD5 authentication for ‘.*’ (.*)
NOTICE.* .*: Failed to authenticate user .*@.*
hum, votre form ne pas pas le « »
« symbole plus petit que » « symbole plus grand que »
je vais y arriver :
<
>
HOST
C’est la bonne,
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.* <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>.*
En effet il me manque bien le « balise inférieure » host « balise supérieure » (qui a été interprété par du HTML) lors de la migration du site, merci de la remarque, je corrige ceci de suite 😉
[…] fail2ban est une application qui inspecte les fichier de logs et grâce à des expression régulières de bannir les adresses qui attaque les services de vos machines. tr-s simple à mettre en place : Installation d’un serveur fail2ban => Article sur fail2ban Création d’un filtre pour asterisk => Article sur la protection asterisk avec fail2ban […]
Voici ma config:
failregex = NOTICE.* .*: Registration from ‘.*’ failed for ‘’ – Wrong password
NOTICE.* .*: Registration from ‘.*’ failed for ‘’ – No matching peer found
NOTICE.* .*: Registration from ‘.*’ failed for ‘’ – Username/auth name mismatch
NOTICE.* .*: Registration from ‘.*’ failed for ‘’ – Device does not match ACL
NOTICE.* failed to authenticate as ‘.*’$
NOTICE.* .*: No registration for peer ‘.*’ \(from \)
NOTICE.* .*: Host failed MD5 authentication for ‘.*’ (.*)
NOTICE.* .*: Failed to authenticate user .*@.*
NOTICE.*chan_sip.c.*Registration from .* failed for » – Wrong password
NOTICE.*chan_sip.c.*Registration from .* failed for » – No matching peer found
NOTICE.*chan_sip.c.*Registration from .* failed for » – Username/auth name mismatch
NOTICE.*chan_iax2.c.*register_verify: Host » did not provide proper plaintext password for.*
NOTICE.*chan_iax2.c.*register_verify: Host » failed MD5 authentication for .*
Et sa ban bien. 😉
Merci de ta participation macgyver79 😉