Product SiteDocumentation Site

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 [7], 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:
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
Dieses Verhalten wurde in den Veröffentlichungen nach Sarge verändert. Für weitere Informationen sehen Sie sich http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=301273 und http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=301138 an. Wegen eines Fehlers im Installationssystem ist dies nicht geschehen, wenn mit dem Installationssystem von Debian 3.0 Woody installiert wird.

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. [9]
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


[7] Unter Debian-Woody ist das Basis-System etwa 400-500MB groß. Probieren Sie Folgendes:
 $ 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
.
[8] Häufig werden fremde Systeme nur deshalb gehackt, weil sie zu weiteren illegitimen Aktivitäten benutzt werden sollen (DoS-Angriffe, Spam, geheime FTP-Server, DNS-Schweinereien, ...). Der Angreifer möchte meist gar nicht an die vertraulichen Daten auf dem kompromittierten System herankommen.
[9] Sie können (auf einem anderen System) eine Paket-Attrappe mit equivs erstellen.