Sécurité Linux couche 8 : OPSEC pour les utilisateurs, développeurs et administrateurs Linux

Gazette Linux n°164 — Juillet 2009

Pascal Mazon

Adaptation française  

Gaël Montreuil

Relecture de la version française  

Article paru dans le n°164 de la Gazette Linux de Juillet 2009.

Cet article est publié selon les termes de la Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.


Table des matières

Identifier l'information critique
Identifier les adversaires potentiels
Identifier les vulnérabilités potentielles
Évaluer les risques
Définir des contre-mesures
Estimer l'efficacité

En tant qu'utilisateurs de Linux, chacun de nous se retrouve dans une position unique : celle d'un utilisateur d'un outil puissant. L'utilisation de n'importe quel outil sans considération pour la sécurité est dangereuse. Les développeurs ont également une grande responsabilité envers la communauté en assurant une maintenance sécurisée des systèmes. Les administrateurs système se retrouvent souvent dans la position délicate de défendre leur bastion entre le risque ou l'annihilation et le temps de disponibilité.

Évaluons donc l'une des méthodologies de sécurité standard dans l'optique de notre utilisation de Linux comme outil : l'OPSEC.

La sécurité des opérations (OPSEC) est un processus qui identifie les informations critiques afin de déterminer si les systèmes hostiles d'espionnage peuvent observer nos actions. Ce processus détermine si un adversaire peut interpréter les informations obtenues comme pouvant lui être utiles. Il exécute ensuite des mesures bien précises pour éliminer ou réduire l'utilisation par des adversaires de nos informations critiques.

« Si je suis capable de déterminer ce que prépare l'ennemi et en même temps de dissimuler ce que je prépare, alors je peux concentrer mes actions tandis qu'il doit se diviser. » - Sun Tzu

Parce que nous sommes fermement enracinés intellectuellement dans la « matrice de sécurité Linux », nous pourrions ne pas nous apercevoir qu'un grand nombre d' « ennemis » locaux, nationaux ou internationaux existent. Et ceux-ci sont ravis d'exploiter la pile TCP/IP Linux en riant de façon démoniaque. Si vous ne me croyez pas, sur quoi basez-vous votre argumentation ? Avez-vous déjà testé ou utilisé une méthodologie d'évaluation OPSEC sur (choisissez parmi les suivants) :

  1. le SSH de votre ordinateur portable

  2. le code de vos applications ou db2/MySQL/JDBC

  3. votre serveur (SMTP, DNS, WEB, LDAP, SSH, VPN)

OPSEC, en tant que méthodologie, a été développé pendant la guerre du Vietnam, quand l'amiral Ulysse Sharp, Commandant-en-chef, dans le Pacifique, a créé l'équipe « Purple Dragon » après s'être rendu compte que les mesures de sécurité et de contre-espionnage appliquées à ce moment-là n'étaient pas suffisantes. Ils conçurent et utilisèrent la méthodologie consistant à « Penser comme un loup », autrement dit, regarder sa propre organisation avec le point de vue de l'adversaire. Lors du développement et de la recommandation d'actions correctives à leur commandement, ils ont forgé le terme « Sécurité des Opérations ».

