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.

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.

La véritable intégration de la virtualisation dans le réseau

tech-presentation-2J’ai déjà eu l’occasion de parler à travers différents articles de virtualisation de systèmes d’exploitation. Je vais bien entendu continuer cette série d’articles afin de faire le tour de tous les types majeurs de virtualisation cependant je souhaiterais faire une petite parenthèse. Cet article fait suite à une démonstration technologique à laquelle j’ai pu assister dans le cadre de mon stage.

La virtualisation est une technique qui met à mal les configurations et la conception traditionnelle du réseau. Traditionnellement, derrière un port d’un équipement réseau se trouve une machine. Sur cette machine on retrouve une adresse mac et un adresse IP. La virtualisation chamboule cette convention. On se retrouve rapidement à avoir un nombre important de d’adresses mac et d’adresses IP derrière un même port physique. De plus, traditionnellement un port sur lequel on branche une machine est un port en mode « access » en langage Cisco (non propagation des étiquettes de VLAN) alors qu’avec la virtualisation ces ports vont devoir se trouver en mode « trunk » (propagation des étiquettes de VLAN).

Les choses se compliquent de manière significative dès qu’on commence à insérer la notion de migration de machines virtuelles. Traditionnellement, un déplacement de machine nécessite le déplacement d’un technicien et la reconfiguration des équipements. Avec la virtualisation, la migration de machines virtuelles se fait en deux clics à distance et ne doit pas nécessiter l’intervention d’une personne sur site. Ce qui change fondamentalement, c’est qu’on va devoir adapter la configuration du réseau à la volée en fonction de changements applicatifs.

Le réseau est habitué à s’adapter à des changements au niveau 3 du modèle OSI avec les nombreux protocoles et algorithmes de routage. Le réseau est capable de s’adapter tant bien que mal aux changements de topologie de niveau 2 avec des technologies telles que le Spanning Tree. Cependant, il n’a pas du tout l’habitude de s’adapter à des changements applicatifs. Or dans le cas de la migration de machines virtuelles, il va falloir qu’il le fasse et qu’il le fasse vite et bien.

La virtualisation va donc s’interfacer avec le réseau pour pouvoir le commander et le faire s’adapter en fonction des migrations de machines virtuelles. L’interfaçage avec une interface de configuration du réseau sera donc indispensable. La mise en place d’un équipement réseau (virtuel ou physique peu importe) pour coordonner ces modifications et modifier les topologies va également être nécessaire.

En termes de fonctionnalités, chaque machine virtuelle va avoir son propre port virtuelle sur lequel il sera possible d’associer des configurations qui s’attribuent traditionnellement aux ports de switchs ou de routeur. L’équipement réseau virtuel pourra être capable de servir de routeur, d’IDS ou même de firewall applicatif. La gestion du réseau sera centralisé car il est indispensable de pouvoir gérer tous les équipements réseau d’un seul emplacement afin d’avoir une harmonie.

Vous allez me dire que tout ceci est bien beau et bien sympa, et vous aurez bien raison. Cependant sans implémentation pratique cela ne servirait pas à grand chose. Il n’existe, hélas, aucune implémentation libre de ce type d’application mais il en existe cependant des implémentations propriétaires. J’ai nommé Cisco Nexus 1000v mais qui n’est disponible que pour VMWare. Selon certaines informations, Citrix serait également en train de travailler sur une implémentation open source d’un telle application ce qui serait une avancée majeure pour la virtualisation open source ! De plus, la plateforme Cisco Nexus 1000v semble être prévue pour être exécutée sur plusieurs hyperviseurs étant donné qu’il est possible de spécifier le type d’hyperviseur. Aujourd’hui, seul VMWare fonctionne mais pourquoi pas Xen demain ?

Ca, c’est le futur de la virtualisation ! Et ca fait plaisir !

Les ingrédients du réseau local idéal

stepfinal2Comme je l’ai indiqué dans un précédent billet, je vais déménager dans une zone couverte par l’offre « fibre optique » de Numéricable. Il va être nécessaire de prévoir un réseau local afin de pouvoir utiliser au mieux cette connexion. Mon objectif ici est de proposer une configuration réseau pour un public plutôt geek passionné de logiciels libres. Cela dépassera donc largement le cadre d’un réseau local « standard ».

Le but

Dans mon cas et je pense ne pas être le seul, le but d’un réseau local est de pouvoir s’amuser. Il s’agit en quelque sorte d’un bac à sable avec lequel on peut faire tout et n’importe quoi. J’y ferais sans aucun doute des choses fortement inutiles mais tout autant indispensables et amusantes.

