La détection d’intrusion illustrée

network-security-fingerSuite à mon précédent article sur la détection d’intrusion, je n’ai pas eu l’impression d’avoir été particulièrement clair et limpide. Je pense que le manque de clareté vient surtout du fait qu’il s’agissait d’un article plutôt théorique. Pour ce nouvel article, je vais donc essayer de me concentrer sur l’illustration pratique de la détection d’intrusion.

Fonctionnement global

Comme je l’ai expliqué précédemment, la détection d’intrusion a pour objectif de détecter les activités anormales sur les divers équipements informatiques. Elle permet donc une visibilité élargie sur les incidents de sécurité du réseau. Cette visibilité élargie provient de deux élements : la corrélation et l’analyse. La corrélation est la technique qui met en relation les remontées d’information de plusieurs équipements afin de trouver de similitudes. L’analyse est ce qui permet d’interpréter des remontées d’informations afin d’en tirer une conclusion intelligible. Ceci fera l’objet du second schéma. Ce premier schéma a pour objectif d’illustrer le fonctionnement global.

DetectionIntrusion

Sur ce schéma, on voit tout d’abord notre réseau « de base » symbolisé par la grande barre bleue. Sur ce réseau, nous avons nos serveurs / postes de travail connectés. En sortie de réseau, nous avons un firewall avec une patte vers Internet et une patte dans notre réseau. On va ensuite distinguer deux types de détection d’intrusion : la détection d’intrusion machine (HIDS pour Host Intrusion Detection System) et la détection d’intrusion réseau (NDIS pour Network Intrusion Detection System).

Afin de mettre en place la détection d’intrusion machine, il va être nécessaire d’installer une sonde sur chaque serveur ou équipement réseau que l’on souhaite inclure dans le système de détection d’intrusion. Ces sondes rempliront différentes fonctionnalités de récolte d’information et d’analyse primaire. Je ferais un article couvrant plus spécifiquement ce type de détection d’intrusion. On parlera donc de sonde HIDS. Les sondes peuvent être de différents types en fonction de ce que l’on souhaite faire et en fonction du SIM. Des exemples de sonde HIDS sont OSSEC, Samhain ou Tripwire.

Ensuite, afin de mettre en place la détection d’intrusion réseau, il va être nécessaire d’installer une sonde sur le réseau. Le raccordement de cette sonde diffère d’un système standard car par défaut elle ne recevrait que le trafic qui lui est destiné. Ainsi, elle n’aurait qu’une vue très réduite du réseau. Pour qu’une sonde NIDS soit efficace, il faut qu’elle reçoive la totalité du trafic du réseau. Cette fonctionnalité peut s’appeller « Port Mirroring » ou « Port monitoring ». La sonde effectuera une analyse primaire de tous les paquets qu’elle va recevoir. Un exemple de sonde NIDS est Snort.

Le résultat de l’analyse primaire effectuée par ces sondes sera ensuite envoyé au SIM (Security Information Management). Le SIM est l’élément qui va recevoir toutes les remontées d’informations des différentes sondes NIDS et HIDS. Il fera ensuite entrer en jeu la corrélation afin de pouvoir interpréter de manière plus globale ces informations ainsi que l’analyse de la globalité des informations. Il stockera ces informations en base de données afin de pouvoir créer un historique des événements réseau et de pouvoir retracer des incidents.

Analyse des remontées d’information

Je pense que le schéma de fonctionnement global a du clarifier le fonctionnement d’un système de détection d’intrusion d’un point de vue architectural. Je vais ensuite détailler le cheminement de l’analyse d’un événement de sécurité. Le schéma suivant prend pour exemple une tentative (certes légère) de bruteforce d’un serveur SSH.

DetectionIntrusionAnalyse

Les cylindres du bas représentent les différents fichiers de log qui peuvent se trouver sur une machine physique ou bien sur un équipement réseau.

On voit sur ce schéma que les fichiers de logs vont remonter des informations brutes qui correspondent à l’utilité qui est faite de l’application. Iptables va remonter un nombre de sessions TCP, auth va remonter une erreur dans un mot de passse et SSHD va remonter une erreur d’authentification. Le HIDS va récolter ces informations à travers la lecture continue des ces fichiers de logs et envoyer les informations au SIM. Le SIM va ensuite interpréter ces informations et en tirer une conclusion bien plus concrète que les messages de logs précédents.

