[ zurück ] [ Inhalt ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ A ] [ B ] [ C ] [ D ] [ E ] [ F ] [ weiter ]

Anleitung zum Absichern von Debian
Kapitel 3 - Vor und während der Installation


3.1 Setzen Sie ein Passwort im BIOS

Bevor Sie irgendein Betriebssystem auf Ihrem Computer installieren, setzen Sie ein Passwort im BIOS. Nach der Installation (sobald Sie von der Festplatte booten können) sollten Sie zurück ins BIOS gehen und die Boot-Reihenfolge ändern, so dass Sie nicht von Diskette, CD-ROM oder sonstigen Geräten booten können, von denen dies nicht gehen sollte. Andernfalls benötigt ein Cracker nur physischen Zugang und eine Bootdiskete, um Zugriff auf Ihr ganzes System zu bekommen.

Es ist noch besser, wenn das System beim Booten immer ein Passwort verlangt. Dies kann sehr effektiv sein, wenn Sie einen Server laufen lassen, der selten neu gestartet wird. Der Nachteil dieser Vorgehensweise ist, dass das Neustarten einen menschlichen Eingriff benötigt, was zu Problemen führen kann, wenn das System nicht leicht zugänglich ist.

Beachten Sie: Viele BIOS-Varianten haben bekannte Master-Passwörter und es gibt sogar Applikationen, um Passwörter aus dem BIOS wieder auszulesen. Folglich können Sie sich nicht auf diese Maßnahme verlassen, um den Zugriff auf das Systems zu beschränken.


3.2 Partitionieren des Systems


3.2.1 Wählen Sie eine sinnvolle Partitionierung

Was eine sinnvolle Partitionierung ist, hängt davon ab, wie die Maschine benutzt wird. Eine gute Faustregel ist, mit Ihren Partitionen eher großzügig zu sein und die folgenden Faktoren zu berücksichtigen:

Im Falle eines Mailservers ist es wichtig, eine seperate Partition für die Mail-Warteschlange (mail spool) anzulegen. Nicht-Lokale Nutzer können (wissentlich oder unwissentlich) diese Verzeichnisse (/var/mail oder /var/spool/mail) überfüllen. Liegt dieses Verzeichnis auf einer separaten Partition, würde dies das System nicht sofort unbenutzbar machen. Anderenfalls (wenn das Verzeichnis auch auf der /var-Partition liegt) hat das System ein großes Problem: Protokoll-Einträge (logs) können nicht erstellt werden, Pakete können nicht installiert werden und es könnten sogar ein paar Programme Probleme mit dem Starten haben (wenn Sie /var/run benutzen).

Außerdem sollten Sie für Partitionen, deren Platzbedarf Sie noch nicht abschätzen können, den Logical-Volume-Manager (lvm-common und die benötigten ausführbaren Programme, entweder lvm10 oder lvm2) installieren. Durch Benutzen von lvm können Sie Datenträger-Gruppen erstellen, die über mehrere Festplatten verteilt sind.


3.2.1.1 Auswahl eines passenden Dateisystems

Während der Partitionierung des Systems müssen Sie Sich ebenfalls entscheiden, welche Dateisysteme Sie benutzen möchten. Als Standard-Dateisystem wird während der Installation für Linux Partitionen ext2 ausgewählt. Dennoch ist es ratsam, ein "journaling filesystem" (ein Dateisystem, dass Änderungen mitprotokolliert) zu nehmen, wie zum Beispiel ext3, reiserfs, jfs oder xfs. Dadurch verringern Sie Probleme nach einen Absturz des Systems in diesen Fällen:

Lassen wir mal die Betrachtung der Leistung von Journaling-Filesystemen beiseite (da dies oft in quasi-religiösen Glaubenskriegen ausartet). In der Regel ist es besser, das ext3-Dateisystem zu benutzen. Der Grund dafür ist die Abwärtskompatibilität zu ext2, so können Sie, wenn es Probleme mit dem Journal gibt, dieses einfach abschalten und haben immer noch ein funktionierendes Dateisystem. Außerdem müssen Sie, wenn Sie das System mal mit einer Boot-Diskette (oder CD-ROM) wiederherstellen müssen, keinen speziellen Kernel benutzen. Wenn es sich um einen 2.4er-Kernel handelt, ist Unterstützung für ext3 bereits vorhanden. Wenn es sich um einen 2.2er-Kernel handelt, können Sie trotzdem Ihr Dateisystem booten, auch wenn Sie die Journaling-Fähigkeiten einbüßen. Wenn Sie ein anderes Journaling-Filesystem benutzen, werden Sie feststellen, dass eine Wiederherstellung nicht möglich ist, bis Sie einen 2.4er-Kernel mit den benötigten Modulen haben. Wenn Sie mit einem 2.2er-Kernel der Rettungsdiskette festhängen, kann es sich als ziemlich schwer erweisen, auf reiserfs oder xfs zuzugreifen.

