Product SiteDocumentation Site

3.6. Installare il software strettamente necessario

Debian comes with a lot of software, for example the Debian 3.0 woody release includes 6 or 7 (depending on architecture) CD-ROMs of software and thousands of packages, and the Debian 3.1 sarge release ships with around 13 CD-ROMs of software. With so much software, and even if the base system installation is quite reduced [6] you might get carried away and install more than is really needed for your system.
Poiché sapete già a cosa servirà il sistema (o no?), dovreste installare solo il software che è realmente necessario per farlo funzionare. Qualsiasi tool non necessario ma installato potrebbe essere usato da un utente che vuole compromettere il sistema o da un intruso esterno che ha ottenuto l'accesso ad una shell (o l'esecuzione di codice da remoto attraverso un servizio che lo consenta).
La presenza, ad esempio, di utility di sviluppo (un compilatore per il linguaggio C) o di linguaggi interpretati (come perl - ma vedete sotto -, python, tcl...) potrebbe rendere le cose più semplici a colui che attacca per compromettere il sistema, in particolare:
Naturalmente un intruso con accesso locale ad una shell può scaricare gli strumenti che gli servono ed eseguirli, ma anche la shell stessa può essere usata per scrivere programmi complessi. Rimuovere il software non necessario non aiuterà a prevenire il problema, ma renderà un po' più difficile l'azione dell'intruso (ed alcuni potrebbero rinunciare se si trovano in questa situazione, cercando un bersaglio più facile). Quindi, lasciando installati detti strumenti su un sistema in produzione, che può essere usato per attaccare sistemi da remoto (vedete Sezione 8.1, «Strumenti per la valutazione delle vulnerabilità da remoto») è lecito aspettarsi che un intruso li utilizzi, se disponibili.
Notate che un'installazione predefinita di Debian sarge (come in un'installazione in cui non è stato selezionato alcun pacchetto) installerà un certo numero di pacchetti di sviluppo, di solito inutili. Ciò avviene perché alcuni pacchetti di sviluppo hanno priorità Standard. Se non pensate di fare sviluppo, potete rimuovere in tutta sicurezza i seguenti pacchetti dal vostro sistema, e questo aiuterà anche a liberare un po' di spazio:
Package                    Size
------------------------+--------
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: virtual package)
linux-kernel-headers    1,377,022
bin86                      82,090
cpp                        29,446
gcc                         4,896 (Note: virtual package)
g++-3.3                 1,778,880
bison                     702,830
make                      366,138
libstdc++5-3.3-dev        774,982
Questo è stato corretto nelle versioni post-sarge, vedete il http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=301273 ed il http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=301138. A causa di un bug nel sistema di installazione, questo non è successo nei sistemi installati mediante l'installer della versione di Debian 3.0 woody.

3.6.1. Rimuovere Perl

You must take into account that removing perl might not be too easy (as a matter of fact it can be quite difficult) in a Debian system since it is used by many system utilities. Also, the perl-base is Priority: required (that about says it all). It's still doable, but you will not be able to run any perl application in the system; you will also have to fool the package management system to think that the perl-base is installed even if it's not. [8]
Quali sono le utility che usano perl? Potete scoprirlo da soli:
  $ for i in /bin/* /sbin/* /usr/bin/* /usr/sbin/*; do [ -f $i ] && {
  type=`file $i | grep -il perl`; [ -n "$type" ] && echo $i; }; done
Incluse le seguenti utility contenute in pacchetti con priorità required o important:
  • /usr/bin/chkdupexe del pacchetto util-linux.
  • /usr/bin/replay del pacchetto bsdutils.
  • /usr/sbin/cleanup-info del pacchetto dpkg.
  • /usr/sbin/dpkg-divert del pacchetto dpkg.
  • /usr/sbin/dpkg-statoverride del pacchetto dpkg.
  • /usr/sbin/install-info del pacchetto dpkg.
  • /usr/sbin/update-alternatives del pacchetto dpkg.
  • /usr/sbin/update-rc.d del pacchetto sysvinit.
  • /usr/bin/grog del pacchetto groff-base.
  • /usr/sbin/adduser del pacchetto adduser.
  • /usr/sbin/debconf-show del pacchetto debconf.
  • /usr/sbin/deluser del pacchetto adduser.
  • /usr/sbin/dpkg-preconfigure del pacchetto debconf.
  • /usr/sbin/dpkg-reconfigure del pacchetto debconf.
  • /usr/sbin/exigrep del pacchetto exim.
  • /usr/sbin/eximconfig del pacchetto exim.
  • /usr/sbin/eximstats del pacchetto exim.
  • /usr/sbin/exim-upgrade-to-r3 del pacchetto exim.
  • /usr/sbin/exiqsumm del pacchetto exim.
  • /usr/sbin/keytab-lilo del pacchetto lilo.
  • /usr/sbin/liloconfig del pacchetto lilo.
  • /usr/sbin/lilo_find_mbr del pacchetto lilo.
  • /usr/sbin/syslogd-listfiles del pacchetto sysklogd.
  • /usr/sbin/syslog-facility del pacchetto sysklogd.
  • /usr/sbin/update-inetd del pacchetto netbase.
Quindi, senza Perl e a meno che non riscriviate queste utility come script di shell, probabilmente non potrete gestire alcun pacchetto (quindi neanche aggiornare il sistema, il che non è una buona cosa).
Se siete determinati a rimuovere Perl dal sistema base di Debian e avete tempo libero, spedite rapporti sui bachi dei pacchetti sopracitati includendo (in forma di patch) codice che sostituisca le utility con script di shell.
Se desiderate verificare quali pacchetti Debian dipendano da Perl potete usare
$ grep-available -s Package,Priority -F Depends perl
o
$ apt-cache rdepends perl


[6] For example, in Debian woody it is around 400-500 Mbs, try this:
  $ 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] Many intrusions are made just to get access to resources to do illegitimate activity (denial of service attacks, spam, rogue ftp servers, dns pollution...) rather than to obtain confidential data from the compromised system.
[8] You can make (on another system) a dummy package with equivs.