samedi 11 août 2018

COMMENT METTRE EN PLACE UN SYSTEME DE DETECTION D'INTRUSION (IDS) AVEC SYSTEME DE NOTIFICATION VIA SMS GRACE A SNORT ET TWILIO



Bonjour,

Aujourd’hui, je vais vous montrer comment configurer et installer un système de notification par SMS à l’aide de Twilio, pour informer une personne donnée, en occurrence un administrateur, lorsqu’une potentielle attaque survient sur le réseau. Mais tout d’abord,

Qu’est-ce que Twilio ?


Twilio est une plate-forme de communications via le Cloud qui permet de créer et de recevoir des appels téléphoniques par programmation et également d’envoyer et de recevoir des messages texte ou SMS, et même des MMS (Multimedia Messaging System) à l’aide de ses API (Application Programming Interface) et de ses Web services. Twilio utilise Amazon Web Services pour héberger son infrastructure de téléphonie et fournit une connectivité entre le réseau HTTP (HyperText Transfer Protocol) et le réseau téléphonique commuté (RTC) public grâce a ses API.

Maintenant que vous en savez un peu plus sur Twilio, nous allons entrer dans le vif du sujet.

Considérons le cas de figure suivant : 
L’objectif recherché ici est de mettre en place un IDS qui aura pour fonction en cas de tentative d’intrusion ou d’éventuelle attaque du réseau par un Hacker par exemple, d’alerter l’administrateur du système en lui envoyant un SMS qu’il pourra recevoir depuis son Téléphone portable ou depuis un Smartphone.

Tout premièrement, pour que notre système de détection d’intrusion soit parfaitement fonctionnel et opérationnel, il est primordial dans un premier temps d’installer et configurer Snort.

(Ps : tous les détails sur l’installation et la configuration de Snort sont décrites dans mon article sur le sujet ici)

Une fois Snort configuré et installé, nous pouvons à présent nous intéressé à Twilio ; pour se faire, nous nous rendons sur le site officiel de la plate-forme Twilio : https://www.twilio.com.


Ensuite, nous créons un compte utilisateur de test gratuit, en cliquant sur l’onglet « Sign up »

Puis, nous renseignons les informations personnelles de notre futur compte Twilio, comme : notre nom et prénom, suivi de notre adresse émail, nous devons également renseigner et confirmer le mot de passe de notre futur compte utilisateur ainsi que quelques autres informations supplémentaires. Une fois le formulaire d’inscription convenablement rempli, on se soumet à l’épreuve du Captcha question pour Twilio de se rassurer que ce n’est pas un robot qui veut se créer un compte (toujours aussi discriminé ces robots apparemment😄), et enfin, on clique sur le bouton « Get Started » pour poursuivre notre inscription. 
Après, nous devons entrer notre numéro de téléphone pour que Twilio nous envoi un code de vérification pour valider notre compte, une fois le numéro de téléphone renseigné, nous cliquons sur « Verify » ;
Une fois que nous avons cliqué sur « Verify », un SMS comportant un code de vérification nous est envoyé sur notre Smartphone.
Maintenant, nous saisissons le code de vérification reçu dans la zone de texte, puis nous cliquons sur le bouton « Submit », pour envoyer ou soumettre notre réponse :
Si le code correspond, alors, nous recevons un message de notification qui nous informe que notre identité a bien été vérifiée,
Ensuite, nous devons entrer le nom de notre projet, nous choisissons par exemple, SNORT_SMS, puis nous appuyons sur « Continue » pour finaliser notre inscription.
À présent, nous sommes sur le panneau de gestion de notre projet SNORT_SMS, nous allons débuter notre exploration en cliquant sur le bouton « Get Started »

Après avoir cliqué sur le bouton « Get Started », nous sommes dirigés sur la page suivante : 

Cette page nous donne les informations sur les options possibles réalisables à partir de notre compte d’essai, comme : la restriction sur l’envoi de messages possible que sur des numéros dont l’identité a été préalablement vérifiée, tous les SMS envoyés auront obligatoirement en entête la mention « Sent from a Twilio Trial Account », et aussi, que nous disposons de quinze dollars (15$) 😎, en fait, il s’agit de monnaie fictive juste pour se procurer des numéros de téléphone fictifs également pour pouvoir effectuer nos tests😜 ;

Nous poursuivons en cliquant sur le bouton « Get a number », pour justement nous créer un numéro de téléphone dit numéro de téléphone Twilio qui nous permettra par la suite de pouvoir envoyer des SMS.

Ensuite, une proposition de numéro de téléphone par défaut nous est faite ; on peut décider de choisir le numéro attribué en cliquant sur le bouton «Choose this Number», ou alors décider d’en choisir un autre en cliquant sur le lien « Search for a different number ».

