[ zurück ] [ Inhalt ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ A ] [ B ] [ C ] [ D ] [ E ] [ F ] [ G ] [ H ] [ weiter ]
Eine Anleitung, die Schritt für Schritt darstellt, wie ein Debian 2.2 GNU/Linux-System nach der Installation abgehärtet wird, ist unten aufgeführt. Das ist nur eine denkbare Herangehensweise von einem solchen Vorgang. Sie ist am Absichern von Netzwerkdiensten orientiert und stellt den gesamten Anlauf der Konfiguration vor. Vergleichen Sie auch Checkliste der Konfiguration, Anhang B.
Installieren Sie das System. Beachten Sie dabei die Informationen dieses HOWTOs bezüglich der Partitionierung. Nach der Basis-Installation nehmen Sie eine angepasste Installation vor. Wählen Sie keine Task-Pakete aus. Aktivieren Sie shadow passwords.
Entfernen Sie mit dselect
alle nicht benötigten aber ausgewählten
Pakete, bevor Sie [I]nstallation wählen. Behalten Sie nur die absolut
notwendige Software auf dem System.
Aktualisieren Sie die ganze Software mit den aktuellen Paketen von security.debian.org, wie bereits unter Ausführen von Sicherheitsupdates, Abschnitt 4.2 beschrieben.
Implementieren Sie die in dieser Anleitung vorgeschlagenen Maßnahmen zu
User-Quotas, Ausgestaltung des Logins und Lilo
.
Machen Sie sich eine Liste von allen Diensten, die derzeit auf Ihrem System laufen. Versuchen Sie dazu Folgendes:
$ ps aux $ netstat -pn -l -A inet # /usr/sbin/lsof -i | grep LISTEN
Damit das dritte Kommando funktioniert, werden Sie lsof-2.2
installieren müssen (und es als Root laufen lassen). Beachten Sie, dass
lsof
das Wort LISTEN passend zu Ihrer Lokalisation übersetzen
kann.
Um einen unnötigen Dienst zu entfernen, stellen Sie zunächst fest, wie er
gestartet wird, und welches Paket ihn zur Verfügung stellt. Sie können dies
ganz einfach machen, indem Sie das Programm prüfen, das auf dem Socket lauscht.
Das nachfolgende Shell-Skript, das die Programme lsof
und
dpkg
verwendet, macht genau das:
#!/bin/sh # FIXME: this is quick and dirty; replace with a more robust script snippet for i in `sudo lsof -i | grep LISTEN | cut -d " " -f 1 |sort -u` ; do pack=`dpkg -S $i |grep bin |cut -f 1 -d : | uniq` echo "Service $i is installed by $pack"; init=`dpkg -L $pack |grep init.d/ ` if [ ! -z "$init" ]; then echo "and is run by $init" fi done
Wenn Sie einen unerwünschten Dienst finden, entfernen Sie das Paket (mit
dpkg --purge
). Oder benutzen Sie update-rc.d
(siehe
Daemons abschalten, Abschnitt 3.6.1),
um ihn aus dem Start-Prozess zu entfernen.
Überprüfen Sie bei inetd-Diensten (werden durch den Superdaemon gestartet),
welche Dienste in /etc/inetd.conf
aktiviert sind. Verwenden Sie
dazu Folgendes:
$ grep -v "^#" /etc/inetd.conf | sort -u
Deaktivieren Sie dann diejenigen Dienste, die Sie nicht benötigen, indem Sie
die Zeile in /etc/inetd.conf
auskommentieren, das Paket entfernen,
oder indem Sie update-inetd
benutzen.
Wenn Sie Dienste eingehüllt haben (und /usr/sbin/tcpd
benutzen)
prüfen Sie, ob die Dateien /etc/hosts.allow
und
/etc/hosts.deny
passend zu Ihren Richtlinien für die Dienste
konfiguriert sind.
Wenn der Server mehr als eine externe Schnittstelle benutzt, sollten Sie vielleicht Dienste darauf beschränken, auf bestimmten Schnittstellen zu lauschen. Ob das möglich ist, hängt aber von den Diensten ab. Wenn Sie zum Beispiel internen FTP-Zugriff erlauben wollen, lassen Sie den FTP-Daemon nur auf der internen Schnittstelle lauschen, nicht auf allen (d.h. 0.0.0.0:21).
Booten Sie die Maschine neu, oder wechseln Sie in den Single-User-Modus und zurück in den Multi-User-Modus mit:
$ init 1 (....) $ init 2
Prüfen Sie die nun angebotenen Dienste und wiederholen Sie gegebenenfalls die letzten Schritte.
Installieren Sie jetzt die benötigten Dienste, falls es noch nicht geschehen ist, und konfigurieren Sie sie passend.
Prüfen Sie mit folgendem Shell-Befehl, unter welchem Nutzer die verfügbaren Dienste laufen:
$ for i in `/usr/sbin/lsof -i |grep LISTEN |cut -d " " -f 1 |sort -u`; \ > do user=`ps ef |grep $i |grep -v grep |cut -f 1 -d " "` ; \ > echo "Service $i is running as user $user"; done
Überlegen Sie, ob Sie diese Dienste einem bestimmten Benutzer oder Gruppe
zuweisen wollen und sie vielleicht auch in einer chroot-Umgebung einsperren
wollen, um die Sicherheit zu erhöhen. Sie können dies tun, indem Sie die
/etc/init.d
-Skripte ändern, die den Dienst starten. Die meisten
Dienste benutzen unter Debian start-stop-daemon
, der die dafür
Optionen (--change-uid und --chroot) zur Verfügung
stellen. Ein paar warnende Worte zum Einsperren in eine
chroot
-Umgebung: Sie müssen alle Dateien, die durch das Paket des
Dienstes installiert wurden (verwenden Sie dpkg -L), und alle Pakete, von denen
es abhängt, in die Chroot
-Umgebung legen. Informationen, wie das
Programm ssh
in eine chroot
-Umgebung eingesperrt
wird, finden Sie unter Chroot
-Umgebung für
SSH
, Anhang G.
Wiederholen Sie die Schritte oben um zu prüfen, ob nur die gewünschten Dienste laufen, und ob sie unter der gewünschten Nutzer/Gruppen-Kombination laufen.
Testen Sie die installierten Dienste, um festzustellen, ob sie wie erwartet arbeiten.
Überprüfen Sie das System, indem Sie einen Scanner zur Abschätzung der
Verwundbarkeit (zum Beispiel nessus
) benutzen, um
Angriffsmöglichkeiten (Fehlkonfigurationen, alte oder nicht benötigte Dienste)
zu finden.
Installieren Sie Instrumente zur Entdeckung von Eindringlingen in Netzwerk und
Hosts (wie snort
und logcheck
).
Wiederholen Sie den Netzwerk-Scan und prüfen Sie, ob das System zur Erkennung von Eindringlingen funktioniert.
Die richtig Paranoiden überlegen sich auch das Folgende:
Fügen Sie dem System Firewall-Fähigkeiten hinzu, die eingehende Verbindungen nur zu angebotenen Diensten erlauben und ungenehmigte ausgehende Verbindungen verhindern.
Überprüfen Sie erneut die Installation auf Angriffspunkte mit einem Netzwerk-Scanner.
Prüfen Sie ausgehende Verbindungen vom System zu Hosts außerhalb mit einem Netzwerk-Scanner, um sicherzustellen, dass ungewollte Verbindungen keinen Weg nach draußen finden.
FIXME: this procedure considers service hardening but not system hardening at the user level, include information regarding checking user permissions, SETUID files and freezing changes in the system using the ext2 file system.
[ zurück ] [ Inhalt ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ A ] [ B ] [ C ] [ D ] [ E ] [ F ] [ G ] [ H ] [ weiter ]
Anleitung zum Absichern von Debian
Version: 3.6, Fri, 23 Jun 2006 11:02:43 +0000jfs@debian.org