OPSEC apporte aussi une très bonne compétence en matière d'évaluation critique qu'il faut enseigner à ceux qui apprennent à accorder leur confiance à bon escient et à vivre dans ce monde immense où l'homme est un loup pour l'homme. Un psychologue m'a fait part un jour de cette idée que « penser à toutes les choses que l'on pourrait faire (mais que l'on ne fait pas) » était une excellente méthode pour comprendre la nature humaine, les motivations personnelles et le chaos/l'ordre dans les systèmes naturels. Puisque les linuxiens sont de plus en plus attirés par la puissance des systèmes informatiques, les techno-geeks au regard vitreux, les solutions s-hexy-décimales qui marchent, ils ont aussi généralement un grand souci de la déontologie, et font plutôt preuve de responsabilité au niveau sécurité informatique, dès lors qu'ils savent par où commencer.

Maintenant, nous savons tous que la sécurité informatique est un processus disposé en couches, dans lequel nous, les utilisateurs, les développeurs et les administrateurs, formons l'une des couches.

Le modèle OSI est un modèle abstrait en 7 couches qui décrit l'architecture des communications de données pour les ordinateurs en réseau. Les couches sont construites les unes par dessus les autres, permettant l'abstraction de fonctions spécifiques dans chacune d'elles. La couche supérieure (la septième) est la Couche Applicative; elle décrit les méthodes et les protocoles des applications.

La couche 8 correspond au jargon Internet utilisé pour parler de l' « utilisateur », autrement dit la couche « politique » en tant qu'extension du modèle OSI pour la mise en réseau d'ordinateurs.

Les numéros de la couche OSI sont communément utilisés lors des discussions sur les réseaux. Ainsi un médiateur pourrait décrire un problème causé par un utilisateur comme étant un problème de la couche 8, similaire à l'acronyme « PEBKAC » (Problem Exists Between Keyboard And Chair - le problème se trouve entre le clavier et la chaise - N.D.T.) et à l'erreur ID-Ten-T (I D 1 0 T comme « idiot » - N.D.T.).

Nous pouvons remarquer que les clés SSH (ou leur absence) n'est pas en soi un gros problème de sécurité. Cependant ajoutez des utilisateurs root, un adressage internet complètement routable (plutôt que du NAT), pas de tables d'adresses IP ou autre pare-feu, pas de gestion des mots de passe ni de politique de sécurité, un utilisateur en colère, sous-payé, antisocial, avec des troubles du comportement et, c'est drôle, qui brandit Ettercap... et là, du coup, on aurait bien un problème, non ?

Les étapes d'évaluation OPSEC sont les suivantes :

Identifier l'information critique

Identifiez l'information qui a une importance critique pour l'organisation, la mission, le projet ou la maison [propriété intellectuelle, détails de la mission, plans, R&D, capacités, dégradations, données clés sur la répartition du personnel, dossiers médicaux, contrats, schémas de réseau, etc...]

Mais « Attendez », dites-vous, « je ne suis qu'un gamin avec un ordinateur portable ! » Vous fréquentez les cafés ? Vous utilisez les réseaux partagés ? Vous permettez aux autres de regarder par-dessus votre épaule lorsque vous vous connectez à votre banque ? Si c'est le cas, OPSEC est certainement fait pour vous.

Bien sûr, cette étape est nettement plus angoissante pour un administrateur système, car il est clair qu'il sait à quel point il est facile de planter un système et de perdre le travail de 30 professionnels ou plus en une seule commande, ou pour celui qui se rend bien compte que la défaite, c'est ne jamais pouvoir garantir de disponibilité stable. Cependant, tout utilisateur d'ordinateurs sait ce que c'est que de ne pas pouvoir compter sur la stabilité des données. Cette étape est donc très importante pour les administrateurs systèmes. Securité = stabilité en tout lieu.

Identifier les adversaires potentiels

Identifiez les adversaires, concurrents ou criminels qui valent la peine de s'en inquiéter, et ayant l'intention ainsi que la capacité d'acquérir des informations critiques chez vous.

Si vous n'avez pas pris le temps de regarder vos logs pour voir toutes les tentatives d'accès par SSH ou ftp, ou de vraiment vous poser dans un café pour estimer le trafic sans-fil, ou de regarder tcpdump pour voir ce qui se passe sur le réseau de l'Université, il serait peut-être temps de commencer. Il n'y a pas que les Chinois et les Russes (des scripts, parmi lesquels netcat, nmpa, et MetaSploit, peuvent être configurés facilement pour usurper ces adresses). Réveillez-vous et regardez autour de vous, dans les conférences, et posez-vous sérieusement la question, qui est un concurrent, qui est un criminel. Ceci est une étape indispensable avec OPSEC. Pendant les années 90 dans le nord-ouest des États-Unis, les administrateurs des systèmes Linux sous contrats concurrents se sont régulièrement attaqués aux serveurs web des uns des autres.

Mais, direz-vous, « pourquoi voudraient-ils s'infiltrer dans mon petit ordinateur portable ? ». Vous êtes connectés 24h sur 24, 7 jours sur 7, n'est-ce pas ? Votre système peut être configuré via Anacron, et utilisé comme obscur botnet intraçable , et vous n'en sauriez jamais rien ? Ce botnet peut exploiter votre bande-passante, voler votre puissance de calcul et au final être utilisé pour mettre des serveurs hors-service.

Identifier les vulnérabilités potentielles

Il faut prendre le point de vue de l' adversaire, du concurrent ou du voleur, et identifier les vulnérabilités et moyens potentiels d'accéder aux résultats de l'étape 1. Questionnez un échantillon représentatif d'individus.

Si vous n'avez pas été sur google pour vous assurer que la version de Firefox que vous utilisez est sécurisée contre les menaces connues, vous n'avez pas terminé cette étape. Si vous ne connaissez pas les vulnérabilités actuelles de la version d'OpenSSH et d'Apache ou de Java ou autre code source binaire installé avec votre Ubuntu ou votre Fedora, vous n'avez pas les bases pour utiliser la technologie Linux en toute sagesse.

Bien que je ne recommande pas à tout le monde d'assister à la DefCon, la lecture de leur site web public pourrait bien suffire pour vous impressionner quant à l'importance de l'OPSEC. Mieux encore, gravez vous un LiveCD BackTrack4 et lancez quelques uns des outils contre vos propres systèmes.

Il y a deux façons classiques de s'infiltrer sur Linux en utilisant les modèles de la pile OSI : « de haut en bas » ou « de bas en haut ».

Source : Modèle OSI

Couche :

  1. Physique

  2. Liaison de données

    • architecture du Protocole WAN

    • architecture de IEEE 802 LAN

    • architecture de 802.11

  3. Réseau

  4. Transport

  5. Session

  6. Présentation

  7. Application

  8. Utilisateur

La plupart des problèmes est due à la couche 8 !

Évaluer les risques

Évaluez les risques de chacune des vulnérabilités par son impact respectif sur la performance / l'accomplissement de la mission, si réalisé(e).

Après avoir testé votre SSH via un réseau extérieur ou après avoir scanné le cluster de votre application J2EE à partir d'une clé Trial IBM WatchFire AppScan; ou après avoir fait une recherche automatique des bogues sur votre Apache 1.33/LDAP depuis le partage (pas de réseau public VLAN) ou après avoir accédé/craqué votre propre clé WEP en cinq minutes, vous verrez clairement que vous ne possédez en réalité rien du tout, que vous ne pouvez vérifier aucune stabilité, et que, aussitôt qu'on empiète sur vos systèmes, rien ne va plus.

C'est par exemple le moment où l'administrateur serveur / l'utilisateur d'iPhone/de Blackberry s'aperçoit que son téléphone fait peut être plus que ce qu'il avait prévu. Et il se pose des questions sur la politique d'inclusion de fichiers PDF joints, sans qu'ils soient scannés et contrôlés, telle que définie dans la couche 8/9. Mais sans l'OPSEC, ce moment-là arrive toujours trop tard. Les téléphones s'intègrent potentiellement avec tout, ils ont des adresses IP et la plupart du temps, on n'y pense pas!

Encore une fois, laisser les imprimantes à part, par exemple, c'est de la folie, sachant que de nombreuses imprimantes HP et le protocole IPP peuvent être facilement pénétrés ou abusés par un programme intrusif ou autre lâché à l'ouverture d'une pièce jointe anodine.

Cette étape doit tout inclure, y compris toutes les technologies voisines avec lesquelles interfacent chaque système.

Définir des contre-mesures

Générez/conseillez des mesures spécifiques qui parent aux faiblesses identifiées. Mettez en vigueur des mesures de protection efficaces après les avoir classées par ordre de priorité.

Maintenant, avant de piquer votre crise et de fuir cette intolérable « limitation » de votre liberté informatique soyez assurés qu'il y a des « solutions ».

Estimer l'efficacité

Estimez et mesurez l'efficacité, et adaptez en conséquence.

Il y a des solutions très simples : cela peut être un conteneur pour votre SSH, la mise à niveau d'OpenVPN (qu'il est vraiment aisé de mettre en place), l'utilisation de NoScript dans un navigateur, ou le fait de ne jamais utiliser un navigateur en tant que root sur un serveur de production. Elles peuvent inclure une table IP basée serveur et mise en œuvre une fois pour toute, ou aller jusqu'à être complètement inclusives comme un changement d'application de la couche 7 (qui peut coûter moins cher dans un magasin de développement « château de cartes » qu'une révision complète du code — pour une compatibilité PCI — ou une réécriture). Pour une recherche automatique des bogues dans Tomcat par exemple, un changement d'architecture de l'IDS intégré ou de mod_security ou de mod_proxy vous épargnera des mois de DoS.