En pratique, des remontées d’information aussi basiques seront interprétés directement par l’HIDS qui transmettra son interprétation au SIM. Le SIM a plus un rôle de corrélation de différentes sources et d’analyse d’événements conjoints qui mis bout à bout peuvent avoir une signification plus intéressante.

Au final, j’espère que cet article permettra de clarifier un peu plus les choses.

Définition et principe de la détection d’intrusion

network-security-fingerJe vais entamer une petite série d’articles sur la détection d’intrusion. Le but est de faire un tour d’horizon de cette technique et de présenter un début de mise oeuvre. Par la suite, je m’attarderais plus sur la détection d’intrusion machine (HIDS) car il s’agit du type que je connais le mieux.

Qu’est ce que la détection d’intrusion  ?

Tout d’abord, il est nécessaire d’éclaircir le principe de la détection d’intrusion avec de pouvoir s’attarder sur son intérêt. Voici la définition que propose Wikipedia de la détection d’intrusion :

Un système de détection d’intrusion (ou IDS : Intrusion Detection System) est un mécanisme destiné à repérer des activités anormales ou suspectes sur la cible analysée (un réseau ou un hôte). Il permet ainsi d’avoir une connaissance sur les tentatives réussies comme échouées des intrusions.

Cette définition est assez claire. La détection d’intrusion est donc un mécanisme actif qui se définit par l’objectif à atteindre. Les techniques de détection d’intrusion visent donc à atteindre cet objectif de détection des tentatives d’intrusion. Il existe une quantité indénombrable de techniques et de solutions de détection d’intrusion. Cependant, la détection d’intrusion n’est pas juste un phénomène de mode marketing mais répond à un besoin de visibilité sur les incidents de sécurité.

Qu’apporte la détection d’intrusion ?

Les équipements de sécurité et méthodes de sécurisation traditionnelles se limitaient à la simple remontée d’information et à un blocage selon des critères simplistes. Au niveau du réseau, cela se résume à l’ouverture et à la fermeture de ports de niveau 4 suivies d’une remontée sous forme de lignes de journalisation (lire log pour les anglophiles). Au niveau de chaque machine, cela se limitait à la remontée d’informations en local via un « syslog » (journal d’incident d’un système d’exploitation).

Ces mesures permettent d’avoir un minimum d’informations quant au comportement basique d’un système ou d’un réseau. Cela ne suffit cependant plus dans le monde informatique d’aujourd’hui. Croire que cela suffit semble être une erreur assez monumentale et l’actualité ne cesse de le démontrer … Le hack de twitter ou bien l’attaque DoS sur Twitter/Facebook n’auraient pas pu être empêché par du filtrage de niveau 4 ou bien un syslog local d’une machine.

La détection d’intrusion se définit souvent comme l’ensemble des techniques qui vont permettre d’aller au delà de ces moyens traditionnels de sécurisation.

La détection d’intrusion va s’attarder sur l’analyse des événements et la mise en perspective par rapport à une base de connaissances sur des attaques/menaces de sécurité connues. Au lieu de faire une simple remontée d’information, la détection d’intrusion va analyser les informations remontées afin de pouvoir émettre une suggestion sur le problème de sécurité rencontré au lieu de ne s’attacher qu’aux simples constatations. Cette composante pourrait se résumer en tant qu’analyse approfondie et interprétation des informations remontées.

La détection d’intrusion va également rassembler plusieurs sources d’informations pour pouvoir établir une corrélation. Un système de détection d’intrusion va rassembler les informations de nombreuses sources afin de pouvoir détecter des événements globaux. Par exemple, une attaque peut être détectée au niveau du réseau mais être cataloguée inefficace car elle n’a pas atteint les systèmes.

Au final, la détection d’intrusion est un terme assez générique pour désigner les méthodes modernes de remontée de d’analyse des informations relatives aux attaques/menaces de sécurité.

Le prochain article s’attardera sur la détection d’intrusion au niveau des machines et je parlerais surement d’OSSEC dans la foulée.

