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


Securing Debian Manual
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 Bootdiskette, 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.

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


3.2 Partitionieren des Systems


3.2.1 Wählen Sie eine intelligente 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 separate Partition für die Mail-Warteschlange (mail spool) anzulegen. Nicht-Lokale Benutzer können (wissentlich oder unwissentlich) diese Verzeichnisse (/var/mail oder /var/spool/mail) fü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 der passenden Dateisysteme

Während der Partitionierung des Systems müssen Sie sich ebenfalls entscheiden, welche Dateisysteme Sie benutzen möchten. Als Standard-Dateisystem[8] wird während der Installation für Linux-Partitionen ext3 ausgewählt, das ein »Journaling Dateisystem« ist. Es ist empfehlenswert, immer ein solches Dateisystem zu verwenden, wie zum Beispiel ext3, reiserfs, jfs oder xfs. Dadurch verringern Sie Probleme nach einen Absturz des Systems in folgenden Fällen:

Lassen wir mal die Betrachtung der Leistung von Journaling-Dateisystemen beiseite (da dies oft in quasi-religiöse Glaubenskriege 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 oder 2.6er 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-Dateisystem benutzen, werden Sie feststellen, dass eine Wiederherstellung nicht möglich ist, bis Sie einen 2.4er oder 2.6er Kernel mit den benötigten Modulen haben. Wenn Sie einen 2.2er Kernel auf der Rettungsdiskette verwenden müssen, kann es sich als noch schwerer erweisen, auf reiserfs oder xfs zuzugreifen.

Auf jeden Fall ist die Datenintegrität unter ext3 besser, 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).

Beachten Sie aber, dass es auch einige Partitionen gibt, die von einem Journaling-Dateisystem nicht profitieren könnten. Wenn Sie beispielsweise eine eigene Partition für /tmp/ verwenden, könnte ein übliches ext2-Dateisystem besser sein, weil es bei einem Neustart des Systems ohnehin geleert wird.


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

Während der Installation sollten Sie das System nicht sofort 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 Ihr System für Angriffe öffnen, wenn das System mit dem Internet verbunden ist und die Dienste nicht geeignet konfiguriert sind.

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 kompromittiert sein, bevor Sie mit der Installation fertig sind!

Da die Debian-Installation und die Upgrades über das Internet durchgeführt werden können, denken Sie vielleicht, es sei 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 System ohne Internet-Verbindung zu installieren. Benutzen Sie sowohl für die zu installierenden Pakete als auch für die Sicherheitsaktualisierungen eine lokale Quelle (Spiegel). Sie können einen Paket-Spiegel aufsetzen, indem Sie ein anderes System nutzen, dass mit dem Internet verbunden ist und für Debian spezifische Werkzeuge (falls es sich um ein Debian-System handelt) wie apt-move oder apt-proxy oder andere gebräuchliche Werkzeuge zur Erstellung von Spiegeln verwendet. Damit kann das Archiv für das installierte System zur Verfügung gestellt werden. Sollte dies nicht möglich sein, sollten Sie Firewall-Regeln aufsetzen, die den Zugriff auf Ihr System beschränken, während Sie die Aktualisierung durchführen (siehe Schutz der Sicherheitsaktualisierung durch eine Firewall, Anhang F).


3.4 Setzen Sie ein Passwort für Root

Setting a good root password is the most basic requirement for having a secure system. See passwd(1) for some hints on how to create good passwords. You can also use an automatic password generation program to do this for you (see Erstellen von Benutzerpasswörtern, Abschnitt 4.11.14).

Im Internet gibt es zahlreiche Hinweise dazu, wie man gute Passwörter wählt. Zwei Seiten, die eine angemessene Übersicht und Begründung bieten, sind Eric Wolframs How to: Pick a Safe Password und Walter Belgers Unix Password Security.


3.5 Lassen Sie so wenige Dienste wie möglich laufen