Si vous devez vous engager dans la mise en place de réseaux sociaux ou la navigation sur des sites de warez acceptant le javascript, ce serait peut-être pas mal de le faire depuis un système considéré comme non-sécurisé prévu pour ça .

Aborder la question sous plusieurs angles pour trouver des solutions en couches est un élément clé, et la moindre des choses est d'arrêter immédiatement le comportement de type couche 8 considéré comme dangereux. Éteignez le SSH quand vous êtes au café; vous ne vous en servez pas de toute façon. En fait, éteignez votre Bluetooth aussi, qui est probablement encore allumé par défaut, non ?

Une grande quantité de données va être dévoilée durant cette investigation, alors une approche organisée et documentée vous permettra d'y voir clair. Vous vous apercevrez qu'il pourrait être plus simple de remplacer ou mettre à niveau, plutôt que tenter de protéger. Il n'est pas irréaliste de s'attendre à devoir mettre à niveau au moins tous les quatre ans, vu que vous appliquez les patchs standards, si l'on en juge par le recul que nous donnent plus de 10 années d'histoire de Linux.

Si (quand) vous identifiez des politiques dangereuses (de gestion) au niveau de la couche 9, rédigez une documentation à ce sujet et faites remonter, de sorte que votre responsabilité en tant que techno-utilisateur conscient de la déontologie puisse circuler. L'indifférence ou d'autres attitudes telles que «les gens n'aiment pas les rapports de sécurité» ou « tout le monde l'a ignoré jusqu'ici, si je dis quelque chose maintenant, ils me prendront pour un idiot » portent préjudice à tous. Utilisez des références s'il le faut; la sécurité est la responsabilité de tous.

