04 - Maintenance
1) Diagnostic et dépannage
Commandes de diagnostic Asterisk
|
Commande |
Usage |
|
asterisk -rx "pjsip show contacts" |
État des enregistrements : Avail/NonQual/Unreachable + RTT |
|
asterisk -rx "pjsip show endpoints" |
État global des endpoints configurés |
|
asterisk -rx "pjsip show endpoint 1000" |
Détail d'un endpoint spécifique |
|
asterisk -rx "core show channels" |
Appels actifs en cours |
|
asterisk -rx "dialplan show interne" |
Afficher le contexte du dial plan |
|
asterisk -rx "module reload res_pjsip.so" |
Recharger PJSIP à chaud |
|
asterisk -rx "dialplan reload" |
Recharger extensions.conf |
|
asterisk -rvvvv |
Console interactive avec niveau de verbosité 4 |
Activation des logs SIP et RTP
Depuis la console Asterisk (asterisk -rvvvv) :
pjsip set logger on ; Active les logs SIP complets (INVITE, OPTIONS, 200 OK...)
rtp set debug on ; Active les logs RTP (flux audio)
pjsip set logger off ; Désactive (important en prod, très verbeux)
rtp set debug off
Vérification réseau
# Vérifier qu'Asterisk écoute sur le bon port
sudo ss -ulnp | grep 5160
# Tester la connectivité vers les téléphones
ping -c 4 192.168.10.67 # Yealink T41P
ping -c 4 192.168.10.66 # Yealink T31P
# Vérifier les logs Asterisk
sudo tail -f /var/log/asterisk/full
sudo tail -f /var/log/asterisk/messages
Problème fréquent
|
Symptôme |
Cause probable |
Solution |
|
"Provisoirement indisponible" |
Contact en état NonQual — téléphone non qualifié |
Ajouter qualify_frequency=30 dans la section AOR. Vérifier DHCP/IP du téléphone. |
|
Pas de son (audio absent) |
external_signaling_address manquant → Asterisk annonce 127.0.0.1 |
Ajouter external_signaling_address et external_media_address dans le transport. Redémarrer Asterisk. |
|
Audio unidirectionnel |
direct_media=yes → bypass RTP échoue |
Ajouter direct_media=no dans chaque endpoint. |
|
Appel en absence sans sonnerie |
DND activé sur le téléphone destinataire |
Désactiver DND dans Features → Forward & DND → Etat NPD → "de". |
|
Téléphone non enregistré (croix rouge) |
Port SIP incorrect, mauvaise IP serveur, ou mot de passe erroné |
Vérifier la config du téléphone : IP Asterisk, port 5160, username/password. |
|
Contact Unavail après redémarrage VM |
Téléphone garde l'ancienne IP du serveur en cache |
Redémarrer le téléphone. Vérifier que la réservation DHCP d'Asterisk est correcte. |
|
Module reload sans effet sur le transport |
Le transport PJSIP ne se recharge pas à chaud |
sudo systemctl restart asterisk |
|
Appels impossibles, pas de connectivité VM |
VM attachée au mauvais bridge Proxmox |
Changer vmbr0 → vmbr1 dans les paramètres réseau de la VM Proxmox. |
2) Sécurité de l'infrastructure VoIP
Menaces courantes
|
Menace |
Description |
Impact |
|
Scan SIP (SIPVicious) |
Robots qui scannent le port 5060 à la recherche de serveurs Asterisk |
Tentatives d'enregistrement non autorisé |
|
Brute force |
Attaque par dictionnaire sur les credentials SIP |
Accès non autorisé, frais téléphoniques |
|
Toll fraud |
Utilisation du serveur pour passer des appels internationaux payants |
Factures exorbitantes |
|
Écoute RTP |
Capture des flux audio RTP sur le réseau |
Violation de la confidentialité |
|
Déni de service (DoS) |
Flood de paquets SIP pour saturer le serveur |
Interruption de service |
Mesures de sécurité recommandées
• (5060 → 5160 ou autre) pour réduire les scans automatisés.Changer le port SIP par défaut
• Minimum 16 caractères, mélange de lettres, chiffres et symboles.Mots de passe complexes
• Bloquer automatiquement les IPs effectuant trop de tentatives d'authentification.Fail2ban
• Utiliser les listes de contrôle d'accès du Cisco ISR pour n'autoriser le trafic SIP qu'en provenance du VLAN 20.ACL réseau
• Isoler les téléphones du reste du réseau — déjà en place dans ce projet.VLAN dédié
• Chiffrer le flux audio RTP avec SRTP pour les environnements sensibles.SRTP
• Modules Asterisk non utilisés (DAHDI, chan_skinny...) doivent être désactivés.Désactiver les services inutiles
Installation de Fail2ban pour Asterisk
sudo apt install -y fail2ban
# Créer /etc/fail2ban/jail.local
[asterisk]
enabled = true
port = 5160
filter = asterisk
logpath = /var/log/asterisk/full
maxretry = 5
bantime = 3600
sudo systemctl restart fail2ban
sudo fail2ban-client status asterisk
3) Supervision avec Zabbix
Éléments à superviser
|
Élément |
Méthode |
Seuil d'alerte |
|
Service Asterisk |
Check process "asterisk" |
Alerte si arrêté > 1 min |
|
Port 5160/UDP |
TCP/UDP check |
Alerte si port fermé |
|
Nombre d'appels actifs |
AMI ou script |
Alerte si > seuil configuré |
|
Enregistrements SIP |
Script pjsip show contacts |
Alerte si endpoint Unreachable |
|
CPU/RAM de la VM |
Agent Zabbix |
CPU > 80%, RAM > 85% |
|
Connectivité téléphones |
ICMP ping |
Alerte si téléphone injoignable |
|
Logs d'erreurs |
Log monitoring |
Alerte sur ERROR/WARNING répétés |
Script de supervision des contacts PJSIP
#!/bin/bash
# Vérifier que tous les postes sont enregistrés
CONTACTS=$(sudo asterisk -rx "pjsip show contacts" 2>/dev/null)
for POSTE in 1000 1001 1002; do
if echo "$CONTACTS" | grep -q "${POSTE}.*Avail"; then
echo "POSTE $POSTE : OK (Avail)"
else
echo "POSTE $POSTE : ALERTE (non disponible)"
# Envoyer une notification ici
fi
done