[ précédent ] [ Table des matières ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ A ] [ B ] [ C ] [ D ] [ E ] [ F ] [ G ] [ H ] [ I ] [ J ] [ suivant ]

Manuel de sécurisation de Debian
Chapitre 3 - Avant et pendant l'installation


3.1 Choisir un mot de passe pour le BIOS

Avant d'installer un système d'exploitation sur votre ordinateur, créez un mot de passe pour le BIOS. Après l'installation (une fois que vous avez rendu possible un démarrage à partir du disque dur), retournez dans le BIOS et changez la séquence de démarrage afin de rendre impossible le démarrage à partir d'une disquette, d'un cdrom ou de tout autre périphérique. Sinon un pirate n'a besoin que d'un accès physique et d'une disquette de démarrage pour accéder au système complet.

Désactiver le démarrage sans mot de passe est solution encore meilleure. Ceci peut être très efficace pour un serveur car il n'est pas redémarré très souvent. L'inconvénient de cette méthode est que le redémarrage nécessite l'intervention d'une personne, ce qui peut poser des problèmes si la machine n'est pas facilement accessible.

Remarque : certains BIOS ont des mots de passe par défaut bien connus et des applications existent également pour récupérer les mots de passe du BIOS. Corrolaire : ne dépendez pas de cette mesure pour sécuriser l'accès console du système.


3.2 Partitionner le système


3.2.1 Choisir un schéma de partitionnement intelligent

Un schéma de partitionnement intelligent dépend de l'utilisation de la machine. Une bonne règle est d'être assez large avec vos partitions et de faire attention aux facteurs suivants :

Dans le cas d'un serveur de courriers, il est important d'avoir une partition séparée pour le répertoire des courriers (spool). Les utilisateurs distants (soit consciemment, soit inconsciemment) peuvent remplir le répertoire des courriers (/var/mail ou /var/spool/mail). Si le répertoire est sur une partition séparée, cette situation ne rendra pas le système inutilisable. Sinon (si le répertoire est sur la même partition que /var), le système pourrait avoir d'importants problèmes : les entrées des journaux ne seront pas crées, aucun paquet ne pourra être installé et certains programmes pourraient même avoir des problèmes à être exécutés (s'ils utilisent /var/run).

Pour les partitions pour lesquelles vous ne pouvez pas être certain de la place nécessaire, installez Logical Volume Manager (lvm-common et les binaires nécessaires pour votre noyau qui peuvent être soit lvm10, soit lvm6 ou encore lvm5). En utilisant lvm, vous pouvez créer des groupes de volumes répartis sur plusieurs volumes physiquesa.


3.2.1.1 Choisir les systèmes de fichiers appropriés

Pendant le partitionnement du système, vous devez également décider du système de fichiers à utiliser. Le système de fichiers choisi par défaut pendant l'installation de Debian pour les partitions Linux est ext2. Cependant, il vous est recommandé de choisir un système de fichiers journalisé comme ext3, reiserfs, jfs ou xfs pour réduire les problèmes découlant d'un plantage système dans les cas suivants :

En laissant de côté les problèmes de performance concernant les systèmes de fichiers journalisés (ceci pouvant parfois tourner à la guerre de religion), il est habituellement mieux d'utiliser le système de fichiers ext3. La raison pour cela est qu'il est rétro-compatible avec ext2, donc s'il y a un quelconque problème avec la journalisation, vous pouvez la désactiver et toujours avoir un système de fichiers fonctionnel. Également, si vous avez besoin de récupérer le système avec une disquette d'amorçage (ou un cédérom), vous n'avez pas besoin d'un noyau personnalisé. Si le noyau est en version 2.4, le support ext3 est déjà disponible, s'il s'agit d'un noyau 2.2, vous pourrez amorcer le système de fichiers même si vous n'aurez plus la capacité de journalisation. Si vous utilisez d'autres systèmes de fichiers, vous trouverez que vous ne pourrez pas effectuer de récupération à moins d'avoir un noyau 2.4 avec les modules nécessaires inclus dans le noyau. Si vous êtes bloqué avec un noyau 2.2 sur la disquette de sauvegarde, cela pourrait même être encore plus difficile d'accéder à des partitions reiserfs ou xfs.

Dans tous les cas, il est possible que l'intégrité des données soit meilleure avec ext3 car il fait de la journalisation des données par fichier alors que les autres ne font que de la journalisation par méta-données, voir http://lwn.net/2001/0802/a/ext3-modes.php3.


3.3 Ne pas se connecter à l'Internet tant que tout n'est pas prêt

Le système ne devrait pas être connecté à l'Internet pendant l'installation. Ceci peut paraître stupide mais il faut savoir que l'installation par le réseau est une méthode d'installation habituelle. Étant donné que le système va installer et activer les services immédiatement, si le système est connecté à Internet et que les services ne sont pas configurés correctement, vous les exposez à des attaques.

