10.6. Sécurité des mots de passe et cryptage

Note

La plupart des programmes de cryptage décrits dans ce chapitre sont disponibles dans votre distribution Mandrake Linux.

Une des caractéristiques de sécurité les plus importantes utilisée aujourd'hui est le mot de passe. Il est important que vous et vos utilisateurs ayez des mots de passe sûrs et impossibles à deviner. Votre distribution Mandrake Linux fournit le programme passwd qui interdit l'utilisation d'un mot de passe trop simple. Assurez vous que votre version de passwd est à jour.

une discussion en profondeur du thème du cryptage est au delà de la portée de ce document, mais une introduction est de rigueur. Le cryptage est très utile, parfois même nécessaire à notre époque. Il y a toutes sortes de méthodes de cryptage des données, chacune avec ses propres caractéristiques.

La plupart des UNIXs (et GNU/Linux n'y fait pas exception) utilise principalement un algorithme de chiffrement à sens unique appelé DES (Data Encryption Standard, soit Standard de cryptage de données) pour crypter vos mots de passe. Ce mot de passe crypté est alors gardé dans le fichier /etc/shadow. Quand vous essayez de vous connecter, le mot de passe que vous tapez est crypté à nouveau et comparé avec l'entrée contenue dans le fichier qui contient les mots de passe. S'ils coïncident, cela doit être le même mot de passe, et l'accès est alors autorisé. Bien que DES soit un algorithme de cryptage à double sens (vous pouvez coder puis décoder un message, la bonne clé étant fournie), les variantes utilisées par la plupart des UNIXs est à sens unique. Cela signifie qu'il ne devrait pas être possible de renverser le chiffrement pour récupérer le mot de passe d'après le contenu du fichier /etc/shadow.

Des attaques en force, du type « Crack  » ou « John the Ripper  » (voir la section « Crack  » et « John the Ripper  ») peuvent souvent deviner vos mots de passe, à moins qu'ils ne soient suffisamment aléatoires. Les modules PAM (voir ci-dessous) vous permettent d'utiliser différentes routines de cryptage pour vos mots de passe (MD5 ou similaire). Vous pouvez aussi utiliser Crack à votre avantage. Envisagez de le lancer périodiquement sur votre propre base de mots de passe, pour trouver les mots de passe non sûrs. Contactez alors l'utilisateur en infraction, et demandez lui de changer son mot de passe.

Vous pouvez vous rendre à http://consult.cern.ch/writeup/security/security_3.html pour des conseils sur le choix d'un bon mot de passe.

10.6.1. PGP et la cryptographie à clé publique

La cryptographie à clé publique, comme celle utilisée par PGP, utilise une clé pour le cryptage, et une autre pour le décryptage. La cryptographie traditionnelle, pourtant, utilise la même clé pour le cryptage, et le décryptage; cette clé doit être connue des deux côtés, et quelqu'un a donc dû transférer de manière sûre la clé d'un côté à l'autre.

pour soulager le besoin de transférer de manière sûre la clé de chiffrement, la clé publique d'encryption utilise deux clés séparées : Une clé publique et une clé privée. La clé publique de chacun est disponible pour quiconque pour faire le cryptage, alors que cependant, chacun garde sa clé privée pour décrypter les messages cryptés avec la clé publique.

Il y a des avantages aux deux méthodes de cryptage, clé publique ou clé privée, et vous pouvez lire à propos de leurs différences : La FAQ pour la cryptographie RSA, citée à la fin de cette section.

PGP (Pretty Good Privacy, soit intimité plutôt bonne) est bien toléré par GNU/Linux. Les versions 2.6.2 et 5.0 sont reconnues pour leur stabilité. Pour des nouvelles de PGP et comment l'utiliser, jetez un coup d'oeil à la FAQ de PGP : faqs.org

Veillez à utiliser la version autorisée dans votre pays. Du fait des restrictions d'exportation du gouvernement américain, il est interdit de transférer hors de ce pays de la cryptographie lourde sous forme électronique.

Les contrôles d'exportation des US sont maintenant gérés par EAR (Export Administration Regulations), et non plus par ITAR.

Il y a aussi un guide pas à pas pour configurer PGP sous GNU/Linux disponible à LinuxFocus. Il a été écrit pour la version internationale de PGP, mais est aisément transposable à la version des États-Unis.

Il y a un projet travaillant dur une réimplantation libre de PGP sous licence «  open source   ». GnuPG est un remplaçant complet et libre pour PGP. Du fait qu'il n'utilise pas IDEA ou RSA il peut être utilisé sans aucune restriction. GnuPG respecte pratiquement OpenPGP. Voir la page Web «  GNU Privacy Guard   » pour plus d'information : http://www.gnupg.org/.

Vous trouverez plus de renseignements au sujet de la cryptographie dans la FAQ du site de la cryptographie RSA. Vous trouverez ici toute l'information sur des sujets tels que « Diffie-Hellman  », « cryptographie à clé publique  », « certificats électroniques  », etc.

10.6.2. SSL, S-HTTP, HTTPS et S/MIME

Les utilisateurs se demandent souvent ce qui différencient les différents protocoles de cryptage, et comment les utiliser. Bien que ce document ne soit pas consacré au cryptage, il est bon d'expliquer brièvement ce qu'est chaque protocole, et où trouver plus d'information.

10.6.3. Implémentations IPSEC

A côté de CIPE, et d'autres formes de cryptage de données, il y a aussi plusieurs implémentations de IPSEC pour GNU/Linux. IPSEC est une tentative de l'IETF pour créer des communications cryptographiquement sûres au niveau du réseau IP, et assurer authentification, intégrité, contrôle d'accès, et confidentialité. Des information sur IPSEC le projet Internet peut être consulté à : http://www.ietf.org/html.charters/ipsec-charter.html. Vous pouvez aussi trouver des liens vers d'autres protocoles impliquant la gestion de clés, et une mailing list IPSEC et son archive.

L'implémentation de GNU/Linux x-kernel, qui était développée (ce projet n'est plus maintenu) à la University of Arizona, utilisait une base orientée objet pour implémenter les protocoles réseau appelés x-kernel, et peut être trouvée sur le site de l'université. En clair, le x-kernel est une méthode pour passer les messages au niveau du noyau, ce qui facilite l'implémentation.

