Product SiteDocumentation Site

3.6. 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 Section 8.1, « Outils d'évaluation des vulnérabilités à distance »), 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 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=301273 et le http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=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.6.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 :
  • /usr/bin/chkdupexe du paquet util-linux.
  • /usr/bin/replay du paquet bsdutils.
  • /usr/sbin/cleanup-info du paquet dpkg.
  • /usr/sbin/dpkg-divert du paquet dpkg.
  • /usr/sbin/dpkg-statoverride du paquet dpkg.
  • /usr/sbin/install-info du paquet dpkg.
  • /usr/sbin/update-alternatives du paquet dpkg.
  • /usr/sbin/update-rc.d du paquet sysvinit.
  • /usr/bin/grog du paquet groff-base.
  • /usr/sbin/adduser du paquet adduser.
  • /usr/sbin/debconf-show du paquet debconf.
  • /usr/sbin/deluser du paquet adduser.
  • /usr/sbin/dpkg-preconfigure du paquet debconf.
  • /usr/sbin/dpkg-reconfigure du paquet debconf.
  • /usr/sbin/exigrep du paquet exim.
  • /usr/sbin/eximconfig du paquet exim.
  • /usr/sbin/eximstats du paquet exim.
  • /usr/sbin/exim-upgrade-to-r3 du paquet exim.
  • /usr/sbin/exiqsumm du paquet exim.
  • /usr/sbin/keytab-lilo du paquet lilo.
  • /usr/sbin/liloconfig du paquet lilo.
  • /usr/sbin/lilo_find_mbr du paquet lilo.
  • /usr/sbin/syslogd-listfiles du paquet sysklogd.
  • /usr/sbin/syslog-facility du paquet sysklogd.
  • /usr/sbin/update-inetd du paquet netbase.
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


[6] Par exemple, dans Debian Woody, elle est d'environ 400 à 500 Mo, essayez ceci :
 $ size=0 $ for i in `grep -A 1 -B 1 "^Section: base" /var/lib/dpkg/available | grep -A 2 "^Priority: required" |grep "^Installed-Size" |cut -d : -f 2 `; do size=$(($size+$i)); done $ echo $size 47762
[7] Beaucoup d'intrusions ne sont faites que pour avoir accès aux ressources pour effectuer des activités illégales (attaques de déni de service, envoi d'indésirables, serveurs FTP illicites, pollution de DNS, etc.) plus que pour obtenir des données confidentielles du système compromis.
[8] Vous pouvez créer (sur un autre système) un paquet bidon avec equivs.