La plus dangereuse des politiques de la couche 8/9 intervient dans le cloisonnement de la sécurité informatique. Voici d'excellents exemples de cloisonnement :

  • Ubuntu est une distribution sécurisée dès qu'elle est installée

  • Linux est plus sécurisé que Windows, donc pas besoin de s'inquiéter

  • C'est Ted le responsable de la sécurité; c'est pas mon boulot

  • Notre section pare-feu surveille tous les problèmes de sécurité, ce n'est pas la fonction d'un webmaster

Alors que dans un environnement d'entreprise sain la responsabilité remonte, dans un environnement open source sain la responsabilité est un processus organisé; et nulle part on ne peut ignorer la sécurité.

Avoir zéro faiblesse est complètement irréaliste. Si vous travaillez dans une boutique qui fonctionne comme si il y avait un système de sécurité complet sans OPSEC, ou que vous vous retrouvez à penser qu'il n'y a pas de risques de sécurité, votre alarme doit s'activer. Une vigilance constante est la seule approche réaliste. Une règle générale : ceux qui sont conscients de ce qu'ils doivent protéger ont plus de chance de protéger des informations sensibles, a contrario de ceux qui n'en sont pas conscients.

Récupérez les données des experts sur les menaces, n'essayez pas de faire toute l'analyse par vous-même.