Une autre implémentation librement disponible de IPSEC est l'IPSEC « FreeS/WAN  » GNU/Linux . Leur page Web indique : «  Ces services vous permettent de monter un tuyau sécurisé à travers des réseaux non fiables. Tout ce qui passe à travers le réseau non fiable est crypté par la machine passerelle IPSEC et décrypté par la passerelle à l'autre bout. Cela conduit à un réseau privé virtuel ou VPN (Virtual Private Network). Cela est un réseau qui est effectivement privé, même si il inclut des machines de plusieurs sites différents interconnectés par Internet, incertain.  »

Elle est disponible en téléchargement sur le site Linux FreeS/WAN.

De même que d'autres formes de cryptographie, elle n'est pas distribuées dans le noyau par défaut, à cause des restrictions à l'export.

10.6.4. ssh (shell sécurisé) et stelnet

ssh et stelnet sont des suites de programmes qui permettent de se connecter à un système distant avec des échanges cryptés.

ssh est une suite de programmes utilisée comme remplacement sécurisé de rlogin, rsh et rcp. Elle utilise la cryptographie à clé publique pour crypter les communications entre deux hôtes, ainsi que l'authentification des utilisateurs. Ces outils peuvent être utilisés pour se connecter à un serveur distant ou copier des données entre deux hôtes, tout en empêchant des attaques de tiers («  session hijacking   ») et «  DNS spoofing   ». Ils assurent la compression de données sur vos connections et les communications X11 sécurisées.

