VOIP
Aide mémoire pour la messagerie vocale d’asterisk
0Lors de nos déploiements en téléphonie IP, nous offrons à nos clients un aide mémoire concernant l’utilisation de la messagerie vocale. Nous avons décidé de rendre publique une version générale de ce guide en format PDF. Pour l’instant, cet aide-mémoire n’est disponible qu’en français, si certains d’entre-vous sont intéressé par une version anglaise, il nous fera plaisir d’en faire une traduction et de le rendre disponible en ligne.
Modele – Guide Utilisateur Téléphonie IP
Nous espérons que ce guide vous sera utile et n’hésitez pas à me faire part de vos commentaires.
Publication de vulnérabilité : Elastix unsecure extensions configuration download (MEDS-2010-03)
0Bonjour,
Voici un rapport de vulnérabilité pour la distribution Elastix, ça fait très longtemps que le fournisseur a été notifié, mais le fournisseur désirait attendre la version 2.0 d’Elastix avant la publication de cette vulnérabilité ne soit publiée (le correctif a été intégré dans la revision 1550 d’Elastix). Pour ceux qui ont assisté à ma conférence à Confoo 2010, cette vulnérabilité avait servit d’exemple pour démontrer que parfois une simple erreur peut causer bien des problèmes !
Bonne lecture !
Advisory: MEDS-2010-03 - Elastix unsecure extensions configuration download Release Date: 2010-01-13 Author: Francois Harvey, gestion medsecure (francois.harvey at medsecure dot ca) - http://medsecure.ca Application: Elastix 1.6.X, Elastix 2 (Beta), Fixed in 2.0 Severity: High Risk: High Vendor Status: notified 2010-01-13, Fixed in the Last Release (http://elastix.svn.sourceforge.net/viewvc/elastix?view=revision&revision=1550) OVERVIEW "Elastix is an appliance software that integrates the best tools available for Asterisk-based PBXs into a single, easy-to-use interface. It also adds its own set of utilities and allows for the creation of third party modules to make it the best software package available for open source telephony." VULNERABILITY Elastix have a script to dump the extensions configuration (with both login & password), the script download_csv.php is not protected by ACL, so everybody can call this script. EXPLOIT https://x.x.x.x/modules/extensions_batch/libs/download_csv.php [^] ---------------------- Display Name,"User Extension","Direct DID","Outbound CID","Call Waiting","Secret","Voicemail Status","Voicemail Password","VM Email Address","VM Pager Email Address","VM Options","VM Email Attachment","VM Play CID","VM Play Envelope","VM Delete Vmail","Context" test,"123","","","DISABLED","my_secret_password","disable","","","","","no","no","no","no","from-internal" ---------------------- SOLUTION Fixed by the Elastix Team. (http://elastix.svn.sourceforge.net/viewvc/elastix?view=revision&revision=1550)
Identification de l’appelant (CID) à partir des données de vtiger CRM
0Chez gestion medsécure, nous utilisons le logiciel libre vtiger CRM pour assurer notre suivi de la clientèle. Vtiger CRM offre déja quelques options d’intégration avec la téléphonie IP, mais par défault, AsteriskNow/FreePBX ne peut pas automatiquement aller chercher les informations de l’appellant (CallerID) dans la base de données de vtiger CRM. Pour pallier à ce problème, il est possible de créer une vue regroupant les différents numéros de téléphones en respectant la logique suivante :
- Prioriser le numéro mobile du contact (préfixe : ‘CM:’);
- Pour les entreprises n’ayant qu’un contact associé, afficher son nom (‘CP:’);
- Pour les entreprises ayant plusieurs contacts, afficher le nom de l’entreprise (AP ou AO);
- En dernier recours, valider s’il s’agit d’un prospect (LM ou LP).
La première est de créer une vue que nous nommerons “vtiger_cid” à l’intérieur de la base de données utilisée par vtigerCRM qui sera utilisé pour nous retourner les noms (et leur préfixe) ainsi que les numéros normalisés et coupés à une longueur de 10 caractères.
CREATE VIEW vtiger_cid (name, number) AS
select concat('CM:',firstname,' ',lastname) as name, left(replace(replace(replace(replace(replace(mobile,' ',''),'(',''),')',''),'-',''),'.',''),10) as number from vtiger_contactdetails where mobile is not null and mobile <> ''
union
select concat('CP:',firstname,' ',lastname) as name, left(replace(replace(replace(replace(replace(phone,' ',''),'(',''),')',''),'-',''),'.',''),10) as number from vtiger_contactdetails where phone is not null and phone <> '' and accountid not in (select accountid from vtiger_contactdetails where accountid <> 0 group by accountid having count(accountid) > 1)
union
select concat('AP:',accountname) as name,left(replace(replace(replace(replace(replace(phone,' ',''),'(',''),')',''),'-',''),'.',''),10) as number from vtiger_account where phone is not null and phone <> ""
union
select concat('AO:',accountname) as name,left(replace(replace(replace(replace(replace(otherphone,' ',''),'(',''),')',''),'-',''),'.',''),10) as number from vtiger_account where otherphone is not null and otherphone <> "";
union select concat('LP:',firstname,' ',lastname) as name,left(replace(replace(replace(replace(replace(phone,' ',''),'(',''),')',''),'-',''),'.',''),10) as number from vtiger_leadaddress, vtiger_leaddetails where vtiger_leaddetails.leadid = vtiger_leadaddress.leadaddressid and phone is not null and phone <> ""
union select concat('LM:',firstname,' ',lastname) as name,left(replace(replace(replace(replace(replace(mobile,' ',''),'(',''),')',''),'-',''),'.',''),10) as number from vtiger_leadaddress, vtiger_leaddetails where vtiger_leaddetails.leadid = vtiger_leadaddress.leadaddressid and mobile is not null and phone <> ""
Par la suite, il suffit d’octroyé un accès en lecture à cette vue pour l’interroger à partir d’Asterisk similaire à la ligne de commandes suivante (qui devra être adapté en fonction du nom de la base de donnée, de l’adresse du serveur Asterisk et du mot de passe complexe que vous sélectionnerez. N’utilisez JAMAIS le compte utilisateur de votre installation de vtiger CRM mais créer un compte limité à cette consultation.
GRANT SELECT ON [Nom_de_la_base_de_donnée].vtiger_cid TO vtiger_cid@[Adresse du serveur Asterisk] IDENTIFIED BY 'Mot de Passe Complexe';
Et ajouter une nouvelle source de CID à votre environ de téléphonie IP sous FreePBX
La requête (Query) est la suivante, le [NUMBER] doit resté tel-quel car Asterisk le replacera par le numéro de l’appelant :
SELECT name FROM vtiger_cid WHERE number = '[NUMBER]'
Finalement il suffit d’indiquer à FreePBX d’utiliser cette nouvelle source d’appelant sur votre route.
Pour valider que tout fonctionne correctement, il est possible de regarder les traces d’exécutions
-- Executing [cidlookup_2@cidlookup:2] MYSQL("IAX2/XXXXXXXX-2658", "Query resultid 1 SELECT name FROM vtiger_cid WHERE number = 'XXXXXXXX'") in new stack
Maintenant sur vos téléphones l’information affichée sera cohérente avec celle saisie dans votre CRM et les informations affichées pourrait être modifiée selon leur pertinence et vos besoins.
Votre entreprise a un projet en téléphonie IP ou désire intégrer sa téléphonie avec des systèmes de gestion tel qu’un dossier patient informatisé ou un système de suivi de la clientèle ? N’hésitez pas à communiquer avec gestion medsécure qui saura vous conseiller dans votre projet.
Securité sous AsteriskNow
0Dans le monde de la téléphonie open source utilisant Asterisk, trois distributions majeures sont basées sur CentOS sont disponible : Trixbox, Elastix et AsteriskNow, j’ai plusieurs réserves envers la première (sécurité très discutable…), beaucoup moins pour la seconde et très peu pour la dernière qui est ma favorite dans le cadre de déploiement de téléphonie.
Malheureusement, favorite ne veut pas dire parfaite
Surtout lorsque l’aspect sécurité passe avant celui des fonctionnalités car un des problèmes des distributions linux spécialisés est le partage des configurations sensibles (mots de passe, utilisateur, etc.) de façon générique.
C’est dans ce contexte j’ai publié un script dont l’objectif est d’automatiser un premier niveau de sécurité sous la distribution AsteriskNow : Changement des mots de passes par défault, sécurité du mode console, déconnexion automatique, etc… Ce script ne remplace pas un durcissement en profondeur adapté au type de déploiement requis, mais offre un niveau de sécurité minimal.
Pour plus de détail, visitez la page du script en question : http://medsecure.ca/produits/asterisknow-hardeningbootstraping-script/ (anglais)
Migration trixbox vers asterisknow
0- Mise à jour d’AsteriskNow
yum update
- Migration a asterisk 1.6 :
# yum shell install asterisk16-core asterisk16 remove asterisk14 asterisk14-core ts solve ts run remove asterisk14-core ts solve ts run
- freepbx n’est pas à la même version mais la base de donnée peut-être exporté (mysqldump –all-databases > dump.sql) et réimporté sur asterisknow (mysql < dump.sql)
- Le provisionning n’est pas inclus dans AsteriskNow, ainsi /tftpboot doit être transférer et ftp/tftp installée
- Le répertoire de spool /var/spool/voicemail doit être transférer
- Le répertoire /etc/asterisk doit être transférer sur le nouveau serveur
- Mise a jour de amportal.conf :
- Freepbx utilise l’authentification fichier, alors qu’Asterisknow utilise db (AUTHTYPE=none versus database)
- Remplacer l’utilisateur “asteriskuser” par l’utilisateur “freepbx” d’AsteriskNow
- L’ensemble des modules qui sont “broken” doivent être désinstaller et réinstaller. Si des erreurs SQL surviennent, modifier le nouveau schéma de base de donnée.
- Mettre à jour les autres package jusqu’a 2.7
- Les trunks doivent être reconstruit manuellement et la configuraiton rechargée
- Redémarrer asterisk
amportal restart

