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