Il y a à l'heure actuelle plusieurs implémentations de ssh. L'implémentation commerciale originale par datafellows ssh peut être trouvée à http://www.datafellows.com.

L'excellente implémentation Openssh est basée sur une ancienne version de datafellows ssh et a été entièrement retravaillée pour n'inclure aucun brevet ou partie propriétaire. Elle est libre et sous licence BSD. Elle peut être trouvée à : http://www.openssh.com.

Il y a aussi un projet «  open source   » pour réimplémenter ssh depuis le néant appelé « psst...  ». Pour plus de renseignement, consulter : http://www.net.lut.ac.uk/psst/.

Vous pouvez aussi utiliser ssh depuis vos stations Windows vers votre serveur ssh GNU/Linux. Il y a plusieurs implémentations de clients windows librement disponibles, dont celui de PuTTY, ainsi qu'une version commerciale de DataFellows, sur le site Datafellows.

SSLeay (obsolète, voir OpenSSL plus loin) est une implémentation libre du protocole Secure Sockets Layer de Netscape, développé par Eric Young. Il comporte plusieurs applications, comme « Secure telnet  », un module pour Apache, plusieurs bases de données, ainsi que plusieurs algorithmes dont DES, IDEA et « Blowfish  ».

En utilisant cette bibliothèque, un remplacement de telnet sécurisé qui fait de l'encryption par dessus une connexion telnet. Au contraire de SSH, stelnet utilise SSL, le protocole Secure Sockets Layer développé par Netscape. Vous pourrez trouver « Secure telnet  » et « Secure FTP  » en commençant par la FAQ SSLeay, disponible à psy.uq.oz.au.

Note

Le projet OpenSSL basé sur SSLeay a pour but de développer une boite à outils robuste, de qualité commerciale, entièrement fonctionnelle, et «  Open Source   » qui implémente les protocoles «  Secure Sockets Layer   » (SSL v2/v3) et «  Transport Layer Security   » (TLS v1) ainsi qu'une librairie de cryptographie forte d'usage général. Pour plus d'information sur ce projet, consultez les PagesOpenSSL. Il y a aussi une liste conséquente d'applications basées sur OpenSSL à Applications en relation avec OpenSSL.

SRP est une autre implémentation sécurisée de telnet/ftp. Extrait de leur page Web :

« Le projet SRP développe des logiciels Internet sûrs pour utilisation mondiale gratuite. À partir d'une distribution de Telnet et FTP totalement sécurisés, nous espérons supplanter les systèmes d'authentification réseau vulnérables par des substituts solides qui ne sacrifient en rien la facilité d'utilisation pour la sécurité. La sécurité devrait être de fait et non pas une option!   »

Pour plus de renseignements, visiter stanford.edu.

10.6.5. PAM - Modules Additionnels d'Authentification

Votre version de Mandrake Linux est fournie avec une combinaison d'authentifications unifiée appelée PAM. PAM vous permet de changer vos méthodes d'authentification et exigences à la volée, et encapsule toutes les méthodes locales d'authentification sans besoin de recompiler un quelconque binaire. La configuration de PAM est au delà de la portée de ce chapitre, mais allez faire un tour du côté du site Web de PAM : kernel.org.

Juste un aperçu des possibilités de PAM :

En quelques heures d'installation et de configuration de votre système, vous pouvez empêcher plusieurs attaques avant qu'elles ne surviennent. Par exemple, utilisez PAM pour désactiver l'utilisation sur tout le système des fichiers .rhosts dans les répertoires des utilisateurs en ajoutant ces lignes dans /etc/pam.d/rlogin :
		#
		# Désactiver rsh/rlogin/rexec pour les utilisateurs
		#
		login auth required pam_rhosts_auth.so no_rhosts

10.6.6. Encapsulation IP Cryptographique (CIPE)