Dienste sind Programme wie FTP- und Web-Server. Da sie auf eingehende Verbindungsanfragen, die den Dienst anfordern, warten müssen, können sich externe Computer mit Ihrem Computer verbinden. Dienste sind manchmal verwundbar (das heißt, durch einen bestimmten Angriff kompromittierbar) und stellen dadurch ein Sicherheitsrisiko dar.

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 die Anzahl der laufenden Dienste ziemlich gering. Und die Anzahl der Dienste, die im Netzwerk angeboten werden, ist noch niedriger. In einer Standardinstallation von Debian 3.1 werden Sie mit OpenSSH, Exim (abhängig davon, wie Sie ihn konfiguriert haben) und dem RPC-Portmapper als Netzwerkdienste auskommen.[9] Wenn Sie nicht eine Standard-, sondern eine Experten-Installation durchgeführt haben, kann es sein, dass Sie überhaupt keine aktiven Netzwerkdienste haben. Der RPC-Portmapper ist standardmäßig installiert, da er für viele Dienste wie zum Beispiel NFS benötigt wird. Er kann allerdings sehr leicht entfernt werden. Weitere Informationen, wie Sie RPC-Dienste absichern oder abschalten, finden Sie unter Absichern von RPC-Diensten, Abschnitt 5.13.

Wenn Sie einen neuen Netzwerkdienst (Daemon) auf Ihrem Debian GNU/Linux System installieren, kann er auf zwei Arten gestartet werden: durch den Superdaemon inetd (d. h. eine Zeile wird zu /etc/inetd.conf hinzugefügt) oder durch ein eigenständiges Programm, das sich selbst an die Netzwerkschnittstelle 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. Weitere Informationen dazu finden Sie in /usr/share/doc/sysvinit/README.runlevels.gz.

Wenn Sie Dienste installieren möchten, diese aber selten benutzen, entfernen Sie sie mit den update-Befehlen wie update-inetd oder update-rc.d aus dem Startvorgang. Weitere Informationen, wie Sie Netzwerkdienste abschalten, finden Sie unter Daemons abschalten, Abschnitt 3.5.1. Wenn Sie das Standardverhalten des Startens von Diensten nach der Installation von ihren Paketen ändern wollen[10], lesen Sie bitte für weiterführende Informationen /usr/share/doc/sysv-rc/README.policy-rc.d.gz.

Die Unterstützung von invoke-rc.d ist bei Debian nun zwingend. Dies bedeutet, dass Sie seit Debian 4.0 Etch eine policy-rc.d-Datei anlegen können, die das Starten von Daemons verbietet, bevor Sie sie konfiguriert haben. Zwar sind derartige Skripte noch nicht in Paketen enthalten, sie sind aber ziemlich leicht zu schreiben. Sehen Sie sich auch policyrcd-script-zg2 an.


3.5.1 Daemons abschalten

Das Abschalten eines Daemons ist sehr einfach. Entweder Sie entfernen das Paket, welches das Programm für diesen Dienst anbietet, oder Sie entfernen oder benennen die Startlinks unter /etc/rc${runlevel}.d/ um. Wenn Sie sie umbenennen, stellen Sie sicher, dass sie nicht mehr mit einem »S« beginnen, damit sie nicht von /etc/init.d/rc ausgeführt werden. Entfernen Sie nicht alle verfügbaren Links, denn sonst wird das Paketverwaltungssystem sie bei dem nächsten Upgrade des Pakets wieder herstellen. Gehen Sie also sicher, dass zumindest ein Link übrig bleibt (typischerweise ein »K«-Link, »K« steht für »kill«). Zusätzliche Informationen finden Sie im Abschnitt Anpassen des Bootvorgangs der Debian-Referenz (2. Kapitel - Debian-Grundlagen).

You can remove these links manually or using update-rc.d (see update-rc.d(8)). For example, you can disable a service from executing in the multi-user runlevels by doing:

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

Wobei XX eine Zahl ist, die bestimmt, wann die Stop-Aktion für diesen Dienst ausgeführt wird. Bitte beachten Sie, dass update-rc.d -f Dienst 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 nicht sehr intuitiv ist, haben Sie wahrscheinlich recht (siehe Bug 67095). Aus der Handbuchseite:

       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 sogar nach der Deinstallation von Paketen beibehalten.

