kannel_passerellesms

11

Click here to load reader

Upload: octave-kouakou-hilaire

Post on 24-Jul-2015

168 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Kannel_passerelleSMS

Page 1 sur 11 – Version 1.0

Sécurité Informatique

Avertissements : Le contenu de ce document est sous licence GPL. Le document est librement diffusable dans le contexte de cette licence. Toute modification est encouragée et doit être signalée à olivier [chez] thebaud.com Les documents ou applications diffusées sur thebaud.com sont en l’état et sans aucune garantie ; les auteurs ne peuvent être tenus en aucun cas pour responsables d’une mauvaise utilisation (au sens légal comme au sens fonctionnel). Il appartient à l’utilisateur de prendre toutes les précautions d’usage avant tout test ou mise en exploitation des technologies présentées.

Objet : Passerelle SMS basée sur Kannel Date :

Version : 09/11/09 5.0

Description Mise en place d’une passerelle d’envoi de SMS à partir d’un téléphone mobile relié à l’ordinateur. Les moyens utilisés reviennent à un téléphone portable fonctionnel, un ordinateur, une distribution Linux (ici Fedora Core 11) et Kannel 1.4.3.

Prérequis

- Les explication suivantes sont faites sur une plate-forme Fedora Core 11

- Apache ou n’importe quel serveur web : facultatif (uniquement pour envoyer un sms depuis un formulaire html)

- un téléphone mobile (+ carte SIM) avec un câble de liaison série ou USB pour le relier à l’ordinateur

- Installez LIBXML2 et toutes ses dépendances….

Un petit test avant de commencer s’embourber 1. Connectez votre téléphone portable au port choisi (USB ou COMx).

Si le port est en USB (et que c’est le seul), le port Linux sera /dev/usb/tts/0 (ou /dev/ttyUSB0) sinon /dev/tts0 pour le port série COM1 et ainsi de suite…. Une façon simple de savoir quel port utiliser : ls –als /dev juste après avoir connecté votre téléphone et vous regardez quels ports ont l’heure la plus récente. Avec un Nokia E65 sur carte mère MSI K8, le port utilisé est /dev/ttyACM0

Page 2: Kannel_passerelleSMS

Page 2 sur 11 – Version 1.0