(Ps: il faut également noter qu’avec les numéros de téléphone de compte d’essai Twilio, on peut sous certaines conditions : émettre et recevoir des appels, envoyer et recevoir des SMS, et enfin envoyer et recevoir également des MMS) 

Puis, nous devons choisir l’identifiant du pays du numéro que l’on souhaite utiliser parmi la liste des pays fournis, ensuite, nous renseignons un nombre que nous souhaitons que notre futur numéro de téléphone Twilio possède, après, on définit à quel emplacement on souhaiterait avoir le nombre renseigné au sein du futur numéro : soit au début du numéro, à n’importe quel endroit, ou alors à la fin du numéro ; dans notre cas, ici, nous avons indiqué que l’on souhaite que le nombre 232 se trouve à n’importe quelle position de notre futur numéro, et enfin nous cliquons sur le bouton «Search» pour avoir des propositions :

(Ps: pour un compte d’essai, la liste des identifiants de numéros est généralement limitée à une centaine de pays)

Maintenant, nous devons effectuer un choix entre les différents numéros de téléphone Twilio qui nous sont proposés, dans notre cas ici, nous optons pour le numéro « +1 (850) 888-4232 », et nous appuyons sur le bouton «Choose this Number» pour valider notre choix ;

(Ps: nous remarquons aussi ici que tous les numéros proposés possèdent bien le nombre 232 dans leur constitution, et aussi qu’il est possible d’effectuer et de recevoir des appels, des SMS et des MMS à partir de ces numéros) 

Après avoir appuyé sur le bouton « Choose this Number », une fenêtre de notification apparaît, nous informant que le numéro +18508884232 choisi précédemment a bien été validé comme notre nouveau numéro de téléphone Twilio et de ce fait est dès à présent fonctionnel. Il ne nous reste plus qu’à appuyer sur le bouton « Done » pour poursuivre. 


Nous pouvons maintenant effectuer quelques tests d’envoi de SMS à partir de notre nouveau numéro Twilio vers un numéro de notre choix, celui de notre administrateur par exemple, celui sur lequel on enverra plus tard nos futurs messages de notifications au cas où une intrusion surviendrait sur le réseau. Pour se faire, nous renseignons tout d’abord dans la zone de texte « TO » le numéro de téléphone vers lequel nous souhaitons envoyer le message (le récepteur), puis, dans la zone de texte « FROM », se trouve notre numéro de téléphone Twilio (l’émetteur) ; 

Ensuite, au niveau de la zone de texte « BODY », nous entrons le message que l’on souhaite transmettre, et enfin, nous appuyons sur le bouton « Make Request » pour envoyer le message : 

Une fois que nous avons appuyé sur le bouton « Make Request », au niveau de la zone « Response » nous avons le résultat de l’opération effectuée, en d’autres termes si l’opération a été un succès ou un échec, on en sera informé à cet endroit. Dans notre cas par exemple, lors de la tentative d’envoi de notre message de test de tout à l’heure, nous obtenons une erreur qui stipule que le SMS n’a pas pu être envoyé, car la permission pour émettre des SMS dans la région où se localise le numéro de réception indiqué dans la zone de texte « TO » n’a pas été activée. 

La zone « Response » est donc capable de nous avertir du bon déroulement d’une requête d’envoi de SMS vers un numéro donné, par exemple encore, si comme on le sait déjà avec un compte d’essai comme celui que nous utilisons en ce moment nous essayons d’envoyer un SMS à un numéro non identifié ou vérifié par Twilio, il est logique que nous recevons une erreur, car comme nous l’avons expliqué plus tôt avec un compte de test, on ne peut envoyer des SMS qu’à un numéro préalablement identifié ; raison pour laquelle sur l’image suivante, on obtient un échec lors de la tentative d’envoi d’un SMS sur ce numéro réel mais pourtant non connu par Twilio : 


Donc il ne faudra pas compter sur un compte Twilio d’essai pour envoyer des SMS a des personnes qui n’auront pas auparavant autorisé à Twilio de pouvoir le faire, mesure de sécurité bien sûr😉.

Pour revenir à notre erreur précédente sur le fait qu’il n’est pas possible d’envoyer des messages à un numéro dont la région n’est pas autorisée (par défaut) d’accès à la plate-forme Twilio, le seul moyen pour la corriger est d’ajouter la dite permission d’émission et réception de messages, ainsi que d’appels téléphoniques et de MMS vers le pays en question concerné et ceci est possible directement depuis notre compte d’essai. Pour se faire, la manœuvre consiste à se rendre au niveau du menu vertical de gauche dans l’option « Settings » de la rubrique « Programmable Messaging »