Cela peut être aussi simple qu'obtenir une liste des données du CERT (note du traducteur : Computer Emergency Response Team - Équipe d'Aide Informatique Urgente) concernant les technologies que vous utilisez, que ce soit l'IOS de Cisco pour votre Pix, ou simplement OpenWRT (note du traducteur : distribution Linux pour routeurs).

Et bien sûr vous ne voudrez pas y croire, mais en général il restera 8% d'experts en sécurité informatique capables de pénétrer vos systèmes, même après que vous ayez atténué tous les risques connus. C'est une vérité à prendre en compte dans votre analyse.

Focalisez-vous sur ce qui peut être protégé plutôt que sur ce que vous avez découvert.

Par exemple, vous pourriez vous apercevoir, après avoir joué avec BackTrack3 SMB4K que depuis le début votre SAMBA permettait l'échange sans-fil de fichiers à vos voisins sous Windows et que vos informations personnelles y compris vos photos étaient à la disposition de tout le monde. Fermez tout simplement la porte. La paranoïa en sécurité est optionnelle mais certainement pas recommandée.

C'est dans un plan d'action jalonné avec l'objectif d' atténuer les vulnérabilités qu'on aura la meilleure mise en forme des observations, résultats et propositions de contre mesures. Dans un environnement de production, ce plan ferait l'objet d'un dossier complet transmis aux décideurs, aux utilisateurs des équipes voisines, à toute personne concernée par le temps de disponibilité.

Intégrez OPSEC dans vos processus de décision et d'organisation dès le départ. Attendre la dernière minute avant la mise d'un produit sur le marché (ou sa récupération sur le marché) pour effectuer une estimation pourrait être trop tard et trop onéreux.

Je vous entends d'ici : « De quel service AQ (Assurance Qualité) parlez-vous? C'est nous, le service AQ, et on n'a pas le temps de scanner. ». C'est pourtant simple de lancer un Wikto/Nikto ou un scanner d'estimation sur votre application.

Vous montez un joli CMS PHP/MySQL ou n'importe quel autre portail de partage ? Vous utilisez SVN ? Figurez-vous que vous venez peut-être d'ouvrir un beau petit tunnel crypté avec entrée directe dans vos systèmes. Si vous ne vérifiez pas, vous ne le saurez pas ! Avez-vous évalué la sécurité de cette version de SugarCRM avant de la générer ? Avez-vous jeté un œil aux failles connues de cet outil open source avant de l'adopter ?

Des estimations régulières vous garantiront la meilleure protection.

Tout comme la reconstruction après une catastrophe, les estimations OPSEC de systèmes sont construites les unes sur les autres. Toute information découverte devient une ressource; les évaluations programmées et régulières continuent à la façon d'évènements coordonnés d'une équipe.

La sécurité des systèmes n'est pas un secret; OPSEC nous rappelle que les systèmes ne sont malsains dans la mesure où ils ont des secrets.

Lisa Kachold est une administratrice de Sécurité/Système Linux, webmaster, CCNA (note du traducteur : CISCO Certified Network Associate - Associée Réseau Certifiée CISCO), une bête de programmation, avec plus de 20 ans d'expérience productive en Unix/Linux. Lisa est une ancienne professeur de FreeGeek.org, une intervenante au DesertCodeCamp, une utilisatrice de Wikipedia et une membre avide de LinuxChix. Elle organise et promeut l'éducation à la Sécurité Linux via les labos Phoenix Linux Users Group HackFEST Series, discourait tous les second samedi du mois à la Fondation pour les enfants aveugles de Phoenix (Arizona). Obnosis.com est un jeu de mot trouvé par LR Hubbard, qui a été enregistré dans les années 90 comme un "piratage de mot" selon l'Église de Scientologie, après 6 ans d'administration de news sur UseNet. Sa plus grande prétention à la gloire, c'est de s'être assise dans la chaise de Linus Torvald durant une interview avec OSDL.org à Oregon en 2002.