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, CDROM oder sonstigen Geräten booten können, von denen dies nicht gehen sollte. Andernfalls benötigt ein Cracker nur physischen Zugang und eien Bootdiskete um Zugriff auf Ihr ganzes System zugreifen zu können.
Das Abschalten von booten ohne Passwort ist sogar noch besser! Dies kann sehr effektiv sein, wenn Sie einen Server laufen lassen, da er nicht sehr oft neu gebootet werden wird. Der Nachteil dieser Taktik ist, dass das Neustarten einen menschlichen Eingriff benötigt, was zu Problemen führen kann, wenn die Maschinen nicht leicht zugänglich ist.
Beachten Sie: Viele BIOSe haben wohl bekannte Master-Passwörter, und es gibt sogar Applikationen, um Passwörter aus dem BIOS wieder zu gewinnen. Folglich können Sie sich nicht auf diese Massnahme verlassen, um den Zugriff auf das Systems abzusichern.
Was ein Inteligentes Partiotions-Schemata ist, hängt davon ab, wie die Maschine benutzt wird. Eine gute Faustregel ist, mit Ihren Partitionen eher grosszügig zu sein und die folgenden Faktoren zu berücksichtigen:
/home
und /tmp
sollte auf einer separaten Partition
liegen. Dies reduziert das Risiko eines DoS durch einen Nutzer, indem er Ihren
"/"-Mountpoint auffüllt und so das gesamte System unbenutzbar
macht. (Eigentlich ist das so nicht ganz richtig, da immer etwas Platz
für den Superuser root reserviert wird, den ein normaler Nutzer nicht
belegen kann.)
/var
(insbesondere /var/log
) eine seperate Partition
bekommen. Auf einem Debian System sollten Sie /var
ein wenig
grösser als normal erstellen, da herunter geladene Pakete (der
Zwischenspeicher von apt) unter /var/cache/apt/archives
gespeichert wird.
/opt
oder /usr/local
. Wenn diese separate
Partitionen sind, werden Sie nicht gelöscht, wenn Sie einmal Ihr Debian
neu installieren (müssen).
Im Falle eines Mailservers ist es wichtig eine seperate Partition für den
Mail-Pool. Nicht-Lokale Nutzer können (wissentlich oder unwissentlich)
den Mail-Pool (/var/mail
oder /var/spool/mail
überfüllen. Wenn der Poll eine separate Partition ist, wird diese
Situation das System nicht in einen unnutzbaren Zustand führen.
Anderenfalls (wenn das Pool-Verezichniss denselben Platz belegt, wie
/var
) hat das System ein schwerwiegendes Problem:
Protokoll-Einträge (log's) 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).
Ausserdem sollten Sie für Partitionen, deren Platzbedarf Sie noch nicht
abschätzen können, Logical Volume Manager (lvm-common
und die benötigten ausführbaren Programme (binaries), entweder
lvm10
, lvm6
, oder lvm5
) installieren.
Durch benutzen von lvm können Sie Datenträger-Gruppen
erstellen, die mehrere physische Datenträger erweitern.
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 Debian Installation für Linux Partitionen ext2 ausgewählt. Dennoch ist es ratsam, auf ein "journaling filesystem" (ein Dateisystem, dass Änderungen mitprotokolliert) zu wechseln, wie zum Beispiel ext3, reiserfs, jfs oder xfs. Dadurch verkleinern Sie Probleme, die durch einen Absturz des Systems
Lassen wir mal die Betrachtung der Leistung von journaling Filesystemen beiseite (da sich dies oft zu quasi religioösen Glaubenskriegen ausartet). Im Regelfall 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 immernoch ein funktionierendes Dateisystem. Ausserdem können Sie, wenn Sie das System mal mit einer Boot-Diskette (oder CDROM) wiederherstellen müssen, keinen speziellen Kernel benutzen. Wenn es sich um einen 2.4er Kernel handelt, ist Unterstützung für etx3 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üssen. Wenn Sie ein anderes journaling Filesystem benutzen werden Sie feststellen, dass Ihnen eine Widerherstellung nicht möglich ist, bis Sie einen 2.4er Kernel, mit den benötigten Modulen einkompiliert, haben. Wenn Sie mit einem 2.2er Kernel der Rettungs-Diskette festhängen, kann es sich als ziemlich schwer erweisen, auf reiserfs pder xfs zuzugreifen.
In jedem Fall könnten mit ext3 weniger Daten-Verluste
auftreten, da es auch Datei-Daten protokolliert, während lediglich
Meta-Daten protokollieren, siehe auch http://lwn.net/2001/0802/a/ext3-modes.php3
.
Das Sytem, das Sie installieren wollen, sollten Sie nicht sofort währen der Installation mit dem Internet verbinden. Dies hörrt sich vielleicht doof an, wird aber gewöhnlich so getan. Da das System Services installieren und sofort installieren wird, können Sie, wenn das System mit dem Internet verbunden ist und sie nicht geeignet konfiguriert sind, Ihr System für Angriffe öffnen.
Ausserdem sollten Sie beachten, dass Services neuere Sicherheits-Löcher haben lönnte, die noch nicht in den Paketen, die Sie zur Installation benutzen, korrigiert worden sind. Dies ist für gewöhnlich dann der Fall, wenn Sie von älteren Medien (wie CD-ROMs) installieren. In diesem Fall wäre Ihr System bereits kompromitiert, bevor Sie mit der Installation fertig sind!
Da die Debian Installation und Upgrades ü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
direct mit dem Internet Verbunden ist (und nicht von einer Firwall oder NAT
beschützt wird), ist es besser ohne Internet Verbindung zu installieren
und Lokale-Paket-Spiegel (Mirror) sowohl von den Paket-Quellen als auch von den
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
oder andere der üblichen
Werkzeuge zum spiegel benutzen, um ein Archiv für das zu installierende
System zur Verfügung zu stellen. Wenn Sie dies nicht tun können,
sollten Sie Firewall-Regeln aufsetzen, die den Zugriff auf Ihr System
eingrenzen, währen Sie das Update durchführen (siehe
id="fw-security-update">).
Das Setzen eines guten Root-Passworts ist die wichtigiste, grundlegende Anforderung an ein sicheres System.
Am Ende der Installation werden Sie gefragt werden, ob "shadow
passwords" eingeschaltet werden sollen. Beantworten Sie diese Frage mit
"yes", dann werden Passwörter in der Datei
/etc/shadow
. Nur Root und die Gruppe shadow haben lese Zugriff
auf diese Datei, so ist es keinem Nutzer möglich, sich eine Kopie dieser
Datei zu erstellen, um einen Passwort-Cracker auf sie laufen zu lassen. Sie
können mit dem Befehl shadowconfig jederseit zwischen
"shadow passwords" und normalen Passwörtern wechseln.
Desweiteren werden Sie während der Installation gefragt, ob Sie mit MD5
gehashte Passwörter benutzen möchten. Dies ist im allgemeinen eine
gute Idee, da es längere Passwörter und bessere Verschlüsselung
erlaubt.
Mehr über "shadow passwords" lesen Sie unter Shadow
Password
(/usr/share/doc/HOWTO/en-txt/Shadow-Password.txt.gz
).
Service sind Programme wie FTP- und Web-Server. Da sie eingehende Verbindungen, die den Service anfordernm entgegen nehmen und ihnen zuhören müssen, können sich externe Computer mit Ihrem verbinden. Services sind manchmal verwundbar (zum Beispiel durch eine bestimmte Attacke kompromitierbar) und sind dadurch ein Sicherheits Risiko.
Sie sollten keine Services installieren, die Sie nicht unbedingt auf der Machine brauchen. Jeder Installierter Service könnte neue, vielleicht nicht auf der Hand liegende (oder bekannte) Sicherheits-Löcher auf Ihrem Computer.
Wie Sie vielleicht schon wissen, ist ein bestimmter Service, den Sie installieren, ist er standardmässig aktiviert. In der der default Debian Installation, ohne jeden installierten Service, sind die Fussspuren der laufenden Services sind ziemlich gering und noch geringer, wenn man nur von Servicen spricht, die zu einem Netzwerk hin angeboten werden. Die Fussspuren von Debian 2.1 waren nicht so tief wie die von Debian 2.2 (ein paar inetd-Services wurden standard-mässig eingeschaltet) und in Debian 2.2 sind die rpc-Portmapper nach der Installation eingeschaltet. Rpc ist standardmässig installiert, da er für vueke Services benötigt wird. Er kann sehr leicht entfernt werden, sehen sie Daemon-Services abschalten, Abschnitt 3.6.1, um zu erfahren, wie man Ihn abschaltet.
Wenn Sie einen neuen Netzwerk nutzenden Service (daemon) auf Ihrem Debian
GNU/Linux System instalieren, kann er auf zwei Arten eingeschaltet werden:
Durch den inetd Superdaemon (was heisst: Eine Zeile wird
/etc/inetd.conf
hinzugefügt) oder durch ein alleinstehendes
Programm, dass sich selbst an die Netzwerk-Schnittstelle bindet.
Alleinstehende Programme werden durch /etc/init.d
kontrolliert,
diese werden beim starten durch den SysV-Mechanismus (oder einen alternativen=
gestartet, indem die symbolischen Verknüpfungen (Links) in
/etc/rc?.d/*
benutzt werden (Mehr Informationen wie dies geschieht
finden Sie in /usr/share/doc/sysvinit/README.runlevels.gz
).
Wenn Sie trotzdem Services installieren wollen, diese aber selten benutzen, entfernen Sie sie mittels den update-Befehlen, wie 'update-inetd' und 'update-rc.d'.
Das Abschalten eines Daemon-Service ist sehr einfach. Es gibt verschiedene Methoden:
/etc/rc${runlevel}.d/
oder umbenennen der
Links (so dass sie nicht mit einem 'S' anfangen)
/etc/init.d/_service_name_
), zum
Beispiel in /etc/init.d/OFF._service_name_
/etc/init.d/_service_name_
/etc/init.d/_service_name_
, so dass sich das
Skript sofort beendet.
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 Service in
den multi-User Runleveln abschalten:
update-rc.d stop XX 2 3 4 5 .
Bitte beachten Sie, dass wenn Sie nicht file-rc
benutzen,
update-rc.d -f _service_ remove nicht korrekt arbeiten wird, da
alle Verknüpfungen entfernt werden, nach einer re-installation
oder einem Upgrade dieses Paketes werden diese Verknüpfungen neu angelegt
(was Sie vermutlich nicht wollen). Wenn Sie denken, dass dies wenig intuitiv
ist, liegen Sie wohl richtig (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 Informatione über das
Starten von Services durch eine gemeinsame Konfigurations-Datei verarbeitet und
werden sogar nach der Deinstallation eines Services von dem System beibehalten.
Sie können das TUI (Text User Interface, textuelle
Benutzeroberfläche) des Paketes rcconf
benutzen, um all diese
Änderungen einfach zu erledigen (rcconf
arbeitet sohwohl mit
file-rc als auch mit normallen System V Runleveln).
Andere (nicht empfohlene) Methoden zum abschalten eines Services 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 Konfigurations-Dateien handel, werden Sie bei einem
Upgrade nicht überschrieben.
Leider können Sie, im Gegensatz zu anderen (UNIX) Betriebssystemen,
Services unter Debian nicht abschalten, indem Sie die Dateien unter
/etc/default/_servicename_
modifizieren.
FIXME: Add more information on handling daemons using file-rc
Abschalten sollten Sie alle nicht benötigten Services, wie zum Beispiel echo, chargen, discard, daytime, time, talk, ntalk und die r-Services (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 Service über inetd aufzurufen. Wenn Sie dann immernoch einen inetd-Service laufen lassen wollen, wechseln Sie zu einem konfigurierbarerem inet-Daemon, wie xinietd oder lrinetd.
Sie können Services abschalten, indem Sie direkt
/etc/inetd.conf
editieren, aber Debian stellt Ihnen eine besseren
Weg zur Verfügung das zu tun: update-inetd (was die Services
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 Konfigurations-Dateien angepasst und der
Daemon neu gestartet wird:
/usr/sbin/update-inetd --disable telnet
Wenn Sie Services lauschen lassen wollen, aber Sie nicht auf alle IP-Adressen
Ihres Hosts hören sollen, möchten Sie vielleicht eine undokumentierte
Fähigkeit von inetd benutzen. Oder Sie benutzen einen anderen
inetd-Daemon wie xinetd
.
Debian kommt mit sehr viel Software, zum Beispiel kommt die Release Debian 3.0 woody auf 7 CD-ROMs, mit tausenden von Software Paketen. Bei so viel Software, und sogar wenn Sie die Installation auf das Basis-System reduzieren [1] könnten Sie auf Abwege geraten und mehr installieren als Sie wirklich benötigen. [2]
Da Sie you bereits wissen, was Sie mit Ihrem System machen wollen (oder etwa nicht?) sollten Sie nur Software installieren, die Sie wirklich zum arbeiten benötigen. Jedes unnötige Tool, dass Sie installieren könnte von einem Nutzer, der Ihr System kompromitieren will genutzt werden, oder von einem externen Eindringling, der Shell-Zugriff bekommen hat (oder der Code von ausserhalb durch einen ausnutzbaren Service ausführen kann).
Zum Beispiel kann das Vorhandensein von Entwickler-Tolls (einem C-Compiler) oder Interpretern (wie Perl - sehen Sie weter unten -, python, tcl..) einem Angreifer helfen, dass System weiter zu kompromitieren:
Natürlich kann ein Eindringling mit lokalem Shell-Zugriff seine eigenen Tolls herunterladen und ausfphren, 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, aber das Problem wird dadurch ein wenig schwerer für den Angreifer (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.
Sie müssen Berücksichtigen, dass sich das Entfernen von
perl
von einem Debian-System als nicht so einfach erweisen
könnte (in der Tat kann es ziemlich schwer sein), da es von vielen
Dienstprogeammen des Systems benutzt wird. perl-base
hat
ausserdem Priority: required (und dass 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-Managment-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 schliesst die Folgenden Dienstprogramme mit der Priorität required oder important mit 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
.
Also, ohne Perl udn solange Sie diese Dienstprogramme nicht in einem Shell-Skript neuschreiben, werden Sie wahrscheinlich keine Pakete mehr verwalten klnnen (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.
Es ist niemals falsch einen Blick entweder in die debian-security-announce Mailing-Liste, wo Sicherheitsgutachten und Problemlösungen durch das Debian-Team für Sicherheit bekannt gemacht werden, oder auf die debian-security@lists.debian.org Liste, wo Sie an den Diskussionen zu allen Sicherheits relevanten Dinge teilnehmen könen, zu werfen.
Um wichtige Warnungen zu Sicherheits-Update zu erhalten, senden Sie eine Email
an debian-security-announce-request@lists.debian.org
mit dem Wort "subscribe" in der Betreff-Zeile. Sie können diese
moderierte Email-Liste unter http://www.debian.org/MailingLists/subscribe
ü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-Fixes 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)
Anleitung zum Absichern von Debian
2.5 (beta) 14 febrero 2004Sat, 17 Aug 2002 12:23:36 +0200jfs@computer.org