Puis choisir l’onglet « Geo Permissions » pour pouvoir ajouter ou désactiver des permissions vers des zones géographiques données, 

Ensuite, nous devons parcourir la liste des différents pays représentés enfin de trouver celui que l’on souhaite ajouter à notre liste de permission d’envoi et réception de SMS ;

Une fois que nous avons repéré le pays désiré,

Il ne nous reste plus qu’a cocher la case juste au début à gauche du pays en question et c’est tout ! Le tour est joué, à présent le pays du numéro de téléphone de notre administrateur à qui l’on souhaite envoyer des messages de notifications fait dorénavant partir de la liste des pays autorisés. 

Nous pouvons de nouveau faire un test pour vérifier que le message parvient bien à destination maintenant ; comme précédemment, après avoir saisi le message, on appuie sur le bouton « Make Request » pour le transmettre : 

Cette fois-ci, en place et lieu du message d’erreur que l’on avait précédemment, nous avons plutôt dans la zone « Response » un message d’exécution d’envoi de SMS réussi.

Et sur le Smartphone du récepteur a qui le SMS est destiné (notre administrateur), nous constatons bien l’arrivé du message👇 :
(Ps: nous remarquons bien sûr que le numéro de l’expéditeur du message est bel et bien notre numéro Twilio enregistré plus haut, et aussi que l’en-tête du message débute bien avec la mention « Sent from your Twilio trial account » tout simplement comme expliqué précédemment, tous les messages envoyés à partir d’un compte d’essai sur Twilio sont précédés par cette phrase)

Bien, maintenant que Snort a déjà été installé et configuré, et aussi que nous venons de créer un compte sur Twilio qui nous permet comme on vient de le vérifier d’envoyer des SMS vers le numéro de notre choix, nous devons à présent trouver un moyen de combiner les deux pour que lorsqu’une alerte importante (généralement de priorité 1) soit détecté depuis Snort, que l’administrateur en soit également averti automatiquement par SMS.

Pour cela, nous aurons besoin premièrement : d’un script qui permettra l’envoi automatique de messages vers notre administrateur en se connectant de manière autonome à notre compte Twilio, en d’autres termes, un script qui pourra en quelque sorte se connecter à notre place pour pouvoir envoyer des messages préconfigurés à cet effet en fonction de l’alerte détectée ; et deuxièmement, un outil qui est capable d’analyser, d’interpréter et de détecter les différentes alertes de Snort et aussi qui permettra de lancer l’exécution de notre script d’envoi de SMS une fois qu’une alerte de haute priorité sera détectée.

Le script que nous allons utiliser pour nous permettre d’alerter automatiquement via des SMS notre administrateur, se trouve à cette adresse https://github.com/goooroooX/texting il s’agit d’un script écrit par un développeur du nom de Dmitry Nikolaenya (merci à toi confrère👍) en langage Python qui permet d’envoyer des SMS grâce aux services de Twilio, c’est exactement le script dont on a besoin pour poursuivre dans notre tâche.

Ainsi, nous nous rendons donc à l’adresse où se trouve le script en question: 

Puis, nous cliquons sur le bouton « Clone or download », une petite fenêtre apparaît maintenant et il ne nous faut plus que cliquer sur le bouton « Download ZIP »

Enfin, il ne nous reste plus qu’à cliquer sur le bouton « OK », bien sûr après avoir sélectionné l’option « Enregistrer le fichier », pour lancer le téléchargement du fichier. 

Une fois le téléchargement achevé, nous retrouvons le fichier dans le dossier « Téléchargements » de notre dossier parent «Dossier personnel»

Ensuite, nous démarrons une console ou un terminal, puis après nous avoir placé dans le dossier qui contient notre fichier précédemment téléchargé, nous entrons la commande « unzip texting-master.zip » pour décompresser le fichier en question ; 

À présent, pour mettre en place l’architecture pour déployer notre script, nous entrons la série de commandes suivantes👇 : 


Maintenant, nous devons un petit peu modifier certaines variables du script pour obtenir le résultat souhaité. Pour cela, nous ouvrons le fichier «texting.py»


Puis, nous devons remplacer les informations contenues dans les variables: « PHONE_NUMBERS » qui est un tableau qui répertorie tous les numéros (récepteurs) que l’on souhaite contacter en cas d’alerte par exemple, «FROM » qui indique le numéro de l’expéditeur du message, et enfin les variables « SID » et « TOKEN » qui sont en quelques sortes des clés d’authentification (identifiants) qui permettent de caractériser de façon unique chaque compte Twilio ; par nos propres valeurs conformes à notre compte Twilio. 

Pour avoir ces informations, nous nous rendons dans la session de notre compte Twilio et nous cliquons sur l’icône de l’engrenage, ensuite, une petite fenêtre apparaît et on clique sur « Settings »