In jedem Fall sind mit ext3 weniger Datenverluste zu befürchten, da es auch Datei-Daten protokolliert, während andere Dateisysteme lediglich Meta-Daten protokollieren (siehe auch http://lwn.net/2001/0802/a/ext3-modes.php3).


3.3 Gehen Sie nicht ins Internet, bevor Sie nicht bereit sind

Das System, das Sie installieren wollen, sollten Sie nicht sofort während der Installation mit dem Internet verbinden. Dies hört sich vielleicht komisch an, aber die Installation über das Netzwerk ist eine gängige Methode. Da das System einige Dienste installiert und diese sofort aktiviert werden, könnten Sie, wenn das System mit dem Internet verbunden ist und sie nicht geeignet konfiguriert sind, Ihr System für Angriffe öffnen.

Außerdem sollten Sie beachten, dass manche Pakete noch Sicherheitsprobleme haben können, weil das Installationsmedium nicht auf dem aktuellen Stand ist. Dies ist für gewöhnlich dann der Fall, wenn Sie von älteren Medien (wie CD-ROMs) installieren. In diesem Fall könnte Ihr System bereits kompromitiert sein, bevor Sie mit der Installation fertig sind!

Da die Debian-Installation und das Aktualisieren über das Internet durchgeführt werden können, denken Sie vielleicht, es ist eine gute Idee, dies gleich während der Installation zu nutzen. Wenn das System direkt mit dem Internet verbunden ist (und nicht von einer Firewall oder NAT geschützt wird), ist es besser, das Sytem ohne Internet-Verbindung zu installieren. Benutzen Sie eine lokale Quelle (mirror) sowohl für die zu installierenden Pakete als auch für die Sicherheits-Updates. Sie können einen Paket-Mirror aufsetzen, indem Sie ein anderes System nutzen, dass mit dem Internet verbunden ist und Debian-spezifische Tools (wenn es sich um ein Debian-System handelt) wie apt-move oder apt-proxy. Sollte dies nicht möglich sein, sollten Sie Firewall-Regeln aufsetzen, die den Zugriff auf Ihr System beschränken, während Sie das Update durchführen (siehe Sicherheits-Update geschützt durch eine Firewall, Anhang F).


3.4 Setzen Sie ein Passwort für root

Die wichtigste Grundlage für ein sicheres System ist ein gutes Root-Passwort. Siehe passwd(1) für einige Tipps, wie man gute Passwörter auswählt.


3.5 Aktivieren Sie Shadow-Passwörter und MD5-Passwörter

Gegen Ende der Installation werden Sie gefragt, ob "shadow passwords" eingeschaltet werden sollen. Beantworten Sie diese Frage mit "yes", dann werden Passwörter in der Datei /etc/shadow gespeichert. Nur root und die Gruppe shadow haben Lesezugriff auf diese Datei. So ist es keinem Nutzer möglich, sich eine Kopie dieser Datei zu besorgen, um einen Passwort-Cracker auf Sie loszulassen. Sie können mit dem Befehl shadowconfig jederseit zwischen "shadow passwords" und normalen Passwörtern wechseln.

Mehr zum Thema Shadow-Passwörter finden Sie unter Shadow Password (/usr/share/doc/HOWTO/en-txt/Shadow-Password.txt.gz).

Desweiteren werden Sie während der Installation gefragt, ob Sie Passwörter benutzen möchten, welche als MD5-Hashwerte gespeichert wurden. Dies ist im allgemeinen eine gute Idee, da es längere Passwörter und bessere Verschlüsselung erlaubt. Mit MD5 sind Passwörter möglich, die länger als 8 Zeichen sind. Auf diese Weise kann man es einem Angreifer schwieriger machen, mit Brute-Force-Methoden an die Passwörter heranzukommen. Dies ist die Standardeinstellung in den neueren Versionen des Pakets password. Sie können dies noch jederzeit nach der Installation mit dpkg-reconfigure -plow passwd ändern. Sie erkennen MD5-Passwörter übrigens in der /etc/shadow an dem Anfang $1$.

Dies verändert allerdings alle Dateien im Verzeichnis /etc/pam.d und ergänzt in der "password"-Zeile den Eintrag "md5".

     password required pam_unix.so md5 nullok obscure min=6 max=16

Wird der Wert für max nicht größer als 8 gewählt, ist diese Änderung ziemlich sinnlos.


3.6 Lassen Sie so wenige Dienste wie möglich laufen

Dienste sind Programme wie FTP- und Web-Server. Da sie eingehende Verbindungen, die den Dienst anfordern entgegennehmen und ihnen zuhören müssen, können sich externe Computer mit Ihrem Computer verbinden. Dienste sind manchmal verwundbar (zum Beispiel durch einen bestimmten Angriff kompromitierbar) und sind dadurch ein Sicherheitsrisiko.

Sie sollten keine Dienste installieren, die Sie nicht unbedingt auf dem System brauchen. Jeder installierte Dienst könnte neue, vielleicht nicht gerade offensichtliche (oder bekannte) Sicherheitslöcher auf Ihrem Computer öffnen.

Wie Sie vielleicht schon wissen, wird ein Dienst, sobald er installiert wird, auch gleich automatisch aktiviert. Bei einer Standardinstallation ohne weitere installierte Dienste ist das Risiko ziemlich gering. Es wird noch geringer, wenn man nur Dienste installiert, die man auch wirklich im Netzwerk anbieten möchte. Das Risiko bei Debian 2.1 war etwas größer als bei Debian 2.2 (einige inetd-Dienste waren standardmäßig aktiviert) und in Debian 2.2 ist der RPC-Portmapper nach der Installation aktiviert. RPC ist standardmäßig installiert, da er für viele Dienste wie zum Beispiel NFS benötigt wird. Er kann sehr leicht entfernt werden. Lesen Sie Daemons abschalten, Abschnitt 3.6.1, wie Sie ihn abschalten.

Wenn Sie einen neuen Netzwerk-Dienst (daemon) auf Ihrem Debian GNU/Linux System installieren, kann er auf zwei Arten gestartet werden: durch den inetd Superdaemon (d. h. eine Zeile wird zu der /etc/inetd.conf hinzugefügt) oder durch ein eigenständiges Programm, dass sich selbst an die Netzwerk-Schnittstelle bindet. Eigenständige Programme werden durch /etc/init.d gesteuert. Sie werden beim Hochfahren durch den Sys-V-Mechanismus gestartet, der die symbolischen Links in /etc/rc?.d/* benutzt. (Mehr Informationen dazu finden Sie in /usr/share/doc/sysvinit/README.runlevels.gz).

Wenn Sie trotzdem Dienste installieren möchten, diese aber selten benutzen, entfernen Sie sie mit den update-Befehlen, wie update-inetd und update-rc.d.


3.6.1 Daemons abschalten

Das Abschalten eines Daemons ist sehr einfach. Es gibt verschiedene Methoden:

Sie können die Links manuell aus /etc/rc${runlevel}.d/ entfernen oder Sie benutzen update-rc.d (siehe auch update-rc.d(8)). So können Sie zum Beispiel einen Dienst in den Multi-User-Runleveln abschalten:

     update-rc.d stop XX 2 3 4 5 .

Bitte beachten Sie, dass update-rc.d -f _service_ remove nicht korrekt arbeiten wird, wenn Sie nicht file-rc benutzen, da alle Verknüpfungen entfernt werden. Nach einer Neuinstallation oder einem Upgrade dieses Paketes werden diese Verknüpfungen neu angelegt (was Sie vermutlich nicht wollen). Wenn Sie denken, dass dies wenig intuitiv ist, haben Sie wahrscheinlich recht (siehe Bug 67095). Aus der Manpage:

      If any files /etc/rcrunlevel.d/[SK]??name already exist then
      update-rc.d does nothing.  This is so that the system administrator 
      can rearrange the  links,  provided that  they  leave  at  least one
      link remaining, without having their configuration overwritten.

Wenn Sie file-rc benutzen, werden alle Informationen über das Starten von Diensten durch eine gemeinsame Konfigurationsdatei verarbeitet und werden sogar nach der Deinstallation eines Dienstes von dem System beibehalten.

Sie können das TUI (Text User Interface, textbasierte Benutzungsoberfläche) des Paketes rcconf benutzen, um all diese Änderungen einfach zu erledigen (rcconf arbeitet sowohl mit file-rc als auch mit normalen System-V-Runleveln).

Andere (nicht empfohlene) Methoden zum Abschalten eines Dienstes sind: chmod 644 /etc/init.d/daemon (aber das erzeugt eine Fehlermeldung beim booten) oder das Ändern des /etc/init.d/daemon-Skriptes (hinzufügen von exit 0 als allererste Zeile oder Auskommentieren des start-stop-daemon Teils). Da es sich bei allen init.d-Dateien um Konfigurationsdateien handelt, werden sie bei einem Upgrade nicht überschrieben.

Leider können Sie, im Gegensatz zu anderen (UNIX-) Betriebssystemen, Dienste unter Debian nicht abschalten, indem Sie die Dateien unter /etc/default/_servicename_ modifizieren.

FIXME: Add more information on handling daemons using file-rc


3.6.2 Abschalten von inetd-Diensten

Abschalten sollten Sie alle nicht benötigten Dienste, wie zum Beispiel echo, chargen, discard, daytime, time, talk, ntalk und die r-Dienste (rsh, rlogin und rcp), die als SEHR unsicher gelten (benutzen Sie stattdessen ssh). Nachdem Sie diese abgeschaltet haben, sollten Sie überprüfen, ob Sie überhaupt den inetd-Daemon brauchen. Viele Leute ziehen es vor einzelne Daemonen zu benutzen, anstatt einen Dienst über inetd zu starten. Wenn Sie dann immer noch einen inetd-Dienst laufen lassen wollen, wechseln Sie zu einem besser zu konfigurierenden inet-Daemonen, wie xinetd oder lrinetd.

Sie können Dienste abschalten, indem Sie direkt /etc/inetd.conf editieren, aber Debian stellt Ihnen einen besseren Weg zur Verfügung: update-inetd (was die Dienste auf eine Art auskommentiert, so dass sie leicht wieder eingeschaltet werden können). Sie können den Telnet-Daemon sehr leicht mit dem folgenden Kommando abschalten, so dass die Konfigurationsdateien angepasst und der Daemon neu gestartet wird:

     /usr/sbin/update-inetd --disable telnet

Wenn Sie Dienste starten wollen, aber nur auf bestimmten IP-Adressen Ihres Systems, müssen Sie eventuell auf eine undokumentierte Funktion des inetd zurückgreifen. Alternativ können Sie einen Daemon wie xinetd benutzen.


3.7 Installieren Sie möglichst wenig Software

Debian bietet sehr viel Software an. Debian 3.0 (woody) enthält alleine 6 CDs mit Software und tausenden von Paketen. Bei so viel Software, selbst wenn Sie die Installation auf das Basis-System reduzieren [2] 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ötige installierte Programm könnte von einem Nutzer, 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, Python, tcl, s.u.) 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 wird es für den Angreifer wesentlich schwieriger werde, das System zu komprimitieren (und manchmal wird er in dieser Situation aufgeben und sich ein leichteres Ziel suchen). Wenn Sie also auf einem produktivem System Tools lassen, die benutzt werden können, um andere Systeme anzugreifen (siehe Tools zur Fern-Prüfung der Verwundbarkeit, Abschnitt 8.1), müssen Sie auch davon ausgehen, dass ein Angreifer sie benutzen wird.


3.7.1 Entfernen von Perl

Sie müssen bedenken, dass es nicht gerade einfach ist, Perl von einem Debian-System zu entfernen, 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. Sie müssen nur bedenken, dass Sie auf diesem System keine Perl-Anwendung mehr laufen lassen können, und Sie müssen auch das Paket-Management-System hereinlegen, damit es weiterhin denkt, dass perl-base installiert ist, auch wenn es das nicht mehr ist. [4]

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 mit ein:

Ohne Perl und solange Sie diese Dienstprogramme nicht in einem Shell-Skript neuschreiben, werden Sie also wahrscheinlich keine Pakete mehr verwalten können (und so das System nicht upgraden können, und das ist keine gute Idee).

Wenn Sie sich dazu entschlossen haben, Perl aus dem Debian-Basis-System zu entfernen und ein wenig Freizeit haben, schicken Sie uns doch Bug-Reports zu den aufgezählten Paketen, die (als ein Patch) einen Ersatz dieser Dienstprogramme als Shell-Skript enthält.


3.8 Lesen Sie Debians Sicherheits-Mailinglisten

Es ist niemals falsch einen Blick entweder in die debian-security-announce Mailing-Liste zu werfen, wo Sicherheitsgutachten und Problemlösungen durch das Debian-Sicherheits-Team bekannt gemacht werden oder sich an der debian-security@lists.debian.org-Liste zu beteiligen, wo Sie an den Diskussionen zu allen sicherheitsrelevanten Fragen teilnehmen könen.

Um wichtige Warnungen zu Sicherheits-Update zu erhalten, senden Sie eine E-Mail an debian-security-announce-request@lists.debian.org mit dem Wort "subscribe" in der Betreff-Zeile. Sie können diese moderierte E-Mail-Liste unter http://www.debian.org/MailingLists/subscribe auch über das Web abonnieren.

Diese Mailingliste hat ein sehr geringes Aufkommen, und indem Sie sie abonnieren, werden Sie sofort über Sicherheits-Updates der Debian-Distribution informiert. Dies erlaubt Ihnen sehr schnell neue Pakete mit Sicherheits-Updates herunterzuladen, was sehr wichtig ist, um ein sicheres System zu verwalten (siehe Ausführen von Sicherheitsupdates, Abschnitt 4.8 für weitere Details, wie Sie dies machen).


[ zurück ] [ Inhalt ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ A ] [ B ] [ C ] [ D ] [ E ] [ F ] [ weiter ]

Anleitung zum Absichern von Debian

2.5 (beta) 31 mayo 2004Sat, 17 Aug 2002 12:23:36 +0200

Javier Fernández-Sanguino Peña jfs@computer.org