Carte des NRO Free

Une carte google maps permet de connaître l’emplacement et donc la liste des NRO actifs (vert) ou raccordés (rouge avec point noir) ou futurs (probables).

C’est par ici

Téléphone SIP fixe fonctionnant sous android : le GXP2200 de Grandstream

Grandstream commercialise un téléphone SIP fixe assez joli fonctionnant sous android 2.3, le GXP2200 . Il est équipé d’un écran tactile de 480×272 pixels, de 2 ports Gigabit dont 1 est POE, le bluetooth pour connecter un casque, d’un son HD …

Comme il fonctionne sous android, il est possible d’installer des applications android favorites comme Facebook, Skype … Je pense que c’est une excellente initiative, et permet d’apporter au téléphone fixe des applications complémentaires comme la synchronisation des contacts (pas forcément utiles).

Configurer correctement les appels anonymes avec un asterisk

Pour certaines raisons, vous souhaitez émettre des appels sans présenter votre numéro à partir de votre serveur asterisk. Mais, en jouant sur le CallerID, vos appels sont toujours rejetés. La cause est simple : pour des raisons de traçabilité réglementaire, il faut que l’opérateur puisse tracer l’origine de l’appel. Il faut donc que votre numéro soit correctement indiqué dans les entêtes SIP.

Voici le code à intégrer (et modifier selon votre dialplan) pour vous conformer à la règlementation et éviter d’être rejeté :

exten => _X.,1,NoOp(Mon appel avec mon numero masqué)
exten => _X.,n,SIPAddHeader(P-Asserted-Identity: <sip:${CALLERID(num)}@${SYSTEMNAME}>) ;RFC3323
exten => _X.,n,SIPAddHeader(P-Preferred-Identity: <sip:${CALLERID(num)}@${SYSTEMNAME}>) ;RFC3325
exten => _X.,n,SIPAddHeader(Privacy: id)
exten => _X.,n,Set(CALLERID(num)=)
exten => _X.,n,Set(CALLERID(name)=Anonymous)
exten => _X.,n,Dial ...
exten => _X.,n,Hangup

Configuration de fail2ban selon les différentes versions d’asterisk

Fail2ban est un outil indispensable à installer sur ses serveurs asterisk. Il permet de bloquer de manière proactive les tentatives de scan et ainsi de protéger vos deniers. Mais selon la version d’asterisk, le filtre doit être configurer de manière différente.

Il faut ajouter au fichier jail.conf la partie le code suivant :

[asterisk-iptables]
# if more than 4 attempts are made within 6 hours, ban for 24 hours
enabled  = true
filter   = asterisk
action   = iptables-allports[name=ASTERISK, protocol=all]
              sendmail[name=ASTERISK, dest=, sender=]
logpath  = /var/log/asterisk/messages
maxretry = 4
findtime = 21600
bantime = 86400

et créer le fichier suivant :

filter.d/asterisk.conf

et copier le code suivant pour asterisk 1.4 et 1.6 :

# Fail2Ban configuration file
#
#
# $Revision: 251 $
#

[INCLUDES]

# Read common prefixes. If any customizations available -- read them from
# common.local
before = common.conf

[Definition]

#_daemon = asterisk

# Option:  failregex
# Notes.:  regex to match the password failures messages in the logfile. The
#          host must be matched by a group named "host". The tag "<HOST>" can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P<host>S+)
# Values:  TEXT
#

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.* <HOST> failed to authenticate as '.*'$
            NOTICE.* .*: No registration for peer '.*' (from )
            NOTICE.* .*: Host  failed MD5 authentication for '.*' (.*)
            NOTICE.* .*: Registration from '.*' failed for '<HOST>' - Device does not match ACL
            NOTICE.* .*: Registration from '.*" .* failed for '<HOST>' - Peer is not supposed to register
            VERBOSE.*SIP/<HOST>-.*Received incoming SIP connection from unknown peer

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =

et pour la version 1.8, le code suivant :

# Fail2Ban configuration file
#
#
# $Revision: 251 $
#

[INCLUDES]

# Read common prefixes. If any customizations available -- read them from
# common.local
before = common.conf

[Definition]

#_daemon = asterisk

