| Mandrake Linux 8.2: Manuel de référence serveur | ||
|---|---|---|
| Page précédente | Chapitre 10. De la sécurité sous GNU/Linux | Page suivante |
![]() | 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.
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.
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.
SSL : - SSL (Secure Sockets Layer) est une méthode de cryptage développée par Netscape pour fournir de la sécurité sur Internet. Il prend en charge plusieurs protocoles de cryptage et fournit l'authentification du client et du serveur. SSL agit sur la couche transport, crée un canal crypté de données et peut ainsi encoder des données de diverses natures. Vous constaterez cela lorsque vous visiterez un site sécurisé pour consulter un document en ligne avec Communicator. C'est également la base des communications sécuritaires avec Communicator, ainsi qu'avec plusieurs composantes de chiffrement de données de Netscape Communications. Vous trouverez plus de renseignements sur le site Openssl.org. Des informations sur les autres implémentations de sécurité de Netscape et un bon point de départ pour ces protocoles sont disponibles sur le site de Netscape. Mentionnons aussi que le protocole SSL peut être utilisé pour passer nombre de protocoles communs, les enveloppant par sécurité. Voir le site de Quiltaholic.
S-HTTP : - S-HTTP est un autre protocole qui fournit des services de sécurité par Internet. Il a été conçu pour pourvoir, aux deux parties impliquées dans les transactions, confidentialité, authentification, intégrité, et non répudiation [ne pas pouvoir être pris pour un autre] tout en gérant des mécanismes à clés multiples et des algorithmes de cryptographie à négociation d'options. S-HTTP est limité au logiciel spécifique qui l'implémente et crypte chaque message individuellement. [ extrait de « RSA Cryptography FAQ », page 138]
S/MIME : - S/MIME (Secure Multipurpose Internet Mail Extension, soit extension de courrier électronique sécurisé à portée multiple) est un standard de cryptage utilisé pour crypter le courrier électronique et autres types de messages sur Internet. C'est un standard ouvert développé par la RSA, de sorte qu'il est probable qu'il apparaisse sous GNU/Linux un jour ou l'autre. plus de renseignements sur S/MIME peuvent être trouvées sur le site de développement de Netscape.
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.
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.
![]() | 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.
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 :
Utiliser un cryptage autre que DES pour vos mots de passe. (Les rendant plus résistant aux décodages par la force)
Fixer des limites de ressources pour tous vos utilisateurs, de sorte qu'ils ne puissent mener des attaques de type dénis de service (denial of service) (nombre de processus, quantité de mémoire, etc.)
Activer les mots de passe fantôme (shadow) (voir ci-dessous) à la volée
autoriser certains utilisateurs à se connecter uniquement à certaines heures depuis des sites spécifiques
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 |
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.
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.
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.
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.
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.
Les programmes SVGAlib sont généralement suid-root de façon à pouvoir accéder à tout vos périphériques vidéo. Cela les rends très dangereux. S'ils plantent, Vous devez généralement redémarrer la machine pour récupérer une console utilisable. Assurez vous que chaque programme SVGA que vous utilisez est authentique, et que vous pouvez leur faire confiance. Ou mieux, me les utilisez pas du tout.
Le projet GNU/Linux GGI essaye de résoudre plusieurs des problèmes de l'interface graphique de GNU/Linux. GGI déplace une petite partie du code vidéo dans le noyau de GNU/Linux, et contrôle alors l'accès au système vidéo. Ce qui signifie que GGI sera capable de récupérer votre console à tout instant vers un état stable connu. Cela permet aussi d'utiliser une clé de sécurité qui empêche l'utilisation de programmes login de type « cheval de Troie » (Trojan) sur votre console. Projet GGI
| Page précédente | Début | Page suivante |
| Sécurité des fichiers et des systèmes de fichiers | Remonter | Sécurité du noyau |