Suite : La détection d’intrusion illustrée

La paravirtualisation

tech-presentation-2Je vais continuer et finir la série d’articles présentant les différents types de virtualisation. J’ai déjà eu l’occasion de proposer une classification des différents types de virtualisation et de parler de la virtualisation totale ainsi que de la virtualisation matérielle assistée. Je vais continuer en vous parlant de paravirtualisation. J’ai déjà eu l’occasion d’évoquer la notion de paravirtualisation dans la présentation de Xen que j’avais faite il y a quelques temps.

L’idée de base des précédents types de virtualisation était de faire croire au système d’exploitation qu’il s’exécutait sur une machine physique alors que ce n’était pas le cas. Cette technique est la technique la plus évidente lorsqu’on essaye de virtualiser des systèmes d’exploitation principalement propriétaires ce qui est le cas de VMWare par exemple. Il s’agit d’une méthode qui permet de centraliser toutes les fonctionnalités de virtualisation dans un seul endroit, à savoir la couche de virtualisation. L’inconvénient de cette méthode est que la couche de virtualisation devient rapidement très lourde avec la quantité croissante du nombre de fonctionnalités à implémenter.

La paravirtualisation adopte une vision radicalement différente. Au lieu de chercher à faire croire aux systèmes d’exploitation qu’ils s’exécutent sur une machine physique, il est possible d’adapter le système d’exploitation à la couche de virtualisation. Ceci n’aurait bien évidemment pas été possible sans la présence de logiciels libres…

virtus

La paravirtualisation vise donc à modifier les systèmes d’exploitation pour communiquer avec un hyperviseur au lieu de communiquer avec une machine physique. Sur ce blog, je parlerais d’hyperviseur au sens de Xen ou d’Hyper-V. VMWare parle d’hyperviseur à tord et à travers mais il ne s’agit pas, selon moi, d’un vrai hyperviseur. En réalité, il s’agit d’un système d’exploitation hôte déguisé.

L’hyperviseur au sens de la paravirtualisation est en contact direct avec le matériel physique. Il est l’intermédiaire exclusif entre le matériel et les systèmes d’exploitation. Lorsqu’on se trouve donc dans un système de paravirtualisation, il n’y a plus de notion de système d’exploitation invité et de système d’exploitation hôte. Tous les systèmes d’exploitation sont virtualisés dans le sens où ils disposent d’un noyau adaptés à la couche de virtualisation. Tous les systèmes d’exploitation ne seront pas égaux pour autant, il est possible de donner des accès spécifiques à différents systèmes d’exploitation.

Les systèmes d’exploitation communiquent avec l’hyperviseur via des API de communication. Ces API de communication remplacent les traditionnels appels systèmes. Chaque couche de virtualisation dispose donc de sa propre API. Pour adapter un système d’exploitation à un hyperviseur, il faut donc intégrer son API au noyau. Cela explique en partie le passage en GPL des pilotes Hyper-V de Microsoft.

Au final, la paravirtualisation est une technique particulièrement innovante qui présente une approche plus efficace de la virtualisation. Les avantages de cette technique sont une perte de performance largement réduite par rapport à une virtualisation totale. L’inconvénient majeur est qu’il est nécessaire d’adapter les systèmes d’exploitation pour chaque couche de virtualisation. Afin de résoudre ce problème, il est possible de coupler paravirtualisation et virtualisation matérielle assistée comme dans Xen.

C’est parti pour la fibre optique !

Fibre OptiqueComme j’ai déjà eu l’occasion d’en parler dans un billet précédent, le logement dans lequel je vais déménager est couvert par la vraie fausse offre fibre optique de Numéricable.

La réputation particulièrement mauvaise de Numéricable n’est plus à faire. On peut remarquer qu’ils essayent de changer leur image de marque avec un changement de logo et des jolies affiches à coup de « Light Painting » . C’est certes appréciable mais la qualité d’un réseau ne change pas en fonction de la qualité des campagnes de communication. Leur publicité se base en large majorité sur le fait qu’ils sont « Leaders de la fibre optique » alors que les autres FAI ne parlent de la fibre optique que du bout des lèvres.

logo_numericable_petit