# Option:  failregex
# Notes.:  regex to match the password failures messages in the logfile. The
#          host must be matched by a group named "host". The tag "<HOST>" can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P<host>S+)
# Values:  TEXT
#
# Asterisk 1.8 uses Host:Port format which is reflected here

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>:.*' - 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.* .*: Registration from '.*' failed for '<HOST>:.*' - Peer is not supposed to register
            NOTICE.* .*: Registration from '.*' failed for '<HOST>:.*' - ACL error (permit/deny)
            NOTICE.* .*: Registration from '.*' failed for '<HOST>:.*' - Device does not match ACL
            NOTICE.* .*: Registration from '".*".*' failed for '<HOST>:.*' - No matching peer found
            NOTICE.* .*: Registration from '".*".*' failed for '<HOST>:.*' - Wrong password
            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>.*
            NOTICE.* .*: <HOST> failed to authenticate as '.*'
            NOTICE.* .*: <HOST> tried  to authenticate with nonexistent user '.*'
            VERBOSE.*SIP/<HOST>-.*Received incoming SIP connection from unknown peer

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =

Ce code fonctionne pour asterisk 10 et 11 même si je bosse sur une amélioration.

Sauvegarder automatiquement ses bases de données MySQL

Je ne vais pas rappeler le caractère indispensable des sauvegardes. Les bases de données ne doivent surtout pas être oubliées. Nous allons voir comment gérer de manière automatique les sauvegardes et garder un historique (c’est toujours utile, surtout en cas de corruption)

Pour cela, nous allons faire appel à AutoMySQLBackup .

Présentation :

AutoMySQLBackup permet de faire une sauvegarde via une tâche cron, chaque jour, chaque semaine et chaque mois. Il offre la possibilité de sauvegarder une ou plusieurs bases de données, d’exclure des tables (très utile quand vous avez des tables très volumineuses, mais que vous ne voulez garder que la conf. Par exemple, certaines tables de log).

Ce script peut vous envoyer un email de notification. Cet email pouvant contenir le fichier de backup en pièce attachée. Bien entendu, les sauvegardes sont compressées et peuvent être cryptées.

Il est possible de garder plusieurs sauvegardes, par exemple, les 5 dernières sauvegardes journalières, les 3 dernières sauvegardes hebdomadaires ou les 12 dernières sauvegardes mensuelles (pratique pour respecter certaines obligations d’archivage).

Enfin, et cette fonctionnalité n’est pas des moindres pour les grosses bases, il est possible d’effectuer des sauvegardes incrémentales.

Installation :

Il suffit de télécharger le dossier zippé sur sourceforge , d’effectuer une extraction. Je vous conseille bien entendu de lire le fichier README, puis lancer le script :

install.sh

Configuration :

La configuration s’effectue dans un seul fichier,

vi /etc/automysqlbackup/myserver.conf

Le contenu de ce fichier est bien commenté. Il suffit de compléter et de décommenter les bonnes lignes. Voici une extraction de la version originale sans les commentaires :

CONFIG_configfile="/etc/automysqlbackup/automysqlbackup.conf"
CONFIG_backup_dir='/var/backup/db'
CONFIG_do_monthly="01" ; le jour du backup mensuel, ini le 1er du mois
CONFIG_do_weekly="5" ; le jour du backup hebdo, ici le vendredi
CONFIG_rotation_daily=6
CONFIG_rotation_weekly=35 ; on garde les 5 dernières semaines de backup
CONFIG_rotation_monthly=150 ; on garde les 5 derniers mois
CONFIG_mysql_dump_usessl='yes'
CONFIG_mysql_dump_username='root'
CONFIG_mysql_dump_password=''
CONFIG_mysql_dump_host='localhost'
CONFIG_mysql_dump_socket=''
CONFIG_mysql_dump_create_database='no'
CONFIG_mysql_dump_use_separate_dirs='yes'
CONFIG_mysql_dump_compression='gzip'
CONFIG_mysql_dump_commcomp='no'
CONFIG_mysql_dump_latest='no'
CONFIG_mysql_dump_max_allowed_packet=''
CONFIG_db_names=()
CONFIG_db_month_names=()
CONFIG_db_exclude=( 'information_schema' )
CONFIG_mailcontent='log'
CONFIG_mail_maxattsize=4000
CONFIG_mail_address='root'
CONFIG_encrypt='no'
CONFIG_encrypt_password='password0123'

