Projet

Général

Profil

Demande #1767

Blacklister des numéros de téléphones via le serveur Asterisk

Ajouté par Frédéric Couchet il y a presque 8 ans. Mis à jour il y a plus de 7 ans.

Statut:
Fermé
Priorité:
Normale
Assigné à:
Catégorie:
-
Version cible:
-
Début:
21/07/2016
Echéance:
% réalisé:

100%

Temps estimé:
Difficulté:
2 Facile

Description

Il serait utile d'avoir un mécanisme pour blacklister des numéros de téléphones via le serveur Asterisk.


Fichiers

tt-concat.gsm (31 ko) tt-concat.gsm Frédéric Couchet, 21/07/2016 17:40

Historique

#1

Mis à jour par Frédéric Couchet il y a presque 8 ans

La procédure suivante permet de mettre en place un liste noire de numéro qui lorsqu'ils appellent sont automatiquement
envoyés vers des messages vocaux disant que des fouines ont mangé notre système téléphonique puis des bruits de singes.

Sur scopolamine :

  1. cp /usr/share/asterisk/sounds/fr_CA_f_June/tt-weasels.gsm /usr/local/share/asterisk/sounds
    # cp /usr/share/asterisk/sounds/fr_CA_f_June/tt-monkeys.gsm /usr/local/share/asterisk/sounds

Sur scopolamine, ajouter dans /etc/asterisk/extentions.conf le contexte "blacklisted" :

[blacklisted]
exten => s,1,Answer()
exten => s,n,Wait(3)
exten => s,n,Playback(custom/tt-weasels)
exten => s,n,Playback(custom/tt-monkeys)
exten => s,n,Hangup()

Dans le traitement des appels entrants, ajouter une ligne au début (pour l'extension 80 par exemple) :

exten = 80,1,GotoIf(${DB_EXISTS(blacklist/${CALLERID})}?blacklisted,s,1)

Voici le diff avec la version précédente de extensions.conf pour l'extension 80 :

-exten = 80,1,Playback(custom/Message_repondeur_April_2)
+exten = 80,1,GotoIf(${DB_EXISTS(blacklist/${CALLERID})}?blacklisted,s,1)
+exten = 80,n,Playback(custom/Message_repondeur_April_2)

Pour la gestion des numéros à blacklister, en ligne de commande :

  1. asterisk -r

Pour lister les numéros blacklistés : database show blacklist

Pour blacklister un numéro : database put blacklist 0102030405 "Bingo loto"

Pour déblacklister un numéro : database del blacklist 0102030405

Pour retrouver un numéro appelant si nécessaire : /var/log/asterisk/cdr-csv/Master.csv

#2

Mis à jour par Frédéric Couchet il y a presque 8 ans

Les deux fichiers audio concaténés pour écouter le résultat lorsque le numéro blacklisté appelle.

#3

Mis à jour par Frédéric Couchet il y a presque 8 ans

J'ai modifié extensions.conf pour utiliser la bonne syntaxe (même si la précédente fonctionnait) et j'ai ajouté une extension (la 42) qui permet de diffuser en local le message :)

Pour cette modification du fichier :

diff --git a/asterisk/extensions.conf b/asterisk/extensions.conf
index 6293c71..f35b8a7 100644

#4

Mis à jour par Frédéric Couchet il y a presque 8 ans

Benjamin Renard a développé une interface web qui permet de gérer les numéros blacklistés, voir http://git.zionetrix.net/manage-asterisk-blacklist

#5

Mis à jour par Frédéric Couchet il y a plus de 7 ans

  • % réalisé changé de 0 à 70

Visiblement le blacklistage de numéros étrangers ne fonctionne pas.

#6

Mis à jour par Frédéric Couchet il y a plus de 7 ans

Benjamin Renard a activé les logs full et on a fait des tests d'appels depuis l'Italie.

Pour l'activation des logs full (et création du fichier /var/log/asterisk/full)

root@scopolamine:/etc/asterisk# git diff extensions.conf
diff --git a/asterisk/extensions.conf b/asterisk/extensions.conf
index 3ff0b67..50eef71 100644
--- a/asterisk/extensions.conf
+++ b/asterisk/extensions.conf

+exten = 80,1,Verbose(2,Check if number ${CDR} is blacklisted)

root@scopolamine:/etc/asterisk# git diff logger.conf
diff --git a/asterisk/logger.conf b/asterisk/logger.conf
index b6cb1f3..e939b98 100644
--- a/asterisk/logger.conf
+++ b/asterisk/logger.conf

-;full => notice,warning,error,debug,verbose,dtmf,fax
+full => notice,warning,error,debug,verbose,dtmf,fax

Le préfixe international du numéro n'est pas présent dans la variable CALLERID. Il faut donc se baser sur une autre variable qui a pour valeur le champ 2 du fichier CDR /var/log/asterisk/cdr-csv/Master.csv

Pour cela, modification de extensions.conf :

diff --git a/asterisk/extensions.conf b/asterisk/extensions.conf
index 3ff0b67..50eef71 100644
--- a/asterisk/extensions.conf
+++ b/asterisk/extensions.conf

-exten = 80,1,GotoIf(${DB_EXISTS(blacklist/${CALLERID})}?blacklisted,s,1)
+exten = 80,n,GotoIf(${DB_EXISTS(blacklist/${CDR})}?blacklisted,s,1)

#7

Mis à jour par Frédéric Couchet il y a plus de 7 ans

Au final, pour activer le blaclistage :

ajouter dans /etc/asterisk/extentions.conf le contexte "blacklisted" :

[blacklisted]
exten => s,1,Answer()
exten => s,n,Wait(3)
exten => s,n,Playback(custom/tt-weasels)
exten => s,n,Playback(custom/tt-monkeys)
exten => s,n,Hangup()

Dans le traitement des appels entrants, ajouter une ligne au début (pour l'extension 80 par exemple) :

exten = 80,1,GotoIf(${DB_EXISTS(blacklist/${CDR})}?blacklisted,s,1)

Pour la gestion des numéros à blacklister, en ligne de commande :

asterisk -r

Pour lister les numéros blacklistés : database show blacklist

Pour blacklister un numéro : database put blacklist 33123456789 "Spammeurs"

Pour déblacklister un numéro : database del blacklist 33123456789

Pour retrouver un numéro appelant si nécessaire : /var/log/asterisk/cdr-csv/Master.csv (le numéro est dans le champ n°2)

#8

Mis à jour par Frédéric Couchet il y a plus de 7 ans

  • Statut changé de Nouveau à Fermé
  • % réalisé changé de 70 à 100

Formats disponibles : Atom PDF