Sie können das TUI (Text User Interface, textbasierte Benutzungsoberfläche) des Paketes sysv-rc-conf benutzen, um all diese Änderungen einfach zu erledigen (sysv-rc-conf arbeitet sowohl mit file-rc als auch mit normalen System-V-Runleveln). Es gibt auch vergleichbare GUIs für Desktop-Systeme. Sie können auch die Befehlszeile von sysv-rc-conf verwenden:

       # sysv-rc-conf foobar off

Der Vorteil dieses Werkzeugs ist, dass die rc.d-Links wieder auf den Status zurückgesetzt werden, die sie vor dem Aufruf von »off« hatten, wenn Sie den Dienst wieder aktivieren mit:

       # sysv-rc-conf foobar on

Andere (weniger empfohlene) Methoden zum Abschalten eines Dienstes sind:

Jedoch handelt es sich bei allen Dateien unter /etc/init.d um Konfigurationsdateien und sollten daher bei einem Upgrade des Pakets nicht überschrieben werden.

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

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


3.5.2 Abschalten von Inetd oder seinen Diensten

Sie sollten überprüfen, ob Sie heutzutage den inetd-Daemon überhaupt brauchen. Inetd war früher eine Möglichkeit, Unzulänglichkeiten des Kernels auszugleichen. Diese sind aber in modernen Linux-Kerneln nicht mehr vorhanden. Gegen inetd gibt es die Möglichkeit von Angriffen, die zur Dienstverweigerung führen (Denial of Service), welche die Last des Rechners unglaublich erhöhen. Viele Leute ziehen es vor, einzelne Daemonen zu benutzen, anstatt einen Dienst über inetd zu starten. Wenn Sie immer noch einen inetd-Dienst laufen lassen wollen, wechseln Sie wenigstens zu einem besser zu konfigurierenden Inet-Daemonen wie xinetd, rlinetd oder openbsd-inetd.

Sie sollten alle nicht benötigten Inetd-Dienste auf Ihrem System abschalten, 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).

Sie können Dienste abschalten, indem Sie direkt /etc/inetd.conf editieren, aber Debian stellt Ihnen einen besseren Weg zur Verfügung: update-inetd (womit die Dienste auf eine Art auskommentiert werden, in der sie leicht wieder aktiviert 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, können Sie auf eine undokumentierte Funktion des inetd zurückgreifen (Austausch des Namens des Dienstes durch dienst@ip). Alternativ können Sie einen Daemon wie xinetd benutzen.


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 [11], 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 Programme zur Fernprüfung der Verwundbarkeit, Abschnitt 8.1), 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 Fehler #301273 und Fehler #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. [13]

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:

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

3.7 Lesen Sie Debians Sicherheits-Mailinglisten

Es ist niemals falsch, einen Blick in die Mailingliste debian-security-announce zu werfen, auf der Anleitungen und Problemlösungen durch das Debian-Sicherheits-Team bekannt gemacht werden, oder sich an mailto:debian-security@lists.debian.org zu beteiligen, wo Sie an Diskussionen zu sicherheitsrelevanten Fragen teilnehmen können.

Um wichtige Warnungen zu Sicherheitsaktualisierungen zu erhalten, senden Sie eine E-Mail an debian-security-announce-request@lists.debian.org mit dem Wort »subscribe« in der Betreffzeile. Sie können diese moderierte E-Mail-Liste unter http://www.de.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 Sicherheitsaktualisierungen der Debian-Distribution informiert. Dies erlaubt Ihnen sehr schnell, neue Pakete mit Sicherheitsaktualisierungen herunterzuladen, was sehr wichtig ist, um ein sicheres System zu verwalten (siehe Ausführen von Sicherheitsaktualisierungen, Abschnitt 4.2 für weitere Details, wie Sie dies durchführen).


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


Securing Debian Manual

Version: 3.17, Sun, 08 Apr 2012 02:48:09 +0000

Javier Fernández-Sanguino Peña jfs@debian.org
Autoren, Abschnitt 1.1