Il existe l’offre THD de Darty qui est également une vraie fausse offre fibre optique mais basée sur le réseau de Numéricable. La différence ? L’abonnement de base (Internet + Téléphonie) est plus cher de 5€/mois et il faut également ajouter les frais de location de la DartyBox qui sont de 3€/mois. Au total, 8€/mois pour être sur le même réseau qu’une offre équivalente. Darty souhaite miser sur la qualité du service après vente avec la Kangoo multicolore. Ca fait quand même un peu cher par mois surtout que j’ai quand même quelques connaissances en réseau.

P1779699A

C’est donc avec appréhension que je me suis lancé pour m’inscrire à la fibre optique Numéricable. Le site de Numéricable est très agréable à parcourir. C’est bourré de Flash et d’AJAX. Il est possible de composer son forfait Internet à la carte ce qui est appréciable. Je souhaitais juste une offre Internet sans option tout autour si cela me permettait de bénéficier d’un abonnement moins cher. Or, chez Numéricable l’abonnement Internet seul est plus cher qu’Internet + Téléphonie. Au total, 20€/mois. Il est possible d’ajouter un bouquet « standard » de chaines de télévision pour 10€/mois supplémentaire. En ce qui me concerne, ce n’est pas utile, je me contenterais de la TNT qui offre déjà suffisamment de poubelle. Il existe un bon nombre de bouquets télévision pour ceux que ca intéresse.

Une fois le pack choisi, on passe à l’inscription. Les formulaires avec de l’AJAX qui vérifient instantanément la saisie, c’est agréable et efficace. Premier soucis, une fois que vous avez rempli un certain nombre d’information, Numéricable vous montre un « récapitulatif » de votre offre. Dans la vue qui vous est présenté par défaut, tout semble clair. Cependant, si vous cliquez sur l’onglet « Détails », là c’est le drame. Il y a des cautions, des avances et des réductions à n’en plus finir. Je n’ai pas essayé de comprendre et me suis contenté de la vue simplifiée.

Une fois tous les formulaires d’inscription remplis, vous avez la possibilité de choisir le créneau d’installation de votre ligne cablée. C’est tout à fait appréciable. Les fournisseurs traditionnels travaillent sur le suspense. Vous devez attendre de recevoir un coup de fil du technicien qui passera en revue tous les horaires possibles…

J’ai donc mon rendez-vous avec le technicien Vendredi prochain. Le suspense reste cependant entier quant au débit effectif dont je vais pouvoir disposer et de la qualité de la connexion Internet.

Un site d’entraide informatique : ServerFault

Par le biais de ce billet, je vais faire une petite parenthèse sur un site qui m’a sauvé la vie bon nombre de fois. Si vous avez déjà été amené à utiliser des logiciels dans votre vie, vous avez sans aucun doute rencontré bon nombre de problèmes qui ne semblent pas exister. A ce stade, soit vous avez un contrat de maintenance ou quelque chose de cet ordre, soit vous vous débrouillez.

Pour vous débrouiller, vous cherchez dans Google qui vous renvoi différents forums. Le soucis des forums c’est qu’il est difficile de juger de la qualité de la réponse d’une personne. De plus, souvent les gens qui obtiennent une réponse n’indique pas si la réponse a fonctionné ou si ils ont utilisé cette réponse pour trouver la solution. Je pense que ceci est lié au fait qu’on est tellement content d’avoir trouvé la solution qu’on pense à autre chose que de prévenir les copains. De plus, les forums ont tendance à rapidement vous envoyer une réponse du type « RTFM » (Read The Fu***** Manual) ou « Utilise le moteur de recherche ! ». Vous allez donc utiliser le moteur de recherche mais vous allez pas trouver votre réponse, sinon ce ne serait pas rigolo..

logo

Vous l’aurez compris, je trouve que les forums ne constituent pas le modèle idéal pour la résolution des problèmes. Les gentils gens de ServerFault ont donc pensé à un nouveau modèle de site web plus Web 2.0.  Cette expression ne veut pas dire grand chose mais je pense que ca traduit l’idée du modèle collaboratif avec tout plein d’AJAX et le remplacement des répertoires par des tags.

