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


Securing Debian Manual
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 l'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 CD 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 une solution encore meilleure. Cela 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. Corollaire : 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 plus ê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 le noyau qui peuvent être lvm10, lvm6 ou lvm5). En utilisant lvm, vous pouvez créer des groupes de volumes répartis sur plusieurs volumes physiques.


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[3] pendant l'installation de Debian pour les partitions Linux est ext3, un système de fichiers journalisé. Vous devriez toujours utiliser 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 (cela pouvant parfois tourner à la guerre de religion), il est habituellement préférable d'utiliser le système de fichiers ext3. La raison pour cela est qu'il est rétrocompatible 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. De plus, si vous avez besoin de récupérer le système avec une disquette d'amorçage (ou un CD), vous n'avez pas besoin d'un noyau personnalisé. Si le noyau est en version 2.4 ou 2.6, la prise en charge 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 ou 2.6 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étadonnées, consultez http://lwn.net/2001/0802/a/ext3-modes.php3.

Remarquez, néanmoins, que certaines partitions n'ont pas d'intérêt particulier à utiliser un système de fichiers journalisé. Par exemple, si vous utilisez une partition à part pour /tmp/, vous devriez plutôt utiliser un système de fichiers ext2 car elle sera nettoyée lors du démarrage du système.


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

Le système ne devrait pas être connecté à Internet pendant l'installation. Cela 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 supports (comme des CD). Dans ce cas, il se peut que le système soit compromis avant même la fin de l'installation !

Étant donné que l'installation et les mises à jour 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 à 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 source et les mises à jour de sécurité. Vous pouvez mettre en place des miroirs de paquets en utilisant un autre système connecté à 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 (consultez Mise à jour de sécurité protégée par un pare-feu, Annexe F).


3.4 Définir un mot de passe pour le superutilisateur

Setting a good root password is the most basic requirement for having a secure system. See passwd(1) for some hints on how to create good passwords. You can also use an automatic password generation program to do this for you (see Générer des mots de passe utilisateur, Section 4.11.14).

Beaucoup d'informations sur le choix de bons mots de passe peuvent être trouvées sur Internet ; deux URL qui fournissent un bon résumé et une argumentation sont les HOWTO Pick a Safe Password d'Eric Wolfram et Unix Password Security de Walter Belgers.


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

À 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 le superutilisateur et les membres du 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 passe normaux à n'importe quel moment en utilisant shadowconfig.

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

De plus, l'installation utilise des mots de passe hachés avec MD5 par défaut. 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 des mots de passe de plus de 8 caractères. Cela peut, si c'est utilisé à bon escient, rendre plus difficiles les attaques par 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 installez le paquet passwd. Vous pouvez reconnaître les mots de passe MD5 dans le fichier /etc/shadow par leur préfixe $1$.

Ceci 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, consultez Authentification utilisateur : PAM, Section 4.11.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 minimal 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 la machine. Chaque service installé peut introduire de nouveaux trous de sécurité, peu évidents ou inconnus, sur l'ordinateur.

Comme vous le savez sans doute déjà, lorsque vous installez un service, le comportement par défaut est de l'activer. Dans une installation Debian par défaut, sans service installé, le nombre de services actifs est assez faible et il est même plus faible quand on parle de services réseau. Dans une installation standard de Debian 3.1, les seuls services activés par défaut sont OpenSSH, Exim (selon la façon dont vous l'avez configuré) et le portmapper RPC comme services réseau[4]. Si vous n'avez pas choisi l'installation standard, mais que vous avez sélectionné l'installation en mode expert, vous obtiendrez une installation avec aucun service réseau actif. Le portmapper RPC est installé par défaut car il est nécessaire pour beaucoup de services, par exemple NFS. Cependant, il peut facilement être retiré, consultez Sécurisation des services RPC, Section 5.13 pour plus d'informations sur la façon de sécuriser ou de désactiver les services RPC.

