Sécuriser le réseau interne Floydman Analyste en sécurité informatique floydian_99@yahoo.com http://www.geocities.com/floydian_99 http://securit.iquebec.com Ce document a pour but de définir des mesures précises et efficaces afin de sécuriser les réseaux internes, plus précisément ceux basés sur les technologies Microsoft. Afin d'être utile dans les situations réelles, ces mesures ont été pensées en fonction d'un coût de mise en place le plus bas possible, afin d'éviter que le coût financier de ces mesures n'empêche la mise en place de celles-ci. La sécurité étant un domaine en constante évolution, il est également possible que d'autres solutions viennent s'y ajouter dans le futur. 1. Introduction 2. Définition de l'approche multi-niveau 3. Maximiser la protection antivirus 4. Mise en place de coupe-feu (firewalls) personnels 5. Optimiser la sécurité du système d'exploitation 6. Optimiser les configurations des applications 7. Encryption 8. Déploiement 9. Coûts et épargnes 10. Solutions commerciales intégrées ou individuelles 11. Conclusion Annexe A. Ressources 1. Introduction Une des premières choses que l'on apprend lorsque l'on s'intéresse à la sécurité informatique, c'est qu'environ 80% des attaques proviennent de l'intérieur, principalement de la part d'employés renvoyés ou mécontents, de consultants externes, ou bien de pirates informatiques qui se sont introduits sur le réseau d'une façon ou d'une autre (connexion Internet non-sécurisée, modems, social engineering, embauché par la victime sous de faux prétextes). Depuis l'explosion démographique d'Internet, ce chiffre n'est plus tout à fait exact, mais selon les dernières études, il y a toujours entre 60% et 80% des intrusions déclarées qui ont lieu sur le réseau interne. Cependant, la plupart des compagnies de sécurité informatique mettront la plus grande partie de leurs efforts pour sécuriser la périphérie de ce réseau tout en laissant le réseau interne tel quel, soit par manque de prise de conscience du problème, par manque de compétence, ou plus souvent par manque de ressources financières de la part du client pour mettre en place des mesures affectant chacun des postes de l'entreprise. J'ai moi-même pu constater à quelques reprises, dans le cadre de mes fonctions, qu'une fois que la périphérie du réseau a été traversée, le reste du réseau n'est plus qu'un gros fruit mûr qu'on a qu'à cueillir. C'est pourquoi il est impératif de définir des mesures qui amélioreront la sécurité globale des installations informatiques, tout en gardant le coût de mise en place le plus bas possible. Ceci est rendu possible par l'optimisation de la configuration des outils déjà disponibles sur place, soit par l'automatisation des procédures afin de minimiser les interactions humaines directes sur les machines à sécuriser par les personnes chargées du mandat. 2. Définition de l'approche multi-niveau On entend souvent dire que la sécurité informatique n'est pas un produit en tant que tel, mais plutôt un processus qu'il faut constamment réviser en raison de l'évolution rapide des technologies et des vulnérabilités qui peuvent être découvertes sur des composantes de l'infrastructure du réseau. Je préconise à cet effet une stratégie de sécurité du réseau répartie sur plusieurs niveaux, afin de pouvoir parer différents types d'attaques et éviter d'avoir un seul point de défaillance. Non seulement le fait de sécuriser le réseau interne s'inscrit dans cette ligne de pensée, mais dans ce document je vais également utiliser cette méthode afin de définir plusieurs niveaux de sécurisation des postes du réseau interne, pour les raisons décrites plus haut. Il est important ici de mentionner que les mesures expliquées dans ce document s'appliquent principalement à la sécurisation des postes de travail Windows. Ces mesures peuvent également s'appliquer sur des serveurs Windows, mais l'administration sécuritaire de serveurs Windows implique également la mise en place de pratiques et de mesures en dehors de la portée de ce document. Il en est de même pour les mesures de protection du périmètre à l'aide de firewalls et de systèmes de détection d'intrusion. Bien que ce mesures ne sont pas discutées dans ce document il est important de les prendre en compte dans une stratégie globale de sécurité informatique. On dit souvent qu'il existe un conflit entre facilité d'usage et la sécurité en informatique. Afin de mettre en place des solutions eficaces, il faut souvent trouver le juste équilibre entre ces deux concepts. Cependant, dans le cas de la plate-forme Windows, je crois qu'il y a suffisament de gras du côté de la facilité d'usage pour que l'on puisse couper dedans généreusement et ainsi rétablir une balance facilité-sécurité qui est sinon dangeureusement penchée. Les différents concepts que j'expliquerai plus loin sont en partie dérivés de certains de mes anciens documents, en partie d'expériences plus récentes. Pour une approche plus théorique de ces mêmes concepts, je suggère l'excellent texte "Protecting against the unknown" de Mixter. Plus précisément, ce document traitera de protection antivirus, de firewalls personnels pour les postes de travail, de sécurisation des systèmes d'exploitation et des applications, ainsi que des différentes techniques utilisées pour le déploiement de ces solutions. Je glisserai également un mot sur l'encryption des données. 3. Maximiser la protection antivirus Pendant très longtemps, on croyait qu'un bon logiciel antivirus et un firewall était tout ce qui était nécessaire afin d'avoir une infrastructure informatique sécuritaire. Bien sûr, ce n'est plus le cas aujourd'hui (voir "Autopsy of a successful intrusion" dans l'Annexe A), mais il ne faut pas minimiser l'importance du logiciel antivirus dans les moyens de protection. Il est important de savoir qu'un logiciel antivirus n'est pas une panacée, et qu'il est facile pour quelqu'un qui s'y connaît de le contourner (c'est pourquoi l'approche multi-niveau est privilégiée), mais il est encore plus important de savoir qu'un logiciel antivirus n'est vraiment efficace que s'il est régulièrement mis à jour et bien configuré. Dans la plupart des cas, l'installation par défaut est préconisée, et cette configuration présente habituellement des lacunes quant au niveau de protection apportée. Il n'est pas rare également de voir que les antivirus ne sont installés que sur certaines machines jugées critiques, alors que chaque ordinateur (serveur et poste de travail) devrait en être équipé, et ce même si le serveur de courrier électronique dispose également d'un filtreur de courrier qui agit également en tant qu'antivirus. Il ne faut qu'une seule machine vulnérable pour compromettre un réseau, alors il est nécessaire d'avoir une protection qui tient compte de cet aspect. Afin d'avoir le niveau de protection maximum de la part du logiciel antivirus, il faut choisir un produit qui permet de scanner les fichiers en mémoire en temps réel tout autant que les fichiers sur le disque dur. Pratiquement tous les produits offrent cette option à l'heure actuelle. Il faut également paramétrer le logiciel antivirus pour scanner tous les types de fichiers sans exception (autant sur le scan en temps réel que le scan du disque dur), car il est très facile de camoufler un virus connu en le faisant passer pour un autre type de fichier (I Love You!, Life Stages et Anna.Kournikova en sont de bons exemples, voir "Invisible file extensions on Windows" dans l'Annexe A pour plus de détails sur les techniques de camouflage). Avec la puissance des processeurs disponibles aujourd'hui, il n'y a aucune raison de ne pas soumettre tous les types de fichiers à l'inspection obligatoire (il se peut cependant que vous ayez à exclure certains types de fichiers, tel .pgd par exemple si vous utilisez PGPDisk). Si le logiciel le permet, il faut également scanner les fichiers compressés (une option spéciale est souvent présente à cet effet, ce qui permet de scanner non seulement le fichier compressé, mais les fichiers à l'intérieur de l'archive également). Et si le logiciel choisi permet également de scanner une machine grâce à une méthode heuristique (c'est-à-dire que le logiciel apprend à connaître les particularités de la machine, et ensuite rapporte les changements suspects comme étant une activité virale probable), il est fortement recommandé de l'activer également. Jusqu'à présent, dans ce chapitre, je n'ai tenu compte que des options visant à protéger une machine contre les virus, mais à quoi bon mettre en place des dispositifs de protection si nous ne sommes pas en mesure d'évaluer leur efficacité? Encore une fois, la configuration par défaut de la plupart des logiciels antivirus écrira ses fichiers logs sur le disque dur local de la machine sur lequel il est installé. Cependant, certains produits offrent la possibilité de rediriger ces fichiers logs sur une machine centralisée (parfois avec un simple chemin UNC du style \\serveur\dircentral), et je recommande fortement d'utiliser cette fonctionnalité, car cela permettra au personnel informatique en place d'avoir une vision globale de l'activité virale sur le réseau, au lieu d'avoir à se déplacer de poste en poste pour les consulter un à un durant une infection majeure, ce qui tend à réduire l'efficacité de l'opération dans un moment où la rapidité d'exécution est primordiale. Si le logiciel antivirus permet également de générer des alertes par courriel ou téléavertisseur, alors le personnel informatique en place saura immédiatement lorsqu'un virus s'introduit dans le réseau, et pourront rapidement regarder les logs afin de vérifier si le logiciel antivirus a éradiqué le virus fautif ou non. Cependant, certains produits n'offrent aucune option afin de rediriger les fichiers logs ailleurs que sur le disque dur local. À cet effet, il existe un utilitaire Open Source gratuit appelé LogAgent (script Perl qui peut être compilé en éxécutable) qui peut être utilisé à cet effet. La seule fonction de Log Agent est de surveiller un ou des fichiers de logs et de faire parvenir les ajouts faits à ces fichiers vers un serveur centralisé. Le dernier aspect à considérer est la mise à jour des fichiers de définitions de virus utilisé par le logiciel antivirus pour identifier les virus qui pourraient s'infiltrer dans le réseau. Vu le fonctionnement de ce type de logiciel, si un virus ne fait pas partie de ses fichiers de définitions, il y a de fortes chances que le logiciel ne réussise pas à l'identifier. Habituellement, le logiciel sera configuré pour se mettre à jour environ une fois par semaine ou une fois par mois, allant chercher les nouveaux fichiers de définitions directement sur le site du fournisseur de logiciel antivirus. Dépendamment du degré de paranoïa exprimé par l'entreprise concernée, une mise à jour quotidienne ou hebdomadaire est recommandée. Cependant, les mises à jour devraient se faire à partir d'un serveur situé à l'interne qui contiendra les nouveaux fichiers de définitions qui y seront préalablement testés et placés par l'administrateur réseau de l'entreprise. Ceci à pour effet de diminuer le trafic passant sur le lien Internet de la compagnie, et évite de faire face à une congestion du serveur du fournisseur d'antivirus, car les autres clients de ce fournisseur s'y brancheront également, surtout en période d'alerte. Il peut alors devenir difficile de se connecter au serveur et d'obtenir les fameux fichiers; autant aller les chercher qu'une seule fois et ensuite les distribuer à l'interne. Nous verrons plus loin comment déployer les logiciels antivirus pré-configurés sur les stations de travail. Un dernier mot relativement à la protection antivirus: depuis environ 4 ans, les développeurs de virus ont presque tous adopté la même stratégie pour distribuer leurs morceaux de code malins, j'ai nommé Outlook. Ce logiciel, qui regroupe les fonctions de courrier électronique, d'agenda, de calendrier et j'en passe, comporte plusieurs vulnérabilités qui en fait le moyen idéal pour propager des virus. Avant l'arrivée d'Outlook, il était considéré comme étant impossible d'activer un virus simplement en lisant un message. Quiconque affirmait ceci venait de faire preuve qu'il ne savait aucunement de quoi il parlait, et courait le risque de faire rire de lui par ses pairs. Ceci n'est plus vrai depuis l'arrivée de Outlook, à cause de diverses fonctionnalités (d'autres diront vulnérabilités) qui permettent maintenant ce genre d'exploit. Il est très difficile de sécuriser Outlook afin de le rendre inoffensif, et de plus la configuration par défaut (non sécuritaire) est la plus fréquemment utilisée. Pour ces raisons, plusieurs compagnies mettront en place plusieurs dispositifs antivirus à différents endroits sur l'architecture informatique, mais ces dispositifs sont pour la plupart incapables de stopper efficacement les nouvelles menaces précédemment inconnues. On utilise souvent l'analogie d'une chaîne afin de décrire le niveau de sécurité d'un réseau informatique, affirmant que la chaîne n'est aussi forte que le plus faible de ses maillons. En renforçant les autres maillons de la chaîne (antivirus sur le serveur de courrier, antivirus sur les postes, etc.) mais en conservant le maillon le plus faible (Outlook), on ne fait que s'assurer que ce maillon faible sera celui qui cèdera. Je sais que ce que je suis sur le point d'écrire ne sera pas populaire, mais si vous tenez vraiment à vous prémunir efficacement contre les virus informatiques, bannissez Outlook de votre réseau (je parle ici du client Outlook, pas du serveur de messagerie Exchange). Je traite de protection antivirus de façon plus technique et en profondeur dans "Virus protection in a Microsoft Windows network, or How to stand a chance", que vour trouverez en Annexe A. 4. Mise en place de coupe-feu (firewalls) personnels Depuis maintenant un peu plus de deux ans, une nouvelle gamme de logiciels ont fait leur apparition dans le domaine de la sécurité informatique, les firewalls personnels. Ceux-ci sont nombreux et diffèrent dans leur fonctionnement d'un produit à l'autre. Pour cette raison, il est recommandé de faire une recherche parmi les différents produits disponibles afin de déterminer lequel correspond aux besoins de l'entreprise à sécuriser. À cet effet, j'ai inclus dans l'annexe A quelques liens vers des pages web traitant de ce sujet plus en profondeur (études comparatives, commentaires sur le fonctionnement de chaque produit, comment se procurer les versions gratuites ou démos pour des fins de tests, prix, etc.). Donc, comme je le mentionnais, les firewalls personnels ne fonctionnent pas tous selon le même principe, et c'est sur ce point que j'aimerais m'attarder. Tenons pour acquis que le réseau interne est protégé du réseau Internet grâce à un firewall conventionnel. Quel serait alors l'avantage d'avoir un firewall personnel qui fonctionne sur les mêmes principes que le firewall principal, c'est-à-dire qui filtre le trafic entrant et sortant selon des règles définies sur certaines caractéristiques des paquets TCP/IP concernés? Un paquet envoyé par une personne malveillante qui réussit à passer le firewall parce qu'il est conforme aux règles mises en place a toutes les chances d'en faire de même lorsqu'il sera confronté au firewall personnel, puisque les chances sont grandes que ce paquet soit également conforme aux règles du firewall personnel, à moins que les règles des deux types de firewall soient sensiblement différentes. Une autre stratégie, que je trouve particulièrement intéressante, est un firewall personnel qui gère le trafic entrant et sortant selon les permissions des applications qui se trouvent sur le poste, par opposition au port ou à l'adresse source ou destination. Ce type de firewall est également capable de faire la distinction entre le réseau interne et externe, ce qui permet d'obtenir une granularité assez fine quant au type de trafic accepté et refusé. De plus, un firewall de ce type permet d'arrêter net les chevaux de Troie, les espiongiciels (spyware) et les agents de déni de service (denial of service). Il est possible, pour chaque application se trouvant sur le poste, d'autoriser, de refuser ou de lui faire demander la permission à chaque connexion, que ce soit sur le réseau interne ou externe. Il est possible également de spécifier quels programmes ont la permission d'agit en tant que serveur, donc en mesure d'accepter les connexions provenant des autres machines. Ainsi, si un cheval de Troie se rend sur un PC grâce à un exécutable envoyé par messagerie électronique, celui-ci ne sera jamais en mesure d'accepter les demandes de connexion provenant du pirate, même si celui-ci est un usager légitime du réseau interne. Le danger inhérent de cette stratégie est d'être trop permissif quant aux applications que l'on donne accès au réseau. Par exemple, si on laisse l'application FTP en ligne de commande se connecter sur Internet sans restriction, alors il est possible pour un pirate de se confectionner un cheval de Troie espion qui utilisera FTP pour envoyer les données qu'il a collectées sur Internet sans que le firewall personnel ne fasse obstruction. Pour cet effet, tous les utilitaires réseau disponibles à partir de la ligne de commande devrait être disponible seulement en demandant la permission à chaque tentative de connexion (Il est également possible d'utiliser des logiciels à interfaces graphiques, tel Internet Explorer, pour passer une connexion illicite. Il dépend donc de l'entreprise de décider si chaque application doit nécessiter d'une approbation à chaque lancement ou non, en fonction du facteur de risque auquel elle est prète à faire face.). Ainsi configuré, les firewalls personnels agissent de façon complémentaire avec le firewall principal, au lieu d'offrir une protection redondante affichant les mêmes forces et faiblesses. Afin d'augmenter sensiblement la sécurité du réseau, il est recommandé de n'inclure que les différents serveurs de votre réseau comme faisant partie du réseau interne. Ainsi, il devient impossible pour un poste de travail d'en contacter un autre à travers le réseau IP. Ceci force toutes les communications électroniques à transiger par les différends serveurs (courrier, fichier, impression, firewall, etc.) avant d'arriver à destination, et rend impossible l'intrusion d'un poste de travail par un autre via le réseau. Pour plus d'informations à ce sujet, je vous réfère à "Configuring ZoneAlarm securely" dans l'Annexe A. Certains produits laissent tout de même la possibilité d'associer des ports précis à chacune des applications, ce qui permet encore une fois d'avoir un niveau de précision accru. Bien entendu, pour être efficace, il faut avoir une bonne idée de quelles applications sont utilisées sur les divers postes, quel type de réseau ces applications sont sensées se connecter (par exemple, interne pour l'application de courrier électronique, interne et externe pour le navigateur web). En énumérant bien les applications utilisées et permises par l'entreprise, il est alors possible de mettre en vigueur un standard difficile à contourner pour les usagers récalcitrants qui utilisent des applications non-standard (chat, instant messaging, etc). Bien entendu, pour arriver à cette fin, il est impératif de protéger cette configuration d'un mot de passe. Puisque les firewalls personnels sont encore peu répandus en entreprise, nous n'avons pas à faire face à la reconfiguration de logiciels déjà en place. Pour distribuer cette application ainsi que les configurations désirées, nous pouvons utiliser un logiciel qui permet de créer des paquets d'installations personnalisés. Pour terminer sur ce sujet, il est bien sûr fortement recommandé de rediriger les fichiers logs vers un serveur centralisé, comme pour l'antivirus, afin d'améliorer le temps de réaction des équipes informatiques lors d'attaques potentielles. 5. Optimiser la sécurité du système d'exploitation Ici nous abordons l'un des aspects les plus problématique de la sécurisation du réseau interne, la sécurisation du système d'exploitation comme tel sur chacun des postes. C'est principalement à cause de cet aspect que plus souvent qu'autrement la sécurisation du réseau interne est laissée de côté, car il s'agit d'une tâche relativement complexe, et qu'on doit traditionnellement effectuer manuellement sur chaque ordinateur, ce qui implique des coûts assez élevés en terme de main d'oeuvre. Les équipes informatiques des entreprises n'ont habituellement pas les connaissances nécessaires pour déployer des ordinateurs configurés sécuritairement selon les normes recommandées, et même lorsque c'est le cas, bien souvent il faut apporter des modifications supplémentaires avec le temps simplement à cause des nouvelles vulnérabilités qui n'étaient pas connues au moment du déploiement. Pour donner une idée de l'ampleur de cette tâche, vous trouverez en annexe A un lien vers le site de Microsoft sur une page contenant un check-list de toutes les étapes qui doivent être effectuées afin de sécuriser une station de travail Windows NT 4.0. Parmi les choses à faire, il y a la désactivation du compte Invité (Guest), l'obligation d'un mot de passe difficile à deviner pour le compte Administrateur local, enlever les services de compatibilité OS/2 et Posix (à moins d'en avoir réellement besoin), restreindre l'utilisation du hash LanManager, restreindre l'accès à certains fichiers et répertoires systèmes, et j'en passe. La liste est plutôt longue, et il est facile maintenant de comprendre pourquoi cet aspect est si souvent laissé de côté: prendre le temps de faire manuellement toutes les modifications requises sur les droits d'accès ACL, d'enlever ou modifier les clés de registre nécessaire, d'activer certaines options qui sont absentes par défaut, en plus bien sûr d'avoir le système d'exploitation mis à jour avec le dernier Service Pack (minimum requis) et les derniers hotfix de sécurité (patches post-service pack). Enfin, la liste est longue. Tout ceci afin d'avoir sur chaque ordinateur un environnement sécuritaire suffisamment restrictif pour empêcher les usagers légitimes du réseau d'effectuer des opérations illégitimes, sans pour autant obstruer l'utilisation de l'usager dans l'usage normal de ses fonctions. Et c'est sans parler que ces modifications doivent également être implantées sur les serveurs, auxquelles se rajoutent quelques étapes supplémentaires dépendamment de la fonction du serveur (DNS, Contrôleur de domaine, serveur de fichiers, ...). À cet effet, la NSA vient de publier récemment une série de documents expliquant comment sécuriser les différents services de Windows 2000. Le lien vers ces documents se retrouve dans l'Annexe A. Afin de régler ce problème, Pedestal Software ont créé un logiciel permettant d'auditer et de configurer à distance des ordinateurs Windows NT 4.0 et Windows 2000 en les comparant à des politiques de sécurité pré-définies correspondant à la configuration sécuritaire que nous désirons implanter. Quelques fichiers de configuration sont fournis avec le logiciel: un fichier correspondant aux recommandations présentes dans le document "Microsoft Security White Paper", un autre correspondant au SANS Step-by-Step, et trois autres correspondant à la configuration standard des machines de la Navy américaine concernant les stations de travail, les serveurs et les contrôleurs de domaine. Ce logiciel ne nécessite aucune installation d'agents sur les postes à configurer. Nous n'avons qu'à installer le logiciel sur un ordinateur branché au réseau, et lui fournir les authentifiants d'administrateur réseau pour les domaines que nous voulons sécuriser. Le logiciel, appelé Security Expressions, procèdera alors à un scan complet des machines, analysant leur configuration contre la configuration recommandée qui correspond aux normes de sécurité que nous voulons mettre en place. Une fois le scan terminé, le logiciel génère un rapport complet sur ce qui est conforme ou non conforme par rapport à la configuration désirée. D'un simple clic de souris, nous pouvons enclencher un processus similaire qui prendra en charge d'apporter les modifications requises afin de sécuriser les postes. Nous pouvons même ré-utiliser cet outil pour effectuer des audits régulièrement afin de s'assurer que toutes les machines demeurent conformes au niveau de sécurité exigé. Security Expressions passe ses requêtes en utilisant le protocole NetBios, qui est le protocole de base dans un réseau Microsoft, en utilisant l'autorité de l'administrateur pour auditer et configurer les postes de travail. Il est également possible de faire nos propres fichiers de configuration, qui peuvent être dérivés de ceux fournis avec le logiciel. Pris tel quel, Security Expressions peut ajouter, modifier ou enlever des clés de registre, créer ou enlever des comptes usagers et des groupes, appliquer des ACL spécifiques sur certains fichiers ou répertoires, vérifier la présence de certains fichiers, ainsi que copier ou effacer des fichiers, et j'en passe. Dans son utilisation la plus simple, Security Expressions peut difficilement déployer les service packs ou les hotfix, mais il peut sans problème détecter s'ils sont présents ou non. Cependant, il est possible d'inclure des scripts dans le programme, et par ce moyen il est sûrement faisable de déployer ces mises à jour. 6. Optimiser les configurations des applications Jusqu'à présent, nous nous sommes efforcés de nous protéger contre les virus et les chevaux de Troie, contre les agents de déni de service, et avons considérablement sécurisé notre système d'exploitation afin de réduire le nombre de vulnérabilités qu'un individu ayant un accès physique au réseau interne pourrait utiliser à son avantage. On serait donc porté à croire que notre tâche tire à sa fin, et que nous avons finalement relevé le défi de sécuriser nos stations de travail. Et bien c'est faux. Il reste encore à prendre en compte les différentes applications que les utilisateurs se servent dans leurs fonctions de tous les jours, et qui peuvent elles aussi comporter des failles de sécurité qui peuvent compromettre l'intégrité de notre réseau. Rappelez-vous l'exemple de Outlook que j'ai mentionné lors du chapitre sur les virus. Il est vrai qu'avec les mesures décrites précédemment, il serait plus difficile pour un intrus potentiel d'arriver à ses fins, mais tant qu'une porte reste ouverte, il y a toujours moyen de l'ouvrir plus grand, jusqu'à ce que l'on parvienne à contourner toutes les mesures de protection prises précédemment. Une des applications nécessitant quelques mesures préventives est le fureteur web, que ce soit Internet Explorer, Netscape ou autre. Il est important de réduire les capacités de ce type de logiciel. Par exemple, il peut être dangereux d'accepter l'exécution d'applets Java, Javascript ou VBScript. De même, le fait d'accepter les contrôles ActiveX est reconnu comme étant non-sécuritaire, car ces contrôles ont la possibilité d'exécuter du code informatique sans aucune restriction. Il est donc important de prendre les mesures nécessaires pour filtrer certaines de ces possibilités, tout en laissant certaines fonctionnalités ouvertes afin de ne pas nuire à la qualité du service web. Les applications de courrier électronique nécessitent également d'avoir certaines mesures restrictives, comme par exemple désactiver l'exécution de code VBScript inclus dans des messages HTML. En fait, chaque programme installé sur un poste de travail qui est utilisée pour se connecter d'une façon ou d'une autre sur Internet devrait faire l'objet de recherches spécifiques sur les façons d'éviter les vulnérabilités connues. Il en va de même avec les applications ayant la capacité d'exécuter du code sous une forme ou une autre, comme par exemple le traitement de texte Word, qui permet l'exécution de macros (qui ont été à l'origine d'une nouvelle gamme de virus). Une fois que les risques liés à chaque application standard utilisée sur les postes internes ont été identifiés, et que les modifications à apporter ont été testées et approuvées, on peut encore une fois se servir de Security Expressions pour en faire le déploiement. Sinon, on se retrouve encore une fois avec le problème d'une surcharge de travail qui serait prohibitif à mettre en place en raison des coûts associés à un tel projet. 7. Encryption Il m'aurait été difficile de parler de sécurité informatique sans parler d'encryption. Je dois toutefois préciser que ce n'est pas mon domaine d'expertise, et que mes connaissances de l'encryption sont plus conceptuelles que pratiques. Cependant, la mise en place d'une solution d'encryption à travers toute l'infrastructure informatique est une solution habituellement très coûteuse, dépendamment des différentes implémentations. En effet, il est possible de déployer une technologie d'encryption sur l'envoi de courrier électronique, d'encrypter les données présentes sur le disque dur, ou d'encrypter toutes les données transmises sur le réseau. L'authentification peut se faire à l'aide d'un mot de passe, d'une carte de type SecurID ou d'une carte à puce. Les points forts de l'encryption est de préserver l'intégrité et la confidentialité des données. Cependant, ceci impose une charge supplémentaire sur les systèmes dont il faut tenir compte pour des raisons de performance (temps de CPU pour encrypter/décrypter, largeur de bande réseau pour acheminer le volume supplémentaire de données lorsqu'elles sont encryptées, ...), en plus du coût associé aux diverses solutions possibles énumérées plus haut. L'efficacité des méthodes d'encryption actuelles n'est plus à prouver, mais dans l'optique où l'on considère que le facteur principal qui mène à ce que la sécurité interne d'un réseau soit défaillante est le coût associé à sa sécurisation, déployer une solution d'encryption sur chaque poste d'un réseau interne peut engendrer une facture spectaculaire. Donc, à moins de faire affaire avec une compagnie qui désire avoir un degré de protection maximal peu importe le coût associé, je crois qu'il est préférable de limiter les solutions d'encryption là où elle est vraiment nécessaire (VPN, postes contenant des données sensibles, serveurs), et concentrer les efforts sur la mise en place des solutions énumérées ci-dessus. En fait, le déploiement à grande échelle d'une solution d'encryption est suffisamment complexe pour y avoir un projet entièrement dédié. 8. Déploiement Dans un contexte de sécurité, la situation idéale est de reformater les machines et de ré-installer le système d'exploitation et les applications configurés de façon sécuritaire, parce qu'il nous est impossible de faire confiance aux systèmes insécures qui peuvent contenir des backdoors. Cependant, une telle pratique est très coûteuse en temps et en argent, et demande un effort de productivité accru de la part des techniciens tandis que la productivité des employés risque d'être perturbée. Alors la meilleure solution de rechange est de sécuriser les machines avec les différents outils énumérés jusqu'ici, et parier sur cette nouvelle sécurité accrue pour détecter et bloquer de possibles intrusions antérieures. Comme nous l'avons vu plus haut, il est très coûteux de faire un déploiement de logiciel en se déplaçant de poste en poste, en plus d'ouvrir la porte à d'éventuelles erreurs humaines. Dans le cas de simple changement de configuration du système, nous avons vu que Security Expression permettait d'effectuer ces changements à distance. Il est également possible, à l'aide de scripts, d'utiliser Security Expression afin d'installer des logiciels. Cependant, une autre approche consiste a utiliser un logiciel spécial qui peut nous créer un paquet d'installation pré-configuré (tel que InstallRite de Epsilon Squared, qui est gratuit) selon nos spécifications, ce qui ne nécessitera aucun autre effort additionnel au moment de l'installation. InstallRite fonctionne en prenant une image du contenu de votre disque dur et votre registre avant et après l'installation d'un logiciel, et identifie les changements apportés au système par ce logiciel (fichiers ou clés de registres ajoutées, enlevées ou modifiées). Il peut même extraire ces fichiers et clés de registres pour en faire un paquet d'installation automatique, de type self-extract. Il en résulte un seul fichier .exe qu'il suffit d'activer pour installer le logiciel en question. Bien sûr, l'avantage de cette pratique consiste au fait que l'on peut configurer nos logiciels selon les spécifications mentionnées dans ce document avant de produire le paquet d'installation. Ainsi, les logiciels installés seront tous déjà pré-configurés selon nos besoins. L'installation, quant à elle, peut se lancer à partir du login script des usagers en utilisant des fichiers .bat tels que discuté dans "Virus protection in a Microsoft Windows network, or How to stand a chance". Le document "Software deployment that makes sense" traite plus en profondeur de l'utilisation d'InstallRite dans un contexte de déploiement de logiciels. Ces deux documents se trouvent en Annexe A. Bien sûr, il est fortement recommandé de tester vos paquets d'installation avant de procéder au déploiement à la grandeur de votre réseau. 9. Coûts et épargnes À ce stade-ci, nous avons couvert pratiquement tous les angles de la problématique que représente la sécurisation du réseau interne. Il est à noter que je n'ai pas traité dans ce document de la protection liée aux connexions externes, comme les firewalls, les systèmes de détection d'intrusion (IDS), ni des mesures à prendre pour sécuriser les serveurs de fichiers et les serveurs d'authentification, ni des politiques liées à la robustesse des mots de passe et à la sécurité physique. Afin de bien sécuriser une infrastructure informatique, ces points doivent également être couverts, mais sont hors du contexte ciblé par ce document. Jusqu'à présent, je n'ai tenu compte que de l'aspect technique d'un tel projet, négligeant l'aspect financier, et ce pour des raisons de clarté dans le texte. Mais à l'heure actuelle, le lecteur devrait déjà avoir une bonne idée d'où proviendra la majeure partie des coûts: les licenses logicielles. En effet, il faudra compter une license par logiciel par poste installé. D'où l'intérêt de chercher des façons efficaces de réduire les coûts du projet sans en amenuiser l'ampleur. Par exemple, si vous disposez déjà d'un logiciel antivirus sur chacun de vos postes, vous n'avez nul besoin de vous en procurer un autre (à moins que vous ne désiriez changer de produit), vous n'avez qu'à vous assurer que sa configuration soit optimale telle que décrite ici. Il en va de même pour Security Expression et les firewalls personnels. Ces produits impliquent une license par poste. Pour les plus gros réseaux, une license corporative est généralement disponible. Je vous réfère aux sites webs des éditeurs de ces solutions pour les prix exacts, car ces prix peuvent varier d'un éditeur à l'autre. L'autre aspect à tenir compte dans l'analyse de coûts est la main d'oeuvre. Tout le monde le sait, la main d'oeuvre technique, et qualifiée de surcroît, est rare et coûte cher. D'où l'intérêt de concevoir un mode de distribution automatique des solutions plutôt que faire les tâches manuellement sur chaque poste. On peut facilement compter entre une heure et une heure et demie de travail par poste pour effectuer manuellement toutes les recommandations techniques comprises dans ce document, en plus du temps nécessaire pour l'analyse préalable au projet (identification des logiciels utilisés, définition des configurations, tests, etc.). Il s'agit d'un travail complexe et répétitif, sujet aux erreurs humaines et qui peut en bout de ligne laisser un trou énorme dans la sécurité de votre réseau. En automatisant la tâche de déploiement tel que vu au chapitre précédent, la même phase d'analyse demeure nécessaire, mais les coûts de déploiement sont drastiquement réduits, puisqu'il peut être effectué par la ou les même(s) personnes(s) qui ont fait l'analyse. Dépendamment du nombre de logiciels à installer, de la taille de ceux-ci, de la vitesse du réseau et de la puissance des PC sur le réseau, on peut compter entre 5 et 15 minutes en moyenne par PC pour l'installation équivalente. L'économie de temps et de main d'oeuvre représente un gain considérable, compte tenu du niveau de sécurité obtenu par ces mesures. 10. Solutions commerciales intégrées ou individuelles J'ai traité dans ce document de divers types d'outils en tant qu'entités indépendantes les unes des autres. Cependant, il existe certaines solutions intégrées pour la sécurisation des postes, qui incluent un logiciel antivirus, un firewall personnel, VPN, encryption du disque et un détecteur d'intrusion. Ces logiciels sont tous des composantes optionnelles qui peuvent être ajoutées ou modifiées via une interface commune, qui permet de distribuer et configurer ces logiciels à travers le réseau. Cette interface permet aussi de centraliser les fichiers logs et de pouvoir les consulter à partir de la console de l'administrateur réseau. En fait, le logiciel d'administration centralisé d'une telle solution utilise des techniques similaires à celles présentées ici, et offre une interface graphique permettant la configuration des divers éléments dans le but de simplifier l'administration. Bien qu'une telle solution intégrée comporte plusieurs avantages, elle comporte également quelques inconvénients. Un de ces inconvénients vient du fait que la distribution des logiciels est parfois plus compliquée qu'elle ne devrait l'être, et parfois il faut lancer les commandes à quelques reprises avant que toutes les machines du réseau ne soit prise en charge. Un autre inconvénient vient du fait que l'interface permettant de voir les logs n'offre que très peu d'avantages sur le plan de la visibilité et de la compréhension des logs en comparaison à un éditeur de texte. Mais le pire inconvénient peut provenir du fait qu'une vulnérabilité dans une des composantes peut signifier que cette vulnérabilité est présente dans toutes les composantes (ou du moins certaines parmi celles-ci), ce qui peut rendre innefficace toute les mesures prises jusqu'ici. Bien sûr, le fait d'utiliser des produits d'éditeurs différents n'est pas une assurance contre une telle éventualité, mais dans ce cas-ci, une vulnérabilité présente dans un logiciel risque moins d'avoir d'impact sur les autres logiciels que dans le cas de la solution intégrée. 11. Conclusion Dans ce document, j'ai voulu traiter une partie de la problématique de la sécurité informatique qui est souvent laissée de côté pour des raisons techniques et pécuniaires: la sécurité du réseau interne. Plus de la moitié (et même près de 80% des cas selon certaines sources) des actes d'intrusion informatique se font à partir de l'intérieur même du réseau, ce qui est partiellement en contradiction avec les mesures traditionnellement prises pour sécuriser un réseau, habituellement contre les menaces extérieures (firewall, IDS, filtres de contenu, ...). Bien que ces mesures soient nécessaires, elles sont pour la plupart inutiles dans le scénario d'une attaque provenant de l'interne. De plus, elles deviennent complètement inutile si un intru réussi à les contourner. Le plus gros défi à relever lors de la sécurisation d'un réseau interne (basé sur la plate-forme Microsoft) reste la complexité des tâches à effectuer, et de l'ampleur du travail à effectuer afin d'obtenir un résultat valable. Pour ces raisons, le coût associé à ce type de travaux est souvent jugé prohibitif, et se trouve par le fait même abandonné. J'ai démontré à travers ce document qu'avec les différents produits disponibles à l'heure actuelle et avec un peu d'imagination, il est possible d'obtenir un niveau de sécurisation du réseau interne Microsoft très satisfaisant, et ce pour une fraction des coûts normalement associés à ces types de travaux, ce qui rend le projet suffisamment abordable pour intéresser les compagnies soucieuses de protéger leurs actifs et leurs données informatiques. De plus, l'installation d'une telle infrastructure réduit considérablement le "bruit" dans le traffic du réseau, ce qui devrait aider à augmenter l'efficacité des sondes de détection d'intrusion (IDS) en résuisant les fausses alarmes. Annexe A. Ressources Protecting against the unknown http://packetstorm.acm.miami.edu/papers/contest/Mixter.txt Classification de plusieurs firewall personnels http://www.networkintrusion.co.uk/firepers.htm Article portant sur une étude comparative sur les firewall personnels http://www.networkcomputing.com/1116/1116f3.html Checklist de la configuration sécuritaire d'une station de travail Windows NT 4.0 http://www.microsoft.com/technet/treeview/default.asp?url=/technet/security/wrkstchhk.asp NSA Windows 2000 Security Recommendation Guides http://nsa1.www.conxion.com/win2k/index.html Securing Microsoft Outlook http://www.sans.org/infosecFAQ/email/sec_outlook.htm Pedestal Software http://www.pedestalsoftware.com Logiciel de création de paquets d'installation personnalisés http://www.epsilonsquared.com Configuring ZoneAlarm securely http://online.securityfocus.com/guest/11486 Autopsy of a successful intrusion (well, two actually) http://www.geocities.com/floydian_99/autopsy.html Virus protection in a Microsoft Windows network, or How to stand a chance http://www.geocities.com/floydian_99/virusprevention.html Invisible file extensions on Windows http://www.geocities.com/floydian_99/invisible.html Software deployment that makes sense http://www.geocities.com/floydian_99/deployment.html Log Agent, log file recollection tool http://www.geocities.com/floydian_99/logagent.html LogAgent 2.0 beta http://www.geocities.com/floydian_99/logagnt20beta.txt