Les sauvegardes journalières sont gardées une semaine (ce n’est pas modifiable), les sauvegardes hebdomadaires 5 semaines et les sauvegardes mensuelles 5 mois. Vous pouvez modifier ces 2 paramètres (CONFIG_rotation_weekly et CONFIG_ROTATION_monthly). A notre, que la valeur doit être exprimée en jour, soit pour 5 semaines, il faut indiquer 35 !

Par défaut, le script va prendre les valeurs définies dans votre fichier, et dans le cas où il ne trouve pas la variable car vous ne l’avez pas définie, il va utiliser les valeurs par défaut comme définies dans ce fichier :

/etc/automysqlbackup/automysqlbackup.conf

Si un paramètre vous pose question, n’hésitez pas à poser une question en commentaire.

Après avoir configurer votre fichier aux petits oignons, vous allez créer le fichier suivant :

/etc/cron.daily/runmysqlbackup

Vous copiez le code suivant :

#!/bin/sh

/usr/local/bin/automysqlbackup -bc "/etc/automysqlbackup/myserver.conf"

chown root.root /var/backup/db* -R
find /var/backup/db* -type f -exec chmod 400 {} ;
find /var/backup/db* -type d -exec chmod 700 {} ;

Ensuite, il faut mettre les bons droits et rendre le fichier exécutable.

Le répertoire de sauvegarde par défaut se situe dans :

/var/backup/db

Vous y trouverez une arborescence claire :

  • daily : sauvegardes journalières
  • fullschema : sauvegardes complètes
  • latest : dernières sauvegardes
  • monthly : sauvegardes mensuelles
  • status : les résultats de l’execution du script
  • tmp : fichiers temporaires
  • weekly : sauvegardes hebdomadaires

Un autre élément très intéressant, c’est la possibilité de lancer des commandes avant et après l’exécution du script. Cela permet par exemple d’exécuter suite à la sauvegarde, un script copiant dans un autre lieu votre précieux backup.

Modifier la configuration de apache et php pour donner le moins d’informations possibles aux outils de scans

Toute mission de Pentest commence par la collecte d’informations. Pour un serveur web, en plus des informations de bases, les informations des versions installées vont permettre d’effectuer des recherches dans les bases de vulnérabilités, puis de chercher des exploits afin de les exploiter.

apache

On va modifier le fichier /etc/apache2/conf.d/security (sous debian) et modifier les paramètres suivants :

ServerSignature Off
ServerTokens Prod
TraceEnable Off

Puis on redémarre apache.

Php

Il faut modifier le fichier le fichier /etc/php5/apache2/php.ini

expose_php = Off

Ensuite, il ne vous reste plus qu’à relancer un scan afin de vérifier que les modifications ont bien été prises en compte.

Cahier de test de l’interconnexion SIP

La FFTélécoms publie un cahier de test et une fiche de profil SIP pour aider les opérateurs à valider l’interconnexion entre eux.

  • – Cahier de test : documents fournissant le cahier des charges des tests à effectuer entre opérateurs pour valider l’interconnexion entre eux (V1.0 pour SIP)
  • – Profil SIP : mise à jour de la spécification du profil pour mise en cohérence avec le cahier de tests (V1.1)
Je ne peux que louer cette initiative, car on voit parfois des interprétations très personnelles des normes SIP.
Vous pouvez télécharger les documents ci-dessous :

Engagements volontaires souscrits par les operateurs mobiles depuis 2010

Engagements-volontaires-souscrits-par-les-operateurs-mobiles-depuis-2010.png

Je vous partage un tableau récapitulant les engagements volontaires que les opérateurs mobiles ont pris vis à vis de l’ARCEP.

Ces engagements concernent à la fois les réseaux 3G et 4G.

MVNE : Mobile Virtual Network Enabler – Quels sont les acteurs en France

On entend beaucoup parler de termes MVNO et MVNE. Quel est la différence ? Que propose un MVNE ? Qui sont-ils ?

Nous allons aborder des différents points dans cet article.

