3.6. Installieren Sie möglichst wenig Software
Debian bietet
sehr viel Software an. Debian 3.0 (
Woody) enthält sechs oder sieben (je nach Architektur) CDs mit Software und tausenden Paketen. Debian 3.1
Sarge wird mit etwa 13 CD-ROMs ausgeliefert. Bei so viel Software, selbst wenn Sie die Installation auf das Basis-System reduzieren
, könnten Sie auf Abwege geraten und mehr installieren, als Sie wirklich benötigen.
Da Sie bereits wissen, was Sie mit Ihrem System machen wollen (oder etwa nicht?), sollten Sie nur Software installieren, die Sie wirklich für den Betrieb benötigen. Jedes unnötig installierte Programm könnte von einem Benutzer, der Ihr System kompromittieren will, genutzt werden – oder von einem externen Eindringling, der Shell-Zugriff bekommen hat (oder der Code von außerhalb durch einen fehlerhaften Dienst ausführen kann).
Zum Beispiel kann das Vorhandensein von Hilfsprogrammen für Programmierer (ein C-Compiler) oder Interpretern (wie Perl
siehe allerdings unten, Python
, tcl
, ...) einem Angreifer helfen, das System weiter zu kompromittieren:
Der Angreifer kann seine Privilegien auf dem System erweitern. Es ist beispielsweise leichter, eine lokale Sicherheitslücke des Systems auszunutzen, wenn man einen Debugger und Compiler zur Verfügung hat, um den eigenen Exploit (ein Programm, das eine Sicherheitslücke ausnutzt) zu kompilieren und zu testen.
Man könnte dem Angreifer Werkzeuge zur Verfügung stellen, die ihm helfen könnten, das kompromittierte System als
Basis für Angriffe auf andere Systeme zu benutzen.
Natürlich kann ein Eindringling mit lokalem Shell-Zugriff seine eigenen Programme herunterladen und ausführen. Und sogar die Shell selbst kann benutzt werden, um komplexere Programme zu schreiben. Das Entfernen unnötiger Programme wird also nicht helfen, das Problem zu
verhindern. Jedoch wird es für den Angreifer etwas schwieriger, das System zu kompromittieren (und manchmal wird er in dieser Situation aufgeben und sich ein leichteres Ziel suchen). Wenn Sie also auf einem produktivem System Werkzeuge lassen, die benutzt werden können, um andere Systeme anzugreifen (siehe
Abschnitt 8.1, „Programme zur Fernprüfung der Verwundbarkeit“), müssen Sie davon ausgehen, dass ein Angreifer sie auch benutzen wird.
Beachten Sie bitte, dass eine Standardinstallation von Debian
Sarge (d.h. eine Installation, bei der nicht individuell Pakete ausgewählt werden) eine Reihe von Paketen zur Softwareentwicklung installiert, die normalerweise nicht benötigt werden. Das liegt daran, dass einige Pakete zur Softwareentwicklung die Priorität
Standard haben. Wenn Sie keine Software entwickeln, können Sie ohne Bedenken die folgenden Pakete von Ihrem System entfernen, was nebenbei auch etwas Platz schafft:
Paket Größe
------------------------+--------
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 (Hinweis: virtuelles Paket)
linux-kernel-headers 1,377,022
bin86 82,090
cpp 29,446
gcc 4,896 (Hinweis: virtuelles Paket)
g++-3.3 1,778,880
bison 702,830
make 366,138
libstdc++5-3.3-dev 774,982
3.6.1. Entfernen von Perl
Sie müssen bedenken, dass es nicht gerade einfach ist,
Perl
von einem Debian-System zu entfernen (in der Tat kann es ziemlich schwierig werden), da es von vielen Dienstprogrammen benutzt wird.
perl-base hat außerdem
Priority: required (und das sagt eigentlich schon alles). Es ist aber trotzdem machbar. Allerdings können Sie auf diesem System keine
Perl
-Anwendung mehr laufen lassen. Außerdem müssen Sie auch das Paketverwaltungssystem hereinlegen, damit es weiterhin denkt, dass
perl-base installiert ist, auch wenn es das nicht mehr ist.
Welche Dienstprogramme benutzen
Perl
? Sie können es selbst herausfinden:
$ for i in /bin/* /sbin/* /usr/bin/* /usr/sbin/*; do [ -f $i ] && {
type=`file $i | grep -il perl`; [ -n "$type" ] && echo $i; }; done
Diese Liste schließt die folgenden Dienstprogramme mit der Priorität required oder important ein:
/usr/bin/chkdupexe
aus dem Paket util-linux
/usr/bin/replay
aus dem Paket bsdutils
/usr/sbin/cleanup-info
aus dem Paket dpkg
/usr/sbin/dpkg-divert
aus dem Paket dpkg
/usr/sbin/dpkg-statoverride
aus dem Paket dpkg
/usr/sbin/install-info
aus dem Paket dpkg
/usr/sbin/update-alternatives
aus dem Paket dpkg
/usr/sbin/update-rc.d
aus dem Paket sysvinit
/usr/bin/grog
aus dem Paket groff-base
/usr/sbin/adduser
aus dem Paket adduser
/usr/sbin/debconf-show
aus dem Paket debconf
/usr/sbin/deluser
aus dem Paket adduser
/usr/sbin/dpkg-preconfigure
aus dem Paket debconf
/usr/sbin/dpkg-reconfigure
aus dem Paket debconf
/usr/sbin/exigrep
aus dem Paket exim
/usr/sbin/eximconfig
aus dem Paket exim
/usr/sbin/eximstats
aus dem Paket exim
/usr/sbin/exim-upgrade-to-r3
aus dem Paket exim
/usr/sbin/exiqsumm
aus dem Paket exim
/usr/sbin/keytab-lilo
aus dem Paket lilo
/usr/sbin/liloconfig
aus dem Paket lilo
/usr/sbin/lilo_find_mbr
aus dem Paket lilo
/usr/sbin/syslogd-listfiles
aus dem Paket sysklogd
/usr/sbin/syslog-facility
aus dem Paket sysklogd
/usr/sbin/update-inetd
aus dem Paket netbase
Ohne Perl und solange Sie diese Dienstprogramme nicht in einem Shell-Skript neu schreiben, werden Sie also wahrscheinlich keine Pakete mehr verwalten können (und so kein Upgrade des Systems durchführen können, was keine gute Idee ist).
Wenn Sie fest dazu entschlossen sind, Perl aus dem Debian-Basissystem zu entfernen und ein wenig Freizeit haben, schicken Sie uns doch Fehlerberichte zu den aufgezählten Paketen, die (als ein Patch) einen Ersatz dieser Dienstprogramme als Shell-Skript enthalten.
Wenn Sie wissen wollen, welche Debian-Pakete von Perl abhängen, können Sie Folgendes verwenden:
$ grep-available -s Package,Priority -F Depends perl
oder
$ apt-cache rdepends perl