Il faut à présent pour avoir accès à nos paramètres, au préalable nous identifier en cliquant sur le bouton « Authenticate to make changes »


Ensuite, nous entrons le mot de passe de notre compte Twilio (celui renseigné au moment de la création du compte) et on clique sur le bouton «Verify» pour continuer. 

Les informations que nous recherchons dans le but de compléter notre script sont : le « ACCOUNT SID » et le « AUTH TOKEN »

Il ne nous reste plus qu’a copier les valeurs de nos clés d’authentification et d’aller les remplacer dans les variables concernées de notre script. 


Ainsi, au final dans notre fichier « texting.py » nous avons, dans la variable « PHONE_NUMBERS » le numéro de téléphone de notre administrateur qui doit recevoir le message de notification d’alerte en cas d’intrusion bien sûr, dans la variable « FROM », nous indiquons notre numéro de téléphone Twilio, et enfin dans « SID » et « TOKEN » nous renseignons respectivement les informations de notre « ACCOUNT SID » et de notre «AUTH TOKEN» récupérés précédemment depuis notre compte Twilio.

On a plus qu’à enregistrer le fichier et le fermer.

Notre script d’envoi de SMS étant achevé, il ne nous reste plus qu’à trouver l’outil qui nous permettra d’analyser, d’interpréter et de détecter les différentes alertes de Snort et surtout de lancer automatiquement l’exécution de notre script d’envoi de SMS une fois qu’une intrusion survient ; pas besoin de chercher bien longtemps, nous avons déjà eu à utiliser un outil du même genre dans cet article, il s’agit bien sûr de notre parseur de fichier journaux (logs) Swatch, ici, on va juste le modifier un petit peu pour qu’il réponde à nos attentes.

(Ps: dans notre cas, ici, cette fois-ci, nous n’allons pas utiliser Swatch pour envoyer des emails, mais plutôt pour qu’il exécute automatiquement le script « texting.py » pour l’envoi de SMS uniquement lorsqu’une alerte de haute importance est détectée, inutile de préciser qu’il faudra à nouveau s’assurer d’installer et configurer convenablement toutes les librairies nécessaires au bon fonctionnement de Swatch, tous les détails sont expliqués dans cet article, il faut noter également qu’il est bien sûr possible de configurer Swatch pour l’envoi en simultané de SMS et d’émail de notifications en même temps juste que dans notre cas, on souhaite se restreindre qu’aux SMS)

Pour se faire, nous nous rendons dans le répertoire de Swatch et nous ouvrons le fichier « .swatchrc »

Puis, nous ajoutons à notre fichier « .swatchrc » la ligne de commande suivante : « exec=/opt/texting/texting.py "NOTIFICATION SNORT" "ALERTE DE [PRIORITE : 1]" » ;

Maintenant que tous les éléments de notre système de détection d’intrusion et de notification d’alerte via SMS sont en place, nous pouvons démarrer Snort et Swatch avec respectivement les commandes : « snort –A full –l /var/log/snort –c /etc/snort/snort.conf » et « swatchdog –c .swatchrc –t /var/log/snort/alert »



Ainsi, lorsqu’un potentiel Hacker essai d’obtenir des informations sur les différents ordinateurs connectés sur notre réseau via un scan NMAP par exemple :

Snort qui analyse l’intégralité de notre réseau, détecte immédiatement qu’il y a un scan qui est en train d’être exécuté au sein du réseau et va l’inscrire dans son fichier journal d’alerte (« var/log/snort/alert »), en même temps, Swatch qui lui à son tour scrute en permanence le fichier journal d’alerte de Snort en question va repérer qu’il y a une alerte de priorité 1 de marquer et va lancer l’exécution du script de notification par SMS « texting.py »

Et notre administrateur reçoit un SMS lui informant que le réseau subit en ce moment probablement une intrusion enfin qu’il puisse mettre en place des solutions de sécurisation et de continuité d’activités.
En petit bonus, l’historique sur les différentes activités d’envoi de SMS par le script « texting.py » se trouve dans le fichier journal «alert_texting.log», lorsque nous consultons ce fichier, on constate bien que le SMS a bel et bien été envoyé. 

À présent, vous savez comment mettre en place un système de détection d’intrusion avec notification d’alerte via SMS grâce à l’IDS Snort, la plate-forme de services d’envoi et réception d’appel, SMS et MMS en ligne Twilio et enfin le parseur de log Swatch entièrement fonctionnel et qui vous permettra d’administrer à distance votre réseau puisque vous serez informé en temps réel dès lors qu’une éventuelle intrusion serait détecté au sein du réseau.

Merci d’avoir suivi le tutoriel jusqu’à la fin.

À très bientôt !!!