Quelle est la différence entre un MVNO et un MVNE ?

Définition d’un MVNO :

Ce sont des opérateurs mobiles virtuels qui ne disposent pas de leur propre réseau radio (les MVNO ne disposent pas de ressources en fréquences) et qui utilisent celui de l’un des opérateurs d’infractructures mobiles (Bouygues Télécom, Free, Orange et SFR). Pour fournir le service mobile au client final, ils utilisent le réseau radio d’un opérateur mobile de réseau.

Définition d’un MVNE :

MVNE signifie Mobile Virtual Network Enabler. Il s’agit d’un opérateur proposant à des MVNO l’accès à un ensemble de services ou d’équipements nécessaires à l’activité d’opérateur mobile.

Que propose un MVNE ?

Le système d’informations mobile est très complexe notament pour les éléments de facturation issues du roaming où les données mettent parfois plusieurs mois à remonter. Ils mettent à disposition de leurs clients un système d’informations optimisé qui permet aux nouveaux opérateurs de gagner un temps précieux.

Dans certains cas, ils mettent aussi des services d’infrastructure à disposition, comme la messagerie vocale, les serveurs SMS …

Les clients opérateurs MVNO n’ont plus à leur charge que la dimension commerciale et marketing en délégant toute la gestion technique à un tiers de confiance.

Quels sont les différents MVNE ?

La liste est assez restreinte : des sociétés qualifiées  » d’agrégateurs » se positionnent comme intermédiaires entre les opérateurs de réseau et les MVNO, à l’image de Transatel, Sisteer, Extelia ou plus récemment Alphalink. Ce dernier est un nouvel arrivant sur le marché de la mobilité, et d’après mes informations, ses services mobiles ne sont toujours pas encore en production que ce soit en direct (via Dimension Télécom) soit via d’éventuels partenaires.

PfSense : exporter la configuration client OpenVPN

Présentation de PFSense

PFSense est une appliance de sécurité réputée que j’apprécie tout particulièrement. PFSense permet, entre autres fonctions, de jouer le rôle de serveur VPN (IPSEC, PPTP, L2TP et OPENVPN).

Choix du serveur VPN

Je conseille d’utiliser OpenVPN de part sa simplicité (versus IPSEC), sa possibilité de fonctionner un peu n’importe où (même via des réseaux très strict, il suffit de bien configurer les ports) et sa sécurité (versus PPTP et L2TP). Par contre, l’intégration de la configuration pour les utilisateurs mobiles n’est pas toujours simple, notament face à la multitude des systèmes d’exploitations.

Configuration des terminaux

Vous trouverez, grâce à la vivante communauté de PFSense, un package facilitant les exports de configuration, que ce soit vers les ordinateurs sous windows, Linux et MacOSX, mais aussi vers les terminaux mobiles et tablettes comme Android et IOS ( une application Openvpn pour IOS est disponible sur le store US depuis quelques semaines. Peut-être bientôt en Europe, ainsi plus besoin de rooter son idevice afin de profiter d’OpenVPN).

Client Android

Je peux vous conseiller un client Android de qualité qui ne nécessite pas de rooter votre terminal. Il s’agit de FeatVPN . Une version est disponible sur le google store, mais il est recommandé d’installer la version disponible sur leur site web. Faites bien attention de choisir le bon apk selon votre version d’Android.

Procédure d’installation

Apres avoir téléchargé la configuration pour votre utilisateur sous Android sur votre ordinateur via l’interface web de PFSense, il faut copier ce fichier sur la carte SD de votre téléphone ou tablette.

Ensuite, il faut lancer votre FeatVPN, sélectionner « Tunnels », puis le bouton « Add », aller dans la partie « Configuration » et cliquer sur « Load ». Il faut ensuite choisir le fichier que nous venons de copier sur la carte SD. La configuration se fait tout seul. Je vous conseille fortement de ne pas stocker votre mot de passe sur votre terminal Android, car en cas de perte ou de vol, votre réseau sera accessible le temps que vous révoquiez le certificat utilisateur.

Conclusion

Plus de raison de ne plus sécuriser l’accès à votre infrastructure loin de vos bases, PFSense et OpenVPN vous apportent une solution fiable, performante et pérenne.