Revenons aux choses plus concrètes tout de même. Tout d’abord, le premier but d’un réseau local est de partager une connexion Internet haut débit (100/5 Mbit/s dans mon cas) vers plusieurs équipements. Le partage de connexion se fera via un support câblé et un support sans-fil (le Wifi). Ce réseau implémentera les deux. Si je suis de bonne humeur, je ferais même un réseau wifi supplémentaire fortement restreint pour n’importe qui passant dans le coin. Ensuite, il va falloir pouvoir mettre des serveurs de sorte à fournir différents services aux ordinateurs sur ce réseau local. Des exemples de services sont un intranet, un serveur FTP, un serveur OpenVPN, de la téléphonie sur IP. Il va falloir également prévoir un firewall pour pouvoir filtrer la connexion Internet au mieux et assurer une qualité de service pour tout le monde.

Le matériel

Une fois qu’on a décidé des fonctionnalités du réseau, il va falloir se doter de matériel. Le premier équipement que l’on pense à acheter lorsqu’on crée un réseau local c’est un switch (lire commutateur pour les anglophobes). Cet équipement va permettre d’interconnecter les équipements à haute vitesse au niveau liaison de données du modèle OSI. Dans le cas de mon réseau local j’ai choisi un Cisco Catalyst 2950 doté de 24 ports 10/100. Je l’ai acheté sur Ebay pour 50€ donc ca reste plutôt raisonnable. Il existe des versions avec des ports d’uplinks GBIC ou giga mais ces versions sont légèrement plus couteuses. L’avantage de se fournir un switch Cisco de ce type est qu’on peut être sûr de sa fiabilité et qu’il dispose d’une multitude de paramétrages avec lesquelles il sera possible de jouer.

Cisco2950

Ensuite, vu qu’on a décidé que notre réseau local ferait un partage de connexion sans-fil, il va falloir trouver une borne wifi. Les box des fournisseurs d’accès font systématiquement office de borne d’accès wifi cependant vu qu’il s’agit d’un réseau local de geek, nous nous en contenterons pas. J’ai choisi un borne Cisco Aironet 1100. Je l’ai achetée 30€ sur Ebay. Cette borne nous donne la possibilité de créer plusieurs réseaux wifi sur la même borne ce qui serait idéal pour notre réseau d’invité. De plus, elle est capable de choisir le canal le moins encombré. Tout comme le 2950, il s’agit d’un équipement Cisco qui permettra donc de jouer avec pleins d’options. Un autre choix aurait pu être une borne wifi Linksys capable de supporter OpenWRT ou DD-WRT afin de disposer également de nombreuses options de configuration.

Aironet1100

Il ne nous manque plus qu’un équipement pour pouvoir créer notre réseau local idéal, le firewall. En ce qui concerne la partie applicative, il s’agira de Pfsense dont j’ai déjà parlé dans un billet précédent. Cette distribution est tout simplement génial et va permettre d’ajouter de nombreuses fonctionnalités au réseau local. En ce qui concerne la partie matérielle, un ordinateur de récupération suffira amplement. Dans mon cas, une machine à base d’AthlonXP 1800+ fera l’affaire sans problème.

Pfsense : FreeBSD mais en bien

Maintenant que nous avons signé pour l’appartement en zone de desserte de l’offre fibre optique de Numéricable, il va falloir concevoir un réseau local digne de ce nom et digne de ce débit. Je vais donc vous présenter sur les blogs les différents éléments qui constitueront mon futur réseau local. Le premier élément que je vais vous présenter est Pfsense.

pfsense-logo

Pfsense est une distribution basée sur FreeBSD. Son objectif est de proposer une distribution orientée réseau disposant de la puissance de FreeBSD mais de la simplicité d’une interface web. Autant vous dire que Pfsense atteint parfaitement cet objectif. La liste de fonctionnalités de Pfsense est tout simplement impressionante.

Dans le cas d’un réseau local simple, Pfsense peut être installé soit sur un PC standard soit sur un plateforme embarquée. Pour effectuer l’installation sur une plateforme embarquée, des images à copier sur des cartes mémoires sont disponibles sur le site. La différence entre la version standard et la version embarquée c’est que la version embarquée ne supporte pas l’ajout de « packages ». Les packages sont des applications que l’on peut rajouter pour ajouter ajouter des fonctionnalités. L’installation sur une plateforme standard se fait par le biais d’un CD.

dashboard

Tout d’abord, cette distribution assure les fonctionnalités standards d’un firewall qu’on trouve n’importe où dans la nature. Elle assure tous les types de NAT à l’exception du NAT-T (NAT Transversal). Elle assure le filtrage « stateful » selon un grand nombre de critères (adresse niveau 3 et 4, système d’exploitation,  …) ainsi que la création d’alias pour simplifier vos règles de filtrage. Elle assure les services réseau classiques (DHCP, DNS, NTP). Vous aurez également à votre disposition tous les graphs que vous pouviez imaginer.

