Vendredi dernier, Erick Bullier, président du chapitre français de la Worldwide Open Cyber Security Association, m’a contacté pour me demander si je voulais animer le prochain déjeuner WOCSA à Montpellier, qui porte sur le thème général de l’Open Source et de la sécurité informatique. Erick m’a proposé de lui faire parvenir « une dizaine de slides, pas plus », et je lui ai avoué platement que je n’utilisais jamais des outils comme PowerPoint ou Impress. En règle générale, j’arrive les mains dans les poches à mes conférences. Cette fois-ci, j’ai voulu faire un effort, et j’ai trouvé un compromis. Me voilà donc en train de réfléchir à voix haute sur ce que je vais pouvoir raconter jeudi prochain. Je compte publier mes notes juste après mon exposé, ce qui permettra à mes auditeurs de garder une trace écrite de la présentation.
- Microlinux, l’Open Source et la sécurité
- L’Open Source, qu’est-ce que c’est ?
- Le stockage réseau pour les TPE et les PME
- Les solutions Open Source
- Sécuriser un stockage réseau
- Les briques logicielles Open Source
- Premier contact avec les cybermalveillants
- Comment protéger mon serveur ?
- Du code malveillant dans mon Linux ?
- Open Source et transparence
- La solution propriétaire Dropbox
- Qui sont les cyberméchants ?
- Conclusion
Microlinux, l’Open Source et la sécurité
Avant toute chose, permettez que je vous tende ma carte de visite. Je m’appelle Nicolas Kovacs, je suis autrichien, je vis en France depuis 1991. Je suis fondateur de Microlinux, une entreprise qui propose des solutions informatiques basées sur Linux et l’Open Source. Je suis également auteur de livres informatiques sur le système Linux pour l’éditeur Eyrolles, que je publie sous le nom de plume Kiki Novak.
Dans mon travail, j’utilise quotidiennement des outils Open Source, je suis donc raisonnablement familiarisé avec. Et je suis tout aussi quotidiennement confronté à des questions de sécurité informatique. Sur mon blog technique, j’écris très régulièrement des articles dans lesquels je décris en détail les configurations diverses et variées que j’installe pour mes clients, et la sécurité occupe une place centrale dans ces articles. La plupart des articles sont assez techniques – ou « pouennetus » comme on dit ici dans le Gard. Je vais donc faire de mon mieux pour vous présenter ça de manière vulgarisée, dans un langage accessible aux non-informaticiens.
La sécurité informatique est un sujet extrêmement vaste, et on pourrait consacrer sa vie à ne parler que de ça. Vous serez probablement surpris d’apprendre qu’il y a des gens qui ne font que ça, et pour avoir une idée, je vous invite à jeter un oeil sur le blog du cryptologue américain Bruce Schneier, qui est une des nombreuses références en la matière. Pour ce petit exposé, nous n’allons pas faire une présentation exhaustive. Je vais donc me contenter le temps d’un déjeuner de mettre en lumière quelques aspects à l’aide d’un cas de figure très concret pour vous sensibiliser un tout petit peu à la matière.
L’Open Source, qu’est-ce que c’est ?
Avant d’aller plus loin, expliquons peut-être en deux mots ce que c’est que l’Open Source. J’anime tous les ans le cours d’introduction à l’Open Source à l’École des Mines d’Alès, où je dois familiariser les développeurs et les administrateurs en herbe avec ce concept dans une série de conférences et de travaux pratiques. Vu que cette fois-ci je dispose de trente minutes et non pas de trente heures, je vais être beaucoup moins bavard.
Lorsque vous préparez une tarte aux pommes – c’est-à-dire si vous la faites vous-même et que vous ne vous contentez pas de l’acheter chez Marie Blachère – il vous faut la recette, les ingrédients, une cuisine et un peu de savoir-faire. Vous rassemblez les ingrédients comme la farine, les oeufs, les pommes, la canelle et le sucre, vous préparez votre tarte en suivant la recette, vous la mettez dans le four, et lorsqu’elle a fini de cuire, vous obtenez votre tarte. Notez qu’une fois que vous avez obtenu votre tarte, il n’est pas possible de revenir en arrière pour obtenir la recette de fabrication. Ou alors c’est une science très compliquée qu’on appelle la rétro-ingénierie.
En informatique, c’est un peu comme pour la tarte aux pommes, et je prie mes collègues de bien vouloir fermer les deux yeux sur les simplifications à outrance que je m’apprête à faire. Toutes les applications que vous utilisez au quotidien ont d’abord été écrites sous forme de code humainement lisible. Enfin, c’est des humains un peu spéciaux, les informaticiens, mais n’empêche, ce code source, c’est la recette de fabrication de l’application. Ce code, on ne va pas le mettre au four, mais on va le compiler, ce qui est un peu la même chose. Et au bout de la cuisson/compilation, on obtient non pas une tarte, mais un exécutable binaire qu’on va pouvoir distribuer. Comme pour la tarte, c’est difficile voire impossible de revenir en arrière pour retrouver la recette de fabrication à partir du produit final. Je note pour les chipoteurs qui frétillent sur leur chaise en lisant ces lignes que tous les plats ne passent pas nécessairement par le four de la cuisine, et que pareillement, il y a pas mal de code informatique qui n’est pas compilé mais interprété.
Le stockage réseau pour les TPE et les PME
Prenons un cas de figure concret de mon quotidien. Une configuration que je déploie assez régulièrement, et je vais en parler en mettant les considérations de sécurité au premier plan.
Parmi mes clients, j’ai surtout des TPE, des PME et des associations. Un besoin récurrent pour ces professionnels, c’est le stockage réseau. Le fait de pouvoir stocker les données de l’entreprise de manière centralisée, de pouvoir les partager en définissant des droits d’accès, et le fait de pouvoir y accéder de partout, et si possible à partir de tous les systèmes, c’est-à-dire Microsoft Windows, Mac OS et Linux, sans oublier les tablettes et les smartphones sous Android et iOS.
Vous utilisez peut-être déjà vous-même une des solutions établies pour le stockage réseau. Voici les plus célèbres.
Les solutions Open Source
OwnCloud et NextCloud sont des alternatives Open Source (comprendre « libres et transparentes ») aux solutions propriétaires que je viens de nommer. Dans mon quotidien, j’utilise OwnCloud par simple habitude et parce qu’il répond à tous mes besoins et à ceux de mes clients.
Une première différence cruciale avec les solutions comme Dropbox, Google Drive, iCloud ou OneDrive, c’est qu’avec OwnCloud et NextCloud, le stockage des données s’effectue normalement au sein de l’infrastructure de l’entreprise et non pas dans un cloud public. Physiquement, vos données se trouvent donc soit sur une machine installée dans vos locaux, soit sur un serveur dédié situé dans un datacenter en France, et c’est votre entreprise qui contrôle la politique d’accès aux fichiers. Je reviendrai sur ce point.
Sécuriser un stockage réseau
À quel moment est-ce que l’on peut dire que notre installation est sécurisée ?
- L’application doit fonctionner correctement, sans plantages ou autres blocages.
- Les données de l’entreprise doivent être accessibles aux personnes qui ont le droit d’y accéder.
- En dehors de cela, elles ne doivent être accessibles à personne d’autre.
- Une erreur de manipulation ne doit pas entraîner une perte de données.
Les briques logicielles Open Source
Partant d’une machine vide, un serveur OwnCloud est composé d’un certain nombre de briques logicielles.
- le système d’exploitation (CentOS)
- un serveur Web (Apache)
- un serveur de bases de données (MySQL/MariaDB)
- le langage de scripts PHP
- un certficat SSL (Let’s Encrypt)
- un serveur mail (Postfix)
- etc.
Ces composants logiciels constituent autant de prérequis pour héberger l’application OwnCloud. Je ne vais pas vous inquiéter avec les détails techniques, qui figurent à peu près tous sur mon blog.
Premier contact avec les cybermalveillants
J’ai dit que j’allais faire cette présentation avec un focus sur la sécurité. Voyons ce que ça veut dire concrètement. J’ai effectué l’installation du système de base de mon serveur vendredi soir, en me disant que je m’y reconnecterai le weekend pour continuer à travailler dessus. La machine est située dans un datacenter à quelques centaines de kilomètres de mon bureau.
Dimanche après-midi, je me reconnecte à mon serveur fraîchement installé, et mon terminal m’affiche l’avertissement suivant. There were 48287 failed login attempts since the last successful login. Concrètement, cela veut dire qu’en l’espace de 48 heures, il y a eu un peu moins de 50.000 tentatives de connexion à ma machine. Par curiosité, je regarde un peu d’où vient tout ce petit monde, puisque chaque tentative de connexion est enregistrée dans les logs, le journal de bord du serveur si l’on peut dire. Je retrace quelques adresses IP, qui m’amènent aux États-Unis, en Chine et en Russie.
Je ne pousse pas plus loin ici cette investigation, mais voici ce qu’il faut retenir. Lorsqu’on fait de l’infogérance sur un serveur dédié – c’est-à-dire une machine avec une ouverture frontale sur Internet – c’est un peu comme lorsqu’on construit une banque dans un quartier chaud. On a à peine fini les travaux de peinture et les meubles ne sont pas encore installés, mais voilà déjà les voitures bélier qui arrivent pour défoncer la porte d’entrée.
Comment protéger mon serveur ?
Disons-le clairement ici. Le système d’exploitation parfait et 100 % sécurisé n’existe pas. Même si les utilisateurs d’OpenBSD vous diront le contraire, mais c’est une autre histoire. Jetez un oeil sur le site Common Vulnerabilites and Exposures, c’est la base de données centrale de toutes les failles de sécurité connues pour tous les systèmes confondus.
Ceci étant dit, ça ne veut pas dire que je ne dors plus la nuit. Pour commencer, je garde à l’esprit le fait que je travaille sur un système qui est un clone libre d’Unix, et qui a donc été conçu sainement dès le départ.
- Il définit clairement les droits d’accès aux fichiers.
- Il sépare les processus bien proprement.
- Il a été conçu dès le départ pour fonctionner en réseau.
Ce n’est pas tout, mais c’est déjà une bonne base.
Partant de là, il existe toute une série de techniques pour me protéger de tout ce petit monde qui veut désespérément rentrer dans ma machine alors qu’il n’a rien à y faire, en limitant ou en bloquant les tentatives d’intrusion. Voilà quelques idées en vrac de tout ce que je pourrais faire.
- Bloquer l’accès distant pour l’administrateur
root
. - Remplacer l’accès par mot de passe par une authentification par clé SSH.
- Peaufiner les règles de pare-feu.
- Installer Fail2Ban.
- Installer le détecteur d’intrusions Snort.
- Désactiver ou supprimer les services inutiles pour réduire la surface d’attaque.
- Configurer les mises à jour automatiques parce qu’un système qui n’est pas à jour est un système qui accumule les vulnérabilités.
- Etc.
Je décris quelques-uns de ces mécanismes dans mon blog. Si je ne vous en parle pas ici, c’est parce que c’est très technique et probablement aussi très ennuyeux pour les non-informaticiens.
Du code malveillant dans mon Linux ?
En revanche, je vous parle quand-même brièvement d’une brique logicielle que j’utilise sur toutes mes configurations, et vous allez voir pourquoi. Il s’agit de SELinux (Security Enhanced Linux). C’est un mécanisme de sécurité développé pour Linux par la NSA, la National Security Agency, et utilisé principalement sur les systèmes Red Hat, Fedora et CentOS. Ce système améliore de façon significative la sécurité des serveurs sur lequel il est déployé, mais là encore, je ne vais pas rentrer dans les détails, parce que c’est d’une complexité considérable. Pour vous faire une vague idée, lisez l’article d’introduction à SELinux que j’ai publié sur mon blog technique.
Ce qui nous intéresse ici, c’est que SELinux a été développé par la NSA, un service secret tristement célèbre pour ses opérations de surveillance à l’échelle planétaire depuis les révélations du lanceur d’alerte Edward Snowden. Partant de là, il est facile d’imaginer – et beaucoup de gens le font d’ailleurs, à en juger d’après les discussions réitérées à ce sujet – que la NSA en aurait profité pour glisser du code malveillant dans le noyau Linux, qui lui permettrait d’étendre ses opérations de surveillance à toutes les machines tournant sous Linux, c’est-à-dire la quasi-totalité des serveurs de la planète.
Avant de sombrer dans la paranoïa la plus totale, on va donc noter que SELinux est avant tout un projet Open Source, dont la recette de fabrication – si l’on peut dire – est librement disponible, de A à Z. Le code de SELinux a été audité par un nombre important d’experts indépendants avant d’être officiellement inclus dans le noyau Linux en 2003.
Open Source et transparence
Une fois que je dispose d’un serveur correctement configuré et sécurisé avec les services de base comme le serveur Web et le serveur de bases de données, je peux installer et configurer OwnCloud. Là encore, je ne vais pas rentrer dans les détails techniques. Ce qu’il faut retenir ici, c’est qu’il s’agit d’une application Open Source, c’est-à-dire que je peux théoriquement regarder sous le capot pour voir ce qu’il y a dedans et qu’il y a une transparence totale.
La même chose vaut pour l’application client OwnCloud, que je peux installer sur un poste tournant sous Windows, Mac OS ou Linux, ou sur une tablette ou un smartphone tournant sous Android ou iOS. L’application est Open Source, et même si ce n’est pas moi personnellement qui vais aller jeter un oeil pour savoir ce qu’il y a dedans, les développeurs du monde entier sont libres de le faire.
La solution propriétaire Dropbox
Maintenant, revenons en arrière et imaginons qu’au lieu d’OwnCloud, j’aie opté pour une solution propriétaire établie comme Dropbox. Je pense que la plupart d’entre vous connaissent Dropbox et son principe de fonctionnement.
- Vous créez un compte sur le site de Dropbox.
- Vous installez l’application Dropbox sur tous les postes que vous souhaitez synchroniser, qu’il s’agisse d’un PC sous Windows ou Linux, d’un Mac, d’une tablette ou d’un smartphone.
- Au départ vous disposez d’un volume de données gratuit de 2 Go.
- Ce volume est extensible via un système de parrainage.
- En dehors de cela, vous avez accès à toute une série de formules payantes en fonction du volume de données requis.
Physiquement, vos données sont rangées sur le cloud de Dropbox. Ici, il convient de rappeler que le cloud, c’est tout d’abord l’ordinateur de quelqu’un d’autre. Le ou les ordinateurs en question sont situés aux États-Unis, c’est-à-dire qu’ils sont soumis à la législation américaine et son ingérence notoire. Pour simplifier, on peut partir du principe qu’à partir du moment où vos données sont stockées sur un de ces serveurs, vous en faites cadeau aux services divers et variés comme la NSA, le FBI, la CIA, etc. Je sais très bien qu’il y a toujours un relent de discours conspirationniste dans tout cela, mais je vous invite à lire les révélations d’Edward Snowden, et vous vous apercevrez qu’ici, la réalité dépasse de loin la fiction la plus dystopique. Bref.
Pour synchroniser vos données sur les postes clients, vous installez le logiciel fourni par Dropbox pour toutes les plateformes courantes. Ce logiciel est propriétaire, vous ne pouvez donc pas regarder sous le capot. En d’autres termes, c’est une boîte noire que vous installez sur votre machine, sans trop savoir ce qu’elle contient.
Et pour ce qui est de la politique d’accès aux données, notons que les conditions d’utilisation de Dropbox stipulent explicitement que l’entreprise peut utiliser les fichiers stockés par leurs clients sans leur autorisation. Et comme pour enfoncer le clou, jetons un œil au conseil d’administration de l’entreprise Dropbox, où nous retrouvons Condoleeza Rice, l’ancienne secrétaire d’état sous George W. Bush.
Avec tous ces éléments, on peut légitimement se poser la question ce que vaut la confidentialité de nos données. Notons qu’Edward Snowden nous en parle, puisque dans une de ses interviews, il nous dit que Dropbox ‘est un des pires spywares qui existent.
Qui sont les cyberméchants ?
Nous venons de voir deux solutions de stockage réseau, la solution Open Source OwnCloud et la solution propriétaire Dropbox, en faisant un tour d’horizon sur les risques potentiels auxquels est exposé une telle installation, et les problèmes que peut poser l’utilisation d’une solution propriétaire. Je pourrais m’amuser à poser une question qui ouvre un autre débat.
Qui sont les cyberméchants ?
Qui sont donc tous ces gens susceptibles de mettre en péril le bon fonctionnement de mon installation, l’intégrité de mes données et la confidentialité de ces dernières ?
Lorsqu’on lit la presse grand public ou lorsqu’on regarde un reportage TV qui parle de sécurité informatique, on a systématiquement affaire à la même caricature du cyberméchant, qui a toujours la même dégaine. Une capuche noire, un masque de Guy Fawkes et une paire de gants de chantier. Notez que les gants de chantier, ce n’est pas très commode pour taper sur un clavier.
Dans le cas de figure que j’ai présenté, j’ai certes été confronté à une horde anonyme d’utilisateurs qui essaient d’ouvrir une session à distance sur mon serveur en faisant ce qu’on appelle une attaque en force brute ou attaque au dictionnaire. La plupart de ces attaques proviennent des script kiddies, les jeunes hackers apprentis qui testent des scripts d’attaque en force brute sur des machines publiques. Ici, notre profil d’attaquant, c’est vraisemblablement Jean-Kevin Tartempion qui s’amuse dans le sous-sol de ses parents.
En dehors de ça, si je pars du principe que la confidentialité ce n’est pas simplement un truc de vieux con, je me retrouve également confronté à deux autres entités.
- Une entreprise californienne qui se moque plus ou moins ouvertement du caractère confidentiel de mes données, en stipulant explicitement dans ses conditions d’utilisation qu’elle est libre de se servir allègrement dans mes données.
- Les services américains qui partent du principe qu’à partir du moment où vos données sont stockées physiquement sur le territoire américain, elles leur appartiennent.
Conclusion
Vous pouvez donc faire un bras d’honneur à tout ce petit monde que vos données ne regardent pas en hébergeant votre propre solution sur du matériel situé en France, en utilisant des briques logicielles Open Source de A à Z.
Pensez à la métaphore culinaire que j’ai développée au début de ma présentation. Si vous considérez qu’on vit à une époque de malbouffe logicielle généralisée, utiliser l’Open Source, c’est choisir l’informatique bio faite par des informaticiens élevés en plein air.
La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.