Il faut noter également que certains services peuvent avoir des trous de sécurité qui n'ont pas encore été corrigés dans les paquets que vous utilisez pour l'installation. C'est généralement vrai si vous installez depuis de vieux médias (comme des cédéroms). Dans ce cas, il se peut que votre système soit compromis avant même la fin de l'installation !

Étant donné que l'installation et les mises à jours peuvent être faites par Internet, vous pourriez penser que c'est une bonne idée d'utiliser cette caractéristique lors de l'installation. Si le système va être connecté directement à l'Internet (et pas protégé par un pare-feu ou un NAT), il est plus judicieux de l'installer sans connexion à Internet et d'utiliser un miroir local de paquets contenant à la fois les paquets sources et les mises à jour de sécurité. Vous pouvez mettre en place des miroirs de paquets en utilisant un autre système connecté à l'Internet et des outils spécifiques à Debian (si c'est un système Debian) tels que apt-move ou apt-proxy ou tout autre outil de miroir pour fournir l'archive aux systèmes installés. Si vous ne pouvez pas faire cela, vous pouvez mettre en place des règles de pare-feu pour limiter l'accès au système pendant la mise à jour (voir Security update protected by a firewall, Annexe F).


3.4 Définir un mot de passe root

Définir un bon mot de passe est la condition de base pour avoir un système sécurisé. Consultez passwd(1) pour quelques conseils pour créer de bons mots de passe. Vous pouvez également utiliser un générateur automatique de mots de passe pour faire cela pour vous (voir Générer des mots de passe utilisateur, Section 4.10.14).

FIXME : Ajouter des pointeurs vers des informations sur de bons mots de passe.


3.5 Activer les mots de passe masqués et les mots de passe MD5

A la fin de l'installation, il vous sera demandé si les mots de passe masqués doivent être activés. Répondez oui à cette question ; ainsi les mots de passe seront stockés dans le fichier /etc/shadow. Seul l'utilisateur root et le groupe shadow peuvent lire ce fichier, ainsi aucun utilisateur ne sera en mesure de récupérer une copie de ce fichier afin de le passer par un programme craqueur de mots de passe. Vous pouvez basculer entre les mots de passe masqués et les mots de passes normaux à n'importe quel moment en utilisant shadowconfig.

Vous pouvez en lire davantage sur les mots de passes masqués dans le Shadow Password (/usr/share/doc/HOWTO/en-txt/Shadow-Password.txt.gz).

De plus, pendant l'installation il vous sera demandé si vous voulez utiliser les mots de passe MD5. C'est généralement une bonne idée étant donné que cela permet des mots de passe plus longs et un meilleur chiffrement. MD5 permet de s mots de passer de plus de 8 caractères. Cela peu, si c'est utilisé à bon escient, rendre plus difficiles les attaques par la force brute sur les mots de passe système. Concernant les mots de passe MD5, il s'agit de l'option par défaut quand vous installer le paquet passwd. Vous pouvez changer cela à tout moment après l'installation en faisant dpkg-reconfigure -plow passwd. Vous pouvez reconnaître les mots de passe md5 dans le fichier /etc/shadow par leur préfixe $1$.

Cela modifie tous les fichiers sous /etc/pam.d en modifiant la ligne password en insérant md5 dans celle-ci :

           password required pam_unix.so md5 nullok obscure min=6 max=16

Si max n'est pas positionné à plus de 8, la modification ne sera pas utile du tout. Pour plus d'informations sur cela, lisez Authentification utilisateur : PAM, Section 4.10.1.

Remarque : même quand les mots de passe MD5 sont activés, la configuration par défaut dans Debian ne modifie pas la valeur précédemment positionnée de max.


3.6 Administrer le nombre minimum de services nécessaires

Les services sont des programmes tels que les serveurs ftp et les serveurs web. Puisqu'ils doivent écouter les connexions entrantes qui demandent le service, des ordinateurs externes peuvent se connecter au vôtre. Les services sont parfois vulnérables (entendez par là qu'ils peuvent être compromis par certaines attaques) : ils créent des risques pour la sécurité.

Vous ne devriez pas installer les services dont vous n'avez pas besoin sur votre machine. Chaque service installé peut introduire de nouveaux trous de sécurité, peu évidents ou inconnus, sur votre ordinateur.