ServerFault est donc un site d’entraide d’administration système et de réseau. Lorsqu’une personne poste une réponse, les gens lui répondent comme sur un forum classique. La différence est qu’au lieu de jauger la qualité d’une réponse d’une personne par le nombre de posts d’une personne, il y a un système de notation. Si vous passez par là et que la réponse vous semble pertinente et exacte, vous pourrez alors voter pour cette réponse. Si la réponse vous semble mauvaise ou hors, vous pourrez voter contre cette réponse. Au final, les différents votes attribuent des points de réputation aux différentes personnes.

serverfault

De plus, l’auteur a la possibilité de très simplement désigner une réponse en tant que réponse qui lui a permis de solutionner le problème. Ainsi les suivants pourront savoir quelle réponse a permis de solutionner le problème. La désignation par l’auteur de la question attribue également un certain nombre de points.

J’ai déjà eu l’occasion de tester longuement ce site en tant qu’aide et en tant que poseur de questions. Il est agréable d’aider les gens car on voit que cela est utile dans la mesure où sa réputation augmente. De plus, il est possible de discuter en aparté d’une réponse au lieu d’avoir un gros flux de message peu lisible. Lorsque vous posez des questions, même pointues, il est agréable d’avoir des gens qui connaissent bien le sujet qui vous répondent. Il est également très facile de trouver une précédente question par le biais du système des tags.

Le seul soucis est que ce site est en anglais… Il existe également une version dédiée à la programmation nommée StackOverflow.

Un client OpenVPN pour Mac OS : Viscosity

Je suis heureux possesseur d’un MacBook depuis Octobre dernier. Avant cet achat, j’avais toujours été un utilisateur de PC en tous genres sous Windows puis sous Linux. Le passage à Mac fait un certain changement. Je ne parlerais pas d’un gros changement car en tant qu’utilisateur de Linux, on retrouve assez vite des repères.

Qui dit PC portable, dit mobilité. Qui dit mobilité, dit hotspot wifi non sécurisés. Un portable est donc une machine particulièrement sensible en terme de confidentialité des données et des échanges avec Internet. Utiliser Internet sur un hotspot public est particulièrement peu sécurisé surtout dans les grands lieux publiques tels que les gares SNCF. Il est possible de récupérer tous types de données transmises en clair très simplement. De plus, lorsqu’on se retrouve sur un réseau convenablement protégé de nombreux ports sont bloqués et il peut s’appliquer un filtrage web.

L’utilisation d’OpenVPN s’impose donc. Je sais qu’il existe de nombreuses alternatives payantes telles que Cisco VPN ou autres mais pour une utilisation personnelle, c’est plutôt superflu. Lorsque mon PC portable était sous Ubuntu, l’utilisation d’OpenVPN était tout à fait simple. Il suffisait de refaire le fichier de configuration en se calquant sur le serveur et le tour était joué. Au passage, pour installer OpenVPN, je vous conseille de consulter le tutoriel de Smurf disponible sur le site de Gayux.

Pour les utilisateurs de MacOS, je vous recommande donc chaleureusement l’application Viscosity.

L’installation se fait de manière tout à fait simple. Il suffit d’ouvrir le .dmg et de cliquer sur l’installeur. Il vous demandera plusieurs fois votre mot de passe root afin de pouvoir installer les différents modules nécessaires à son bon fonctionnement.

La configuration se fait de manière très simple. L’intitulé des champs à renseigner ressemble beaucoup aux différentes directives du fichier de configuration d’OpenVPN. Vous avez également la possibilité de visionner le log de la connexion à votre serveur VPN afin de pouvoir détecter de potentielles erreurs.

gui1

Cette application vous permet également de visionner quelques statistiques d’utilisation de votre liaison VPN. C’est pas super utile mais non moins joli.

detailswin

Une petite icône présente sur la barre du haut de votre écran vous permet à tout moment d’avoir un aperçu de l’état de votre connexion et de passer d’un VPN à un autre.

screenshot1_small

Au final, Viscosity est une application très efficace qui fait ce qu’on lui demande de faire. En plus, elle est plutôt jolie. Vous pouvez l’essayer gratuitement pendant 30 jours et puis ensuite vous pourrez l’acheter pour la modique somme de 9 USD.