Le premier objectif de ce logiciel est de fournir un moyen de sécuriser (contre l'espionnage, y inclus l'analyse de trafic, et l'injection de message truqué) des interconnexions de sous-réseaux au travers d'un réseau par paquets non sûr tel que Internet.

CIPE encrypte les données au niveau du réseau. Les paquets voyageant entre les hôtes sur le réseau sont cryptés. Le moteur de cryptage est placé près du périphérique qui envoie et reçoit les paquets.

Cela est différent de SSH, qui crypte les données par connexion, au niveau du port (socket). Une connexion logique entre des programmes tournant sur des hôtes différents est cryptée.

CIPE peut être utilisé pour faire du pontage (tunnelling), afin de créer un réseau privé virtuel (VPN). Le cryptage de bas niveau a l'avantage de pouvoir être rendu transparent entre deux réseaux connectés dans le VPN, sans besoin de changer une quelconque application.

Résumé depuis la documentation de CIPE :

«  Le standard IPSEC définit un ensemble de protocoles qui peuvent être utilisés (entre autre) pour monter des VPNs cryptés. Cependant, IPSEC est un protocole plutôt lourd et compliqué possédant un grand nombre d'options, les implémentations de l'ensemble complet du protocole sont encore rarement utilisés et plusieurs problèmes (tel que la gestion des clés) ne sont toujours pas complètement résolus. CIPE utilise une approche simple, dans laquelle beaucoup de choses modifiables (comme le choix de l'algorithme de cryptage effectivement utilisé) sont fixées à l'installation. Cela limite la flexibilité, mais permet une implémentation simple (et par là même efficace, facile à déboguer...).  »

Plus d'informations peuvent être trouvées à http://www.inka.de/~bigred/devel/cipe.html

De même que d'autres formes de cryptographie, il n'est pas distribué avec le noyau par défaut du fait de restrictions à l'export.

10.6.7. Kerberos

Kerberos est un système d'authentification développé par The Athena Project au MIT. Quand un utilisateur se connecte, Kerberos authentifie cet utilisateur (en utilisant un mot de passe), et fournit à cet utilisateur un moyen de prouver son identité aux autres serveurs et hôtes disséminés sur le réseau.

Cette authentification est alors utilisée par des programmes tels que rlogin pour autoriser l'utilisateur à se connecter à d'autres hôtes sans mot de passe (au lieu du fichier .rhosts). Cette méthode d'authentification peut aussi être utilisée par le système de courrier électronique pour garantir que les messages seront délivrés à la bonne personne, ainsi que pour garantir l'authenticité de l'expéditeur.

Kerberos et les programmes qui l'accompagnent, empêchent les utilisateurs de tromper le système en lui faisant croire qu'ils sont quelqu'un d'autre («  spoofing   »). Malheureusement, installer Kerberos est très intrusif, et demande le remplacement ou la modification de nombreux programmes standards.

Vous pourrez trouver plus d'informations à propos de Kerberos en visitant la FAQ Kerberos, et le code peut être obtenu depuis le site de la Kerberos: The Network Authentication Protocol.

[Stein, Jennifer G., Clifford Neuman, and Jeffrey L. Schiller. "Kerberos: An Authentication Service for Open Network Systems." USENIX Conference Proceedings, Dallas, Texas, Winter 1998.]

Kerberos ne devrait pas être votre premier pas pour améliorer la sécurité de votre hôte. Il est plutôt compliqué, et pas aussi répandu que, disons SSH.

10.6.8. « Crack  » et « John the Ripper  »

Si pour une raison quelconque votre programme passwd ne force pas l'utilisation de mots de passe difficiles à deviner, vous pourrez souhaiter utiliser un programme de cassage de mots de passe pour vous assurer que les mots de passe de vos utilisateurs sont sûrs.

Les programme de cassage de mots de passe reposent sur une idée simple : ils essayent tous les mots du dictionnaire, puis des variations sur ces mots, en cryptant chacun d'eux et les comparant à vos mots de passe cryptés. S'ils obtiennent une correspondance, ils ont trouvé le mot de passe

Il y a plusieurs programmes de ce type les deux les plus connus sont Crack et John the Ripper (voir OpenWall). Malheureusement, ils consomment beaucoup de temps CPU, mais vous devriez être capable de vérifier si un attaquant est susceptible de pénétrer en les utilisant vous-même, puis en avertissant les utilisateurs dont le mot de passe est trop faible. Notez qu'un attaquant devra d'abord utiliser un autre trou pour pouvoir lire votre fichier /etc/shadow, mais de tels trous sont plus courants que vous ne le pensez.

Parce que la sécurité n'est aussi forte que le plus faible des hôtes, il est bon de mentionner que si vous avez des machines Windows sur votre réseau, vous devriez jeter un coup d'œil à L0phtCrack, une implantation de Crack sous windows. Il est disponible depuis le site @stake.

10.6.9. CFS - Système de Fichiers Crypté et TCFS - Système de Fichiers Crypté Transparent

CFS (Cryptographic File System) permet de chiffer une arborescence complète ; pour leur part, les utilisateurs peuvent y enregistrer des fichiers cryptés. Il utilise un serveur NFS tournant sur la machine locale. Plus de renseignements ainsi que les sources sont disponibles sur le site de AT&T.

TCFS (Transparent Cryptographic File System) améliore CFS en lui ajoutant une meilleure intégration dans le système de fichiers, de sorte qu'il devient transparent aux utilisateurs. Plus d'information sur le site de TCFS.

il n'a pas non plus besoin d'être utilisé sur des systèmes de fichiers complets. Il fonctionne aussi bien sur de simples arborescences.

10.6.10. X11, SVGA et sécurité de l'affichage

10.6.10.1. X11

Il est important de sécuriser votre affichage graphique pour empêcher les attaquants de saisir vos mots de passe lorsque vous les tapez Lire des documents ou des informations que vous consultez à l'écran, ou même utiliser un trou de sécurité pour obtenir l'accès root. Lancer des applications X par réseau peut aussi être plein de dangers, en autorisant des «  sniffers   » à voir votre interaction avec le système distant.

X possède un certain nombre de mécanismes d'accès de contrôle. Le plus simple d'entre eux est basé sur l'hôte : vous utilisez xhost pour spécifier quels hôtes sont autorisés à accéder à votre affichage. Cela n'est pas du tout sûr, car si quelqu'un a accès à votre machine, il peut xhost + sa.machine et rentrer aisément. Ainsi, si vous devez autoriser l'accès à une machine peu sûre, quiconque là bas peut violer votre affichage.

Si vous utilisez xdm (X Display Manager), ou son équivalent pour KDE KDM, pour vous connecter, vous disposez d'une bien meilleure méthode d'accès : MIT-MAGIC-COOKIE-1. Un « cookie  » de 128 bits est généré et placé dans votre fichier .Xauthority. Si vous avez besoin d'autoriser un accès distant à votre affichage, vous pouvez alors utiliser la commande xauth et l'information qui se trouve dans votre fichier .Xauthority pour fournir l'accès à cette seule connexion. Voyez le Remote-X-Apps mini-howto : LDP.

Vous pouvez aussi utiliser ssh (voir ssh (shell sécurisé) et stelnet, ci-dessus) pour permettre des connexions X sécurisées. Cela possède l'avantage d'être totalement transparent pour l'utilisateur, et signifie qu'aucune donnée en clair ne circule sur le réseau.

Vous pouvez aussi désactiver n'importe quelle connexions distantes à votre serveur X en utilisant l'option -nolisten tcp vers votre serveur X. Ainsi, vous préviendrez toutes les connexions réseau vers votre serveur sur des interfaces de connexion (sockets) TCP.

Jetez un coup d'œil à la page de man de Xsecurity pour plus de renseignements concernant la sécurité sous X. La bonne manière est d'utiliser kdm pour vous connecter à la console, puis utiliser ssh pour aller sur un site distant sur lequel vous lancez votre application X.