Lorsque vous installez un nouveau service réseau (démon) sur le système Debian GNU/Linux, il peut être activé de deux façons : avec le superdémon inetd (une ligne sera ajoutée à /etc/inetd.conf) ou par un programme qui s'attache lui-même aux interfaces réseau. Ces programmes sont contrôlés par les fichiers /etc/init.d qui sont appelés lors du démarrage au moyen du mécanisme System V (ou un autre) en utilisant des liens symboliques dans /etc/rc?.d/* (pour plus d'informations sur la manière dont cela est fait, consultez /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. Pour plus d'informations sur la façon de désactiver des services réseau, veuillez consulter Désactivation de services démon, Section 3.6.1. Si vous voulez changer le comportement par défaut de démarrage des services à l'installation de leur paquet associé[5], utilisez policy-rc.d, veuillez consulter /usr/share/doc/sysv-rc/README.policy-rc.d.gz pour obtenir plus de renseignements.

La prise en charge d'invoke-rc.d est obligatoire dans Debian, ce qui veut dire que pour Debian 4.0 Etch et versions suivantes, vous pouvez écrire un fichier policy-rc.d qui interdit le démarrage des nouveaux démons avant de les avoir configurés. Même si aucun de ces scripts n'est encore empaqueté, ils sont plutôt faciles à écrire. Consultez policyrcd-script-zg2.


3.6.1 Désactivation de services démon

La désactivation d'un service démon est relativement simple. Vous pouvez soit supprimer le paquet fournissant le programme pour ce service, soit supprimer ou renommer les liens de démarrage sous /etc/rc${runlevel}.d/. Si vous les renommez, assurez-vous qu'ils ne commencent pas avec un « S » pour qu'ils ne soient pas démarrés par /etc/init.d/rc. Ne supprimez pas tous les liens disponibles ou le système de gestion des paquets les régénérera lors des mises à jour du paquet, assurez-vous de laisser au moins un lien (typiquement, un lien « K », « kill » pour tuer). Pour obtenir plus de renseignements, veuillez consulter la section Personnalisation des niveaux de démarrage de la référence Debian (chapitre 2 - fondamentaux de Debian).

You can remove these links manually or using update-rc.d (see update-rc.d(8)). For example, you can disable a service from executing in the multi-user runlevels by doing:

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