Ensuite, elle assure des fonctionnalités plus avancées mais avec toujours autant de simplicité. A partir d’une carte wifi (Atheros de préférence bien sur), Pfsense vous crée un point d’accès wifi avec chiffrement et authentification. En activant une option supplémentaire, vous pouvez avoir un portail captif qui s’authentifie soit contre une base Radius soit contre une base locale. Vous avez également la possibilité de mettre en place tous genres de VPN que ce soit de l’OpenVPN ou de l’IPsec. Vous pouvez également rajouter de la redondance dans votre installation avec le protocole CARP qui est un équivalent du VRRP Cisco. Je pense que ca fera un peu beaucoup pour mon réseau ! Et j’allais oublier, cette distribution est capable d’assurer le routage avec des protocoles tels que OSPF, RIP et BGP.

Au final, cette distribution dispose d’une liste de fonctionnalités très fournie et accessibles très simplement. J’ai eu l’occasion de déployer un firewall Pfsense sur un réseau publique disposant d’une connexion directe vers Internet en 100Mbit/s symétrique. Nous dépassions systématiquement les 70.000 sessions TCP en cours et le firewall n’a jamais faiblit alors que le matériel sous-jacent n’était qu’un Celeron 3Ghz.

Fibre optique ? Oui mais …

Fibre OptiqueVu que je serais en stage à partir du 1er Juillet (vacances d’été de 5 jours, ca fait light), je vais retourner sur Paris pour 6 mois pour vivre avec ma fiancée. Nous habitons actuellement à St Denis dans le 93 (Neuf Trois wesh gros !) mais nous prévoyons de déménager à Courbevoie. Courbevoie ?! Ca sent… *sniff* *sniff* la fibre optique !

Les appartements que nous prévoyons de visiter sont inclus dans la zone de couverture « Fibre Optique » de Numericable. La desserte de cette ville en fibre optique est assez logique dans la mesure où il y a un des plus gros noeud Internet Français, j’ai nommé Redbus. Vous pouvez imaginer mon bonheur à savoir que je pourrais être desservi par une liaison ultra haut débit qui dépotte.

Direction le site de Numéricable pour s’adonner à des simulations en tout genre pour savoir quel type de fibre optique je pourrais avoir. Je saisis l’adresse des différents appartements que nous avions prévu de visiter. Le site me dit d’office que je peux disposer de 100Mbit/s, génial ! Cependant, ce qui m’intéressait plus c’était le débit d’upload afin de pouvoir héberger divers serveurs. Aucune information disponible sur le site de Numéricable à ce propos, autant dire que ca sent mauvais. Je me rends donc sur le site Grenouille.com qui est généralement au courant de ce genre d’informations. Et là, c’est le drame. 5Mbit/s en upload ! Mais ou sont passés le 95Mbit/s restants dont je rêvais ?

Et bien en fait après avoir recherché sur Internet, l’offre de Numericable n’est pas une « vraie » offre fibre optique. Par vraie offre de fibre optique j’entends offre par le biais de laquelle un microtube de silice capable de transporter de la lumière à travers le monde arrive dans mon mur. Ce n’est pas une fibre qui arrive dans votre mur mais un cable coaxial comme dans les offres d’Internet par le cable traditionnelles. En fait, Numéricable déploie la fibre optique jusqu’au dernier répéteur (FTTLA – Fiber To  The Last Amplifier) ce qui permet de limiter les pertes et donc d’augmenter les débits.

Concrètement, Numericable tire des fibres optiques à la place de ses câbles coaxiaux existants jusqu’au pied des batiments. Un tel déploiement est plus simple dans le mesure où les infrastructures existent déjà et leur appartiennent. Ensuite au pied des batiments, la fibre optique est convertie en coaxial pour desservir le/les batiments en question. Visiblement les débits en upload auraient été bridés et pourraient être augmentés dès que le réseau de Numéricable aurait été amélioré. Pour ceux qui veulent plus d’info, voici un premier site qui montre des photos d’un boitier de raccordement au réseau fibre optique et un second article qui explique le déploiement du réseau Fibre Optique Numéricable.

Je vais tout de même arrêter de me plaindre parcque si j’arrive à obtenir du 100/5 Mbit/s je serais content bien évidemment vu qu’actuellement je me contente de 7/0,8 Mbit/s. Je n’aurais plus qu’à adresser mes prières au Dieu Numéricable pour qu’ils débrident les débits en upload. Il ne reste plus qu’à prévoir le futur réseau pour aller derrière.

Edit : Après plus de recherches, le standard de communication permet d’obtenir 160/120Mbit/s avec l’exemple d’un déploiement en Corée ou ici. Egalement plus d’infos sur la page du standard sur Wikipedia.