2. Installez Gnokii version 0.6.14-2 (http://www.gnokii.org/). Cet outils permet de dialoguer avec votre périphérique série (ou USB) comme un téléphone portable.

a. yum install gnokii b. modifiez le fichier /etc/gnokiirc (notamment le champ port

= /Dev/xx, model = AT, connection = serial). c. Lancez gnokii --identify . Vous devrez alors voir une config très détaillée de votre portable en retour (assurez-vous d’avoir le droit d’ouvrir ce port) …. … … … Fabricant: Nokia Modele : Nokia E65 Product name : Nokia E65 Revision : V 2.0615.30 Serial device: closing device

3. Passez à l’installation…

Installation La version présentée ici est 1.4.1 de Kannel dispo ici : yum install kannel ou sinon wget http://www.kannel.org/download/1.4.1/gateway-1.4.3. tar.gz Tar xzvf gateway-1.4.3.tar.gz Cd gateway-1.4.3.tar.gz ./configure touch .depend make .depend make make bindir=/usr/kannel install

Configuration des fichiers de configuration

Page 3: Kannel_passerelleSMS

Page 3 sur 11 – Version 1.0

Prenez comme exemple le fichier ./gateway-1.4.3/gw/smskannel.conf et copiez le dans /etc/kannel.conf Il va falloir désormais le modifer : 1 – Section générale avec les commentaires

# kannel configuration file – exemple du 8/11/2009 group = core admin-port = 13000 � port d’administration

admin-password = secretrw � mot de passe pour l’administration

status-password = secretor � mot de passe de visualisation de la config admin-deny-ip = "*.*.*.*" admin-allow-ip = "127.0.0.1" � seule adresse loopback autorisée à se connecter à l’interface d’admin smsbox-port = 13001 box-deny-ip = "*.*.*.*" box-allow-ip = "127.0.0.1;192.168.100.2;192.168.100 .5" wdp-interface-name = "*" log-file = "/var/log/kannel/bearerbox.log" access-log = "/var/kannel/access.log" � journalise les connexions à l’interface avec les paramètres envoyés store-file = "/var/kannel/store.log" log-level = 1

2 – Section du SMS BOX #--------------------------------------------- # SMSBOX SETUP # # Smsbox(es) do higher-level SMS handling after they have been received from # SMS centers by bearerbox, or before they are given to bearerbox for delivery group = smsbox bearerbox-host = 127.0.0.1 sendsms-port = 13013 global-sender = 13013 #sendsms-chars = "0123456789 +-" #log-file = "/tmp/smsbox.log" #log-level = 0 #access-log = "/tmp/access.log" 3 – Section des utilisateurs déclarés pour l’envoi de SMS #--------------------------------------------- # SEND-SMS USERS

Page 4: Kannel_passerelleSMS

Page 4 sur 11 – Version 1.0

# # These users are used when Kannel smsbox sendsms interface is used to # send PUSH sms messages, i.e. calling URL like # http://kannel.machine:13013/cgi-bin/sendsms?username=tester&password=foobar.. group = sendsms-user username = user1 password = toto #user-deny-ip = "" #user-allow-ip = "" 2 – Section du modem cf exemple de fichiers modem pour Nokia ci-dessous.

include = "/etc/modems.conf"

3 – Section du SMS Center (lien entre le modem et la boite à envoyer les sms)

# Definition du SMS Center - gateway group = smsc smsc = at modemtype = e65 device = /dev/ttyACM0 � port USB ou série déterminé via Gnokii speed = 19200 #pin = 0123 � code pin éventuel pour utiliser l’interface série/usb

4 – Section de l’interface d’envoi de SMS

# Definition de l interface d envoi des SMS group = smsbox sendsms-port = 13013 � port http utilisé pour l’envoi de SMS bearerbox-host = localhost global-sender = 13013 log-file = "/var/kannel/sms.log" � journalise les événements relatifs à l’exécution du process

5 – Section des utilisateurs déclarés pour l’envoi de SMS

# Utilisateurs autorises a envoyer des SMS group = sendsms-user username = user1 password = user1

Créez un répertoire dans /etc/kannel et mettez-y le fichier sous le nom

Page 5: Kannel_passerelleSMS

Page 5 sur 11 – Version 1.0

de kannel.conf (cf exemple Annexe A ou téléchargeable ici : http://www.e-watching.net/projets/kannel.tar ) Modifiez au moins sur le fichier ci-dessus les champs suivants : Device = encore une fois le périphérique (USB ou série) Pin = code pin de votre portable, si nécessaire Username et password = nom d’utilisateur et mot de passe requis pour l’envoi de sms Box-allow-ip et box-deny-ip = adresses ip qui seront acceptées ou refusées en connexion. Séparer les IP par un point-virgule. Les adresses IP explicitement autorisées prévalent sur les refus. Structure du fichier modems.conf # Modems configuration # # If modemtype=auto, try everyone and defaults to t his one group = modems id = generic name = "Generic Modem" group = modems id = nokiaphone name = "Nokia Phone" detect-string = "Nokia Mobile Phone" need-sleep = true keepalive-cmd = "AT+CBC;+CSQ" enable-mms = true group = modems id = e65 name = "Nokia E65" detect-string = "Nokia" init-string = "ATZ" need-sleep = true keepalive-cmd = "AT+CBC;+CSQ" enable-mms = true

Démarrage des programmes nécessaires Avant tout, testez progressivement le lancement des composants : /usr/local/sbin/bearerbox -v 1 /etc/kannel.conf & Si le démarrage se fait sans erreur [ERROR] alors tapez ensuite

Page 6: Kannel_passerelleSMS

Page 6 sur 11 – Version 1.0

/usr/local/sbin/smsbox -v 1 /etc/kannel.conf Si il n’y a toujours pas d’erreur, faites un test d’envoi de SMS depuis votre poste avec la commande de type (spécifiez votre propre numéro de mobile et adaptez les paramètres à votre configuration) Lynx http://192.168.100.5:13013/cgi-bin/sendsms?username=user1&password=user1&to=061234 5678&text=contenu_du_message1 Vous devriez avoir comme réponse positive : 0: Accepted for delivery En cas de problèmes : modifiez le paramètre –v 1 en –v 0 pour ces deux applis, le mode déboguage rendra votre dépannage plus facile. Sinon, -v 3 ne logue que les erreurs.

Utilisation L’administration se fait par le port spécifié dans le fichier kannel.conf soit via navigateur graphique soit par ligne de commande, par exemple : lynx -dump http://127.0.0.1:13000/restart pour redémarrer la passerelle L’envoi de SMS se fait à partir d’un navigateur web (ligne de commande ou graphique) : http://adresse_ip_du_serveur:port_sms/cgi-bin/ sendsms?username=utilisateur&password=mot_de_passe &to=téléphone_destinataire&text=contenu_du_message où : adresse_ip_du_serveur = adresse IP ou nom FQN du poste hébergeant Kannel port_sms = port TCP défini dans sms.conf, ligne sendsms-port (section SMSBOX SETUP) utilisateur = login autorisé à envoyer un SMS, défini dans sms.conf, ligne username (section SEND-SMS USERS) mot_de_passe = mot de passe défini dans la ligne password (section SEND-SMS USERS) téléphone_destinaire = c’est vous qui voyez. Contenu_du_message = encore à vous de voir.

Compléments Fichiers journaux

Page 7: Kannel_passerelleSMS

Page 7 sur 11 – Version 1.0

- Deux fichiers journaux sont générés dans /var/kannel (smsbox.log et kannel.log) et correspondent aux informations de fonctionnement (ou dysfonctionnement) des applications respectives smsbox et bearerbox. L’activation et l’emplacement de journaux est définie dans kannel.conf, lignes log-file des sections CORE et SMSBOX SETUP.

- Le fichier /var/kannel/access.log journalise tous les envois de SMS effectués avec l’ensemble des paramètres de l’URL ainsi que l’adresse IP du client. Chaque SMS envoyé génère cette entrée dans le fichier log : 2005-03-08 14:54:58 Sent SMS [SMSC:AT2[/dev/ttyUSB0]] [SVC:user1] [ACT:] [BINF:] [from:13013] [to:0617914509] [flags:-1:0:-1:-1:-1] [msg:6:essai1] [udh:0:]

Structure des SMS

- limités à 160 caractères - éviter les caractères exotiques -

Améliorations à envisager

• La première est de consulter la doc associée au produit, très riche.

• Utilisez un port HTTP/SSL plutôt que du simple http. • Voir les options de log dans une base SQL (pour

facturation, par exemple) • Lancer le processus sous l’identité d’un utilisateur protégé

avec les options en ligne de commande de lancement de bearerbox et smsbox.

• Démarrage automatique au lancement de Linux (mode 3 ou 5)

Annexes A – modèle de fichier de configuration principale : sms.conf # Fichier de configuration pour Kannel - 31/10/2008 # group = core admin-port = 13000 admin-password = secretrw status-password = secretro admin-deny-ip = "*.*.*.*"

Page 8: Kannel_passerelleSMS

Page 8 sur 11 – Version 1.0

admin-allow-ip = "127.0.0.1" smsbox-port = 13001 #wapbox-port = 13002 box-deny-ip = "*.*.*.*" box-allow-ip = "127.0.0.1;192.168.100.2;192.168.100.5" wdp-interface-name = "*" log-file = "/var/log/kannel/bearerbox.log" access-log = "/var/kannel/access.log" store-file = "/var/kannel/store.log" log-level = 1 # Definition du modem GSM group = modems id = e65 name = "Nokia E65" init-string = AT+CGDCONT=1 # Definition du SMS Center - gateway group = smsc smsc = at modemtype = e65 device = /dev/ttyACM0 speed = 19200 #pin = 0123 # Definition de l interface d envoi des SMS group = smsbox sendsms-port = 13013 bearerbox-host = localhost global-sender = 13013 log-file = "/var/kannel/sms.log" # Utilisateurs autorises a envoyer des SMS group = sendsms-user username = user1 password = user1 B – modèle de fichier des modems gsm : modems.conf # Modems configuration # # Example and default values

Page 9: Kannel_passerelleSMS

Page 9 sur 11 – Version 1.0

# # group = modems # id = "my-id" # name = "my-name" # detect-string = "MODEM" # detect-string2 = "" [Default] # init-string = "AT+CNMI=1,2,0,0,0" [Default] # speed = 9600 [Default] # enable-hwhs = "AT+IFC=2,2" [Default] # need-sleep = false [Default] # no-pin = false [Default] # no-smsc = false [Default] # sendline-sleep = 100 [Default, miliseconds] # keepalive-cmd = "AT" [Default] # broken = false [Default] # message-storage = "SM" # enable-mms = false [Default] # If modemtype=auto, try everyone and defaults to this one group = modems id = generic name = "Generic Modem" group = modems id = wavecom name = Wavecom detect-string = "WAVECOM" group = modems id = premicell name = Premicell detect-string = "PREMICEL" no-pin = true no-smsc = true group = modems id = siemens_tc35 name = "Siemens TC35" detect-string = "SIEMENS" detect-string2 = "TC35" init-string = "AT+CNMI=1,2,0,1,1" speed = 19200

Page 10: Kannel_passerelleSMS

Page 10 sur 11 – Version 1.0

enable-hwhs = "AT\\Q3" need-sleep = true group = modems id = siemens_m20 name = "Siemens M20" detect-string = "SIEMENS" detect-string2 = "M20" speed = 19200 enable-hwhs = "AT\\Q3" keepalive-cmd = "AT+CBC;+CSQ" need-sleep = true group = modems id = siemens_sl45 name = "Siemens SL45" detect-string = "SIEMENS" detect-string2 = "SL45" init-string = "AT+CNMI=1,2,2,2,1" keepalive-cmd = "AT+CBC;+CSQ" speed = 19200 enable-hwhs = "AT\\Q3" need-sleep = true message-storage = "SM" group = modems id = nokiaphone name = "Nokia Phone" detect-string = "Nokia Mobile Phone" need-sleep = true keepalive-cmd = "AT+CBC;+CSQ" enable-mms = true group = modems id = falcom name = "Falcom" detect-string = "Falcom" no-smsc = true group = modems id = ericsson_r520m name = "Ericsson R520m" detect-string = "R520m" init-string = "AT+CNMI=3,2,0,0"

Page 11: Kannel_passerelleSMS

Page 11 sur 11 – Version 1.0

group = modems id = ericsson_t68 name = "Ericsson T68" detect-string = "T68" init-string = "AT+CNMI=3,3" keepalive-cmd = "AT+CBC;+CSQ" broken = true group = modems id = alcatel name = "Alcatel" detect-string = "Alcatel" init-string = "AT+CNMI=3,2,0,0"