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