Comme vous le savez sans doute déjà, lorsque vous installez un service, la démarche par défaut est de l'activer. Dans une installation Debian par défaut, sans services installés, le nombre des services actifs est assez faible et il est même plus faible quand on parle des services réseaux. Leur nombre dans Debian 2.1 n'était pas aussi faible que celui dans Debian 2.2 (quelques services inetd étaient actifs par défaut) et dans Debian 2.2 le service rpc est activé à l'installation. Rpc est installé par défaut car il est nécessaire à de nombreux services, par exemple NFS, pour tourner sur un système bien spécifique. Cependant, il peut être facilement retiré, voir Désactivation de services démon, Section 3.6.1 sur la manière de le désactiver.

Lorsque vous installez un nouveau service réseau (démon) sur votre système Debian GNU/Linux, il peut être activé de deux façons : via le super démon inetd (une ligne sera ajoutée à /etc/inetd.conf) ou via un programme qui s'attache lui-même aux interfaces réseaux. Ces programmes sont contrôlés via les fichiers /etc/init.d qui sont appelés lors du démarrage au moyen du mécanisme SysV (ou un autre) en utilisant des liens symboliques dans /etc/rc?.d/* (pour plus d'informations sur la manière dont cela est fait, lire /usr/share/doc/sysvinit/README.runlevels.gz).

Si vous voulez garder certains services tout en les utilisant rarement, utilisez les commandes update, par exemple « update-inetd » et « update-rc.d » pour les supprimer du processus de démarrage.


3.6.1 Désactivation de services démon

La désactivation d'un démon est relativement simple. Il y a différentes méthodes :

Vous pouvez supprimer les liens de /etc/rc${runlevel}.d/ manuellement ou en utilisant update-rc.d (voir update-rc.d(8)). Par exemple, vous pouvez désactiver l'exécution d'un service dans le niveau d'exécution multi-utilisateur en faisant :

     update-rc.d stop XX 2 3 4 5 .

Veuillez noter que, si vous n'utilisez pas file-rc, update-rc.d -f _service_ remove ne fonctionnera pas correctement, étant donné que tous les liens sont supprimés, seules la réinstallation ou la mise à jour du paquet créera à nouveau ces liens (ce n'est probablement pas ce que vous voulez). Si vous pensez que ce n'est pas intuitif, vous avez sans doute raison (voir Bug 67095. Voici un passage de la page de manuel :

     Quand un fichier /etc/rcrunlevel.d/[SK]??nom existe déjà, alors
       update-rc.d ne fait rien. C'est ainsi pour que l'administrateur système 
       puisse réarranger les liens -- à condition qu'il en reste au moins un -- 
       sans que sa configuration soit réécrite.

Si vous utilisez file-rc, toutes les informations concernant le démarrage des services sont gérées par un fichier de configuration commun et sont conservées même si les paquets sont retirés du système.

Vous pouvez utilisez l'interface texte (TUI Text User Interface) fournie par rcconf pour faire tous ces changements facilement (rcconf fonctionne pour file-rc ainsi que pour les niveaux d'exécution normaux de type System V).

D'autres méthodes (non recommandées) de désactivation de services sont : chmod 644 /etc/init.d/daemon (mais ceci donne un message d'erreur au démarrage), ou modifier le script /etc/init.d/daemon (en ajoutant une ligne exit 0 au début ou en commentant la partie start-stop-daemon). Étant donné que les fichiers init.d sont des fichiers de configuration, ils ne seront pas ré-écris lors d'une mise à jour.

Malheureusement, contrairement à d'autres systèmes d'exploitation (UNIX), les services dans Debian ne peuvent être désactivés en modifiant les fichiers dans /etc/default/_nomservice_.

FIXME : Ajouter des informations sur la gestion des démons par file-rc


3.6.2 Désactivation des services inetd

Vous devriez arrêter tous les services non nécessaires sur votre système, comme echo, chargen, discard, daytime, time, talk, ntalk et les r-services (rsh, rlogin et rcp) qui sont considérés comme EXTRÈMEMENT dangereux (utilisez ssh à la place). Après la désactivation de ceux-ci, vous devriez vérifier si vous avez réellement besoin du démon inetd. De nombreuses personnes préfèrent utiliser les démons plutôt que d'appeler des services via inetd. Le La possibilité de déni de service sur inetd existe, ce qui peut augmenter notablement la charge de la machine. Si vous désirez toujours lancer un service du genre d'inetd, tournez-vous plutôt vers un démon inetd plus configurable tel xinetd ou rlinetd.