Avec XX un nombre qui détermine quand l'action d'arrêt pour ce service sera exécutée. Veuillez noter que, si vous n'utilisez pas file-rc, update-rc.d -f service remove ne fonctionnera pas correctement car tous les liens sont supprimés, lors d'une réinstallation ou d'une mise à jour du paquet, ces liens seront régénérés (ce qui n'est probablement pas ce que vous voulez). Si vous pensez que cela n'est pas intuitif, vous avez probablement raison (consultez le bogue nº 67095). D'après les pages de manuel :

       Si des fichiers /etc/rcrunlevel.d/[SK]??nom existent déjà,
       alors update-rc.d ne fait rien. C'est ainsi fait pour que
       l'administrateur système puisse réarranger les liens — à condition
       qu'il en reste au moins un — sans que sa configuration ne 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 utiliser l'interface texte (TUI, Text User Interface) fournie par sysv-rc-conf pour faire tous ces changements facilement (sysv-rc-conf fonctionne pour file-rc ainsi que pour les niveaux d'exécution normaux de type System V). Vous pouvez également trouver des interfaces graphiques similaires pour les systèmes de bureau. Vous pouvez aussi utiliser l'interface en ligne de commande de sysv-rc-conf :

       # sysv-rc-conf bidule off

L'avantage, avec cet utilitaire, est que les liens rc.d sont remis dans l'état qu'ils avaient avant l'appel « off » si vous réactivez le service avec :

       # sysv-rc-conf bidule on

D'autres méthodes (moins recommandées) pour désactiver les services sont :

Cependant, les fichiers sous /etc/init.d sont des fichiers de configuration et ne devraient pas être écrasés lors des mises à jour de paquet si vous y avez fait des modifications locales.

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

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


3.6.2 Désactivation d'inetd ou de ses services

Vous devriez vérifier si vous avez vraiment besoin du démon inetd de nos jours. inetd a toujours été un moyen de compenser des déficiences du noyau, mais celles-ci ont été corrigées dans les noyaux Linux modernes. Des possibilités de déni de service existent avec inetd (qui peut augmenter énormément la charge de la machine) et de nombreuses personnes préfèrent utiliser des démons indépendants au lieu d'appeler des services avec inetd. Si vous voulez toujours exécuter un service du genre d'inetd, tournez-vous plutôt vers un démon inetd plus configurable comme xinetd, rlinetd ou openbsd-inetd.

Vous devriez arrêter tous les services inetd non nécessaires sur le système, comme echo, chargen, discard, daytime, time, talk, ntalk et les r-services (services à distance) (rsh, rlogin et rcp) qui sont considérés comme EXTRÊMEMENT dangereux (utilisez ssh à la place).

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 sur toutes les adresses IP de l'hôte, vous voudrez peut-être utiliser des fonctions non documentées de inetd (remplacez des noms de service avec la syntaxe service@ip) 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 6 ou 7 (selon les architectures) CD de logiciels et des milliers de paquets et la version 3.1 fournit environ 13 CD de logiciels. Avec autant de logiciels et même si l'installation du système de base est assez réduite [6] vous pourriez vous laisser entraîner et installer plus de logiciels qu'il n'est vraiment nécessaire sur le système.

Comme vous connaissez déjà l'utilisation du système (n'est-ce pas ?), vous ne devez installer que les logiciels qui sont vraiment nécessaires à son fonctionnement. Tout outil non nécessaire installé pourrait être utilisé par un utilisateur qui voudrait compromettre le système ou par un intrus externe qui aurait obtenu un accès à l'interpréteur de commandes (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 – 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 local à l'interpréteur de commandes peut télécharger son propre jeu d'outils et les exécuter, et l'interpréteur de commandes peut lui-même ê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 (consultez Outils d'évaluation des vulnérabilités à distance, Section 8.1), vous pouvez vous attendre à ce qu'un intrus les utilise également s'ils sont disponibles.

Veuillez noter qu'une installation par défaut de Debian Sarge (c'est-à-dire une installation pour laquelle aucun paquet individuel n'est sélectionné) installera un certain nombre d'outils de développement qui ne sont habituellement pas nécessaires. Cela vient du fait que certains paquets de développement sont de priorité Standard. Si vous ne comptez pas faire de développement, vous pouvez supprimer ces paquets du système sans inquiétude, ce qui devrait également aider à libérer de la place :

     Paquet                    Taille
     ------------------------+--------
     gdb                     2,766,822
     gcc-3.3                 1,570,284
     dpkg-dev                  166,800
     libc6-dev               2,531,564
     cpp-3.3                 1,391,346
     manpages-dev            1,081,408
     flex                      257,678
     g++                         1,384 (Note : paquet virtuel)
     linux-kernel-headers    1,377,022
     bin86                      82,090
     cpp                        29,446
     gcc                         4,896 (Note : paquet virtuel)
     g++-3.3                 1,778,880
     bison                     702,830
     make                      366,138
     libstdc++5-3.3-dev        774,982

Ce problème est corrigé dans les versions après Sarge, consultez le bogue nº 301273 et le bogue nº 301138. À cause d'un bogue dans le système d'installation, cela ne se produisait pas lors de l'installation de Debian 3.0 Woody.


3.7.1 Supprimer Perl

Vous devez prendre en compte qu'enlever perl peut ne pas être 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 croire que le paquet perl-base est installé même si ce n'est pas le cas. [8]

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 :

Donc, 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.

Si vous désirez vérifier quels paquets Debian dépendent de Perl, vous pouvez utiliser :

     $ grep-available -s Package,Priority -F Depends perl

ou

     $ apt-cache rdepends perl

3.8 Consulter 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 sur 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 avec correction des bogues de sécurité, ce qui est relativement important dans le maintien d'un système sécurisé (consultez Faire une mise à jour de sécurité, Section 4.2 pour obtenir plus de précisions).


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


Securing Debian Manual

Version: 3.16, construite le Sun, 08 Apr 2012 02:48:09 +0000

Javier Fernández-Sanguino Peña jfs@debian.org
Auteurs, Section 1.1