Vous pouvez désactiver les services en modifiant directement /etc/inetd.conf, mais Debian offre un meilleur moyen : update-inetd (qui commente les services de manière à ce qu'ils puissent être facilement réactivés). Vous pouvez supprimer le démon telnet en exécutant cette commande pour changer le fichier de configuration et redémarrer le démon (dans ce cas le service est désactivé) :

     /usr/sbin/update-inetd --disable telnet

Si vous désirez des services en attente, mais qui n'écoutent pas toutes les adresses IP de votre hôte, vous voudrez peut-être utiliser des fonctions non documentées de inetd.. Ou utilisez un autre démon tel que xinetd.


3.7 Installer le minimum de logiciels nécessaires

Debian est fournie avec une grande quantité de logiciels, par exemple, Debian 3.0 woody inclut presque 6 cédéroms de logiciels et des milliers de paquets. Avec autant de logiciels et même si l'installation du système de base est assez réduite [2] vous pourriez vous laisser entraîner et installer plus de logiciels qu'il n'est vraiment nécessaire sur votre système.

Comme vous connaissez déjà l'utilité de votre système (n'est-ce pas ?), vous ne devez installer que les logiciels qui sont vraiment nécessaires pour qu'il fonctionne. Tout outil non nécessaure qui est installé pourrait être utilisé par un utilisateur qui voudrait compromettrele système ou par un intrus externe qui aurait obtenu un accès shell (ou par exécution de code à distance grâce à un service exploitable).

La présence, par exemple, d'outils de développement (un compilateur C) ou de langages interprétés (comme perl – mais voir ci-dessous –, python, tcl, etc.) pourrait aider un attaquant à compromettre le système un peu plus :

Bien sûr, un intrus ayant un accès shell local peut télécharger son propre jeu d'outils et les exécuter et le shell lui-même peut être utilisé pour créer des programmes complexes. Supprimer les logiciels non nécessaires ne va pas aider à prévenir le problème, mais cela rendra la tâche un peu plus difficile pour un attaquant (et certains pourraient abandonner dans cette situation et aller chercher des cibles plus faciles). Ainsi, si vous laissez des outils sur un système de production qui peuvent être utilisés pour attaquer des systèmes à distance (voir Outils d'évaluation des vulnérabilités à distances, Section 8.1), vous pouvez vous attendre à ce qu'un intrus les utilise également s'ils sont disponibles.


3.7.1 Supprimer Perl

Vous devez prendre en compte qu'enlever perl peut ne pas très simple (en fait, cela peut être assez difficile) sur un système Debian car il est utilisé par beaucoup d'outils système. Le paquet perl-base est également Priority: required (ce qui veut tout dire). C'est tout de même faisable, mais vous ne pourrez pas exécuter d'applications perl sur le système ; vous devrez également tromper le système de gestion des paquets pour lui faire croîre que le paquet perl-base est installé même si ce n'est pas le cas. [4]

Quels outils utilisent perl ? Vous pouvez vous en rendre compte vous-même :

       $ for i in /bin/* /sbin/* /usr/bin/* /usr/sbin/*; do [ -f $i ] && {
       type=`file $i | grep -il perl`; [ -n "$type" ] && echo $i; }; done

Ceux-ci incluent les outils suivants des paquets de priorité requis ou important :

Dans, sans Perl et à moins que vous ne ré-écriviez ces outils en script shell, vous ne pourrez probablement pas gérer de paquets (vous ne pourrez donc pas mettre à jour le système, ce qui n'est pas une Bonne Chose).

Si vous êtes déterminé à enlever Perl du système de base Debian et si vous avez du temps libre, créez des rapports de bogue sur les paquets précédents en incluant un remplacement (sous forme de correctif) écrit en script shell aux outils ci-dessus.


3.8 Lire les listes de discussions Debian sur la sécurité

Cela ne fait pas de mal de jeter un œil à la liste de discussion debian-security-announce, où des alertes et des solutions pour les paquets sont annoncés par l'équipe sécurité de Debian, ou sur la liste mailto:debian-security@lists.debian.org, où vous pouvez participer aux discussions à propos de différentes choses liées à la sécurité Debian.

De façon à recevoir les alertes importantes concernant les mises à jour liées à la sécurité, envoyez un courriel à debian-security-announce-request@lists.debian.org avec le mot « subscribe » dans le sujet du courrier. Vous pouvez également vous inscrire à cette liste via la page web sur http://www.debian.org/MailingLists/subscribe

Cette liste de discussion a très peu de trafic, et en vous inscrivant vous serez tenu au courant des mises à jour pour la distribution Debian. Cela vous permet de télécharger rapidement les nouveaux paquets sans les bogues, ce qui est relativement important dans le maintien d'un système sécurisé. (Voir Se mettre à jour au niveau de la sécurité, Section 4.8 pour les détails.)


[ précédent ] [ Table des matières ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ A ] [ B ] [ C ] [ D ] [ E ] [ F ] [ G ] [ H ] [ I ] [ J ] [ suivant ]

Manuel de sécurisation de Debian

2.95 31 mayo 2004Vendredi 4 juillet 2003 23:13:42 +0100

Javier Fernández-Sanguino Peña jfs@computer.org