Sie sind auf Seite 1von 22

Linux-System härten – sichere Netzwerkdienste Teil 7/3.

1 Seite 1

Netzwerk-Check mit Nmap

7/3 Linux-System
härten – sichere
Netzwerkdienste

Autor: Dirk Reichelt

Bereits nach einer Linux-Standardinstallation startet jeder Li-


nux-Rechner automatisch eine Reihe von Netzwerk-Diens-
ten. Diese Dienste, oft auch als Dämon bezeichnet, arbeiten
im Hintergrund und nehmen Anfragen aus dem Netzwerk
entgegen. Nur wer die Übersicht hat, welche Dienste der Li-
nux-Rechner im Netzwerk anbietet und welche entfernten
Rechner diese Dienste nutzen dürfen, kann sein Linux-Sys-
tem wirklich absichern.

7/3.1 Netzwerk-Check mit Nmap

Zunächst gilt es, sich einen Überblick über die aktuell verfüg- Portscanner Nmap
baren Dienste zu verschaffen. In vielen Linux-Distributionen
wird automatisch ein Web-Server gestartet, oder ein FTP-
Dämon läuft, ohne dass er vom Administrator eingerichtet
wurde. Diese nicht konfigurierten Dienste sind potenzielle
Angriffspunkte für einen Hacker. Der Portscanner Nmap
zeigt alle Netzwerkdienste an.

Nmap kann bei www.insecure.org kostenlos heruntergeladen Hinweis


werden. Wählen Sie die Linux-RPM-Pakete aus. Nach dem
Download lassen sich diese einfach über einen beliebigen
RPM-Paketmanager installieren.

Rufen Sie das grafische Nmap-Frontend nmapfe auf. Tragen


Sie die IP-Adresse 127.0.0.1 ein, wählen Sie den SYN-
Stealth-Scan und starten Sie den Scan. Als Ergebnis werden
alle offenen TCP-Ports angezeigt. Bei der Scan-Option UDP
Port Scan erhält man zusätzlich alle offenen UDP-Ports.

5
Teil 7/3.1 Seite 2 Linux-System härten – sichere Netzwerkdienste

Netzwerk-Check mit Nmap

Nmap zeigt die jeweilige Portnummer und den dazu in der


Datei /etc/services eingetragenen Servicenamen an. Sollte zu
einem Port einmal kein Serviceeintrag vorhanden sein, findet
sich unter www.iana.org eine Liste aller registrierten Ports
mit der zugehörigen Anwendung.

Abbildung 7/3.1-1: Nmap listet alle Verbindungsmög-


lichkeiten und somit mögliche Schwachstellen auf
Linux-System härten – sichere Netzwerkdienste Teil 7/3.2 Seite 1

Internet-Dämon inetd

7/3.2 Internet-Dämon inetd

Eine zentrale Rolle beim Start von Netzwerkdiensten fällt Internet-Dämon


dem Dienst inetd zu. Ist er gestartet, lauscht der Dämon nach inetd
Verbindungsversuchen zu bestimmten Ports und startet bei
Client-Anfragen den in der Konfiguration festgelegten Netz-
werkdienst.

Nicht jeder Netzwerkdienst wird über den inetd-Dämon ge- Hinweis


steuert. Wird ein Dienst sehr häufig genutzt, wie es z. B. bei
einem Web-Server der Fall ist, so wird er aus Performance-
gründen meist als Standalone-Dienst installiert und muss ge-
trennt administriert werden.

Die Konfiguration von Inetd wird standardmäßig über die Konfiguration


Datei /etc/inetd.conf vorgenommen. von inetd

Abbildung 7/3.2-1: Die Inetd-Konfigurationsdatei


/etc/inetd.conf

5
Teil 7/3.2 Seite 2 Linux-System härten – sichere Netzwerkdienste

Internet-Dämon inetd

Für jeden von inetd angebotenen Netzwerkdienst muss eine


Zeile in der Konfigurationsdatei eintragen werden. Als Ad-
ministrator besteht Ihre Aufgabe dabei eher selten darin, neue
Zeilen hinzuzufügen, sondern eher darin, bisherige Zeilen
auszukommentieren und damit den entsprechenden Dienst zu
deaktivieren.

Prüfen Sie den durch Nmap erstellten Report genau und ent-
scheiden Sie, welche Netzwerkdienste Sie wirklich benöti-
gen. So kann z. B. der unsichere Telnet-Zugang deaktiviert
werden, wenn der Zugriff über sichere SSH-Verbindungen
möglich ist. Die Konfiguration der angebotenen Dienste
sollte nach dem Grundsatz erfolgen: Ein Linux-Rechner stellt
im Netzwerk nur die Dienste zur Verfügung, die für den Be-
trieb notwendig sind und durch andere Server oder die An-
wender genutzt werden.

Dienste Um einen durch inetd verwalteten Netzwerkdienst zu deakti-


deaktivieren vieren, gehen Sie wie folgt vor:

• Öffnen der Datei /etc/inetd.conf


• Suche nach dem Servicenamen (z. B. telnet)
• Einfügen des Kommentarzeichens # am Zeilenanfang
• Einlesen der neuen inetd-Konfiguration über kill –HUP
<inetd-pid>

Inetd hat sich als Standarddienst für die Verwaltung unter-


schiedlichster Netzwerkdienste wie z. B. Telnet, rlogin, FTP
und Pop3 etabliert und wird mit jeder Linux-Distribution
ausgeliefert. Leider bietet der Dämon neben der Möglichkeit,
Dienste komplett zu sperren, keine zusätzlichen Sicherheits-
mechanismen.
Linux-System härten – sichere Netzwerkdienste Teil 7/3.3 Seite 1

Zugangskontrolle mittels TCP-Wrapper

7/3.3 Zugangskontrolle mittels


TCP-Wrapper

Eine nützliche Zusatzanwendung für den inetd-Dämon stellt Zugangskontrolle


der TCP-Wrapper dar. Verfügt der Rechner über keine Fire- für inetd
wall, die mit Hilfe eines Paketfilters bereits entscheidet, wel-
che Datenpakete und damit welche Verbindungen zulässig
sind, erlaubt der TCP-Wrapper die Verwaltung für jeden mit
inetd gesteuerten Dienst eine Liste aller berechtigten Rechner
und kann sogar benutzerbezogene Zugriffsrechte einräumen.

Das Prinzip des TCP-Wrappers ist dabei ebenso einfach wie


genial. Erkennt der inetd einen Zugriff auf einen von ihm
überwachten Port, startet er an Stelle des gewünschten Diens-
tes zunächst den TCP-Wrapper. Dieser kann anhand der Ver-
bindungsinformationen entscheiden, ob der gewünschte Zu-
griff den Regeln der hinterlegten Berechtigungen genügt, und
startet bei einem positiven Ergebnis den entsprechenden An-
wendungsdienst. Ist der Zugriff nicht autorisiert, wird er blo-
ckiert und ein Log-Eintrag vorgenommen.

Aktuelle Linux-Distributionen enthalten bereits das TCP- Hinweis


Wrapper-Paket. Es muss nur noch konfiguriert werden. Wer
das Programm selbst installieren möchte, findet unter
ftp://ftp.cert.dfn.de/pub/pub/tools/net/TCP-Wrapper das Pro-
grammpaket und eine Installationsanleitung.

Für die Einrichtung des TCP-Wrapper sind folgende Schritte TCP-Wrapper


notwendig: einrichten

• inetd-Konfiguration anpassen
• Berechtigungsdateien erstellen
• Protokollierung festlegen
• Inetd neu starten

Im ersten Konfigurationsschritt für den TCP-Wrapper muss


dieser bei den zu überwachenden Diensten in der inetd-Kon-
figuration eingetragen werden.

5
Teil 7/3.3 Seite 2 Linux-System härten – sichere Netzwerkdienste

Zugangskontrolle mittels TCP-Wrapper

Editieren Sie hierfür die Datei /etc/inetd.conf. An Stelle des


Aufrufs für den Netzwerkdienst, muss nun zunächst der TCP-
Wrapper-Dämon stehen. So wird z. B. aus der Zeile

telnet stream tcp nowait root /usr/sbin/in.telnetd in.telnetd

die Zeile

telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd

Ersetzen Sie gegebenenfalls den Pfad für den TCP-Wrapper


(tcpd) durch den für die jeweilige Installation zutreffenden
Pfad. Tragen Sie den TCP-Wrapper für alle inetd-Netzwerk-
dienste ein.

Hinweis Laden Sie die neue inetd-Konfiguration erst, wenn Sie sämt-
liche Konfigurationsschritte des TCP-Wrappers abgeschlos-
sen haben, da Sie sich sonst unter Umständen selbst von Ih-
rem System aussperren!

Zugriffsrechte Nachdem die inetd-Konfiguration angepasst ist, sind die Be-


bestimmen rechtigungen für die einzelnen Dienste festzulegen. Diese er-
mittelt der TCP-Wrapper mit Hilfe der Dateien /etc/hosts.
allow und /etc/hosts.deny. Bei einem Client-Zugriff durch-
läuft der TCP-Wrapper zuerst die Datei hosts.allow und an-
schließend die Datei hosts.deny. Wird eine passende Regel
gefunden, wird diese angewandt und die Suche beendet.
Trifft keine Regel zu, ist der Zugriff gestattet.

Eine Regel in den hosts-Dateien sieht wie folgt aus:

Dienst-Liste: Client-Liste

Der Dienstname entspricht dem durch tcpd aufgerufenen


Netzwerkdienst. In der Client-Liste können durch Komma
getrennt Rechner, Netzwerke, Domains oder spezielle Benut-
zer angegeben werden.
Linux-System härten – sichere Netzwerkdienste Teil 7/3.3 Seite 3

Zugangskontrolle mittels TCP-Wrapper

Zusätzlich sind folgenden Wildcards erlaubt:

Wildcard Bedeutung
ALL Trifft auf alles zu und ist universell ein-
setzbar.
LOCAL Entspricht allen Hostnamen, die keinen
Punkt enthalten.
KNOWN Entspricht allen Benutzern und Hosts,
deren Name identifiziert werden kann.
UNKNOWN Entspricht allen Benutzern und Hosts, de-
ren Name nicht identifiziert werden kann.

Soll der TCP-Wrapper nach der häufig verwendeten Firewall- Standardregel


Stategie „ Alles, was nicht explizit erlaubt ist, ist verboten“ festlegen
agieren, ist ALL: ALL in der Datei hosts.deny als erster Ein-
trag vorzunehmen. So wird jeder nicht freigegebene Zugriff
auf jeden Dienst automatisch verwehrt. Möchten Sie Dienste
explizit sperren und für alle nicht konfigurierten Dienste den
Zugriff zulassen, darf dieser Eintrag nicht existieren.

Exemplarisch wollen wir die Konfiguration für den Telnet-


Dienst zeigen. Alle Rechner aus der Domain trusted.net, die
Rechner aus dem Subnetz 192.168.67.0/255.255.252.0 und
der Benutzer root vom server linux.untrusted.net sollen den
Telnet-Service nutzen können. Der Eintrag in hosts.allow
hierfür lautet:

in.telnetd: .trusted.net,, 192.168.67.0/255.255.252.0,


root@linux.untrusted.net

Beachten Sie, dass bei der Angabe einer Domain-Adresse der Hinweis
Punkt vor dem Namen mit anzugeben ist.

Das Schlüsselwort EXCEPT hilft dabei, Ausnahmen zu einer


Regel festzulegen.

5
Teil 7/3.3 Seite 4 Linux-System härten – sichere Netzwerkdienste

Zugangskontrolle mittels TCP-Wrapper

So schließt die Regel

in.telnetd: .trusted.net EXCEPT logi.trusted.net

den Server logi.trusted.net als einzigen Rechner der Domain


trusted.net von der Regel aus.

Tipp Gehen Sie bei der Regeldefinition sorgfältig vor. Testen Sie
ihre selbst erstellte Konfiguration vor der Aktivierung mit den
TCP-Wrapper-Dienstprogrammen tcpdchk und tcpdmatch.

TCP-Wrapper Der TCP-Wrapper schreibt seine Log-Informationen mit Hilfe


protokollieren des Syslogs-Dämons. Damit werden sämtliche Meldungen
entsprechend ihrer Priorität ausgegeben und im Log-File ge-
sichert. Mehr Informationen zur Protokollierung mittels Sys-
logd findet man durch den Aufruf von man syslog.conf.

TCP-Wrapper Sind die TCP-Wrapper-Regeln getestet und entsprechen sie


aktivieren Ihren Vorstellungen, muss zum Abschluss die neue Konfigu-
ration mittels

kill -HUP <inetd-PID>

eingelesen werden. Bei allen künftigen Neustarts von inetd


wird die Konfiguration automatisch geladen.
Linux-System härten – sichere Netzwerkdienste Teil 7/3.4 Seite 1

xinetd – die sichere Alternative zu inetd

7/3.4 xinetd – die sichere


Alternative zu inetd

Der xinet-Dämon übernimmt prinzipiell keine anderen Auf-


gaben als der inet-Dämon. Ein entscheidender Vorteil ist je-
doch, dass sich bei xinetd eine Reihe zusätzlicher Optionen
für jeden Netzwerkdienst pflegen lässt, die eine detaillierte
Kontrolle erlauben und damit den Linux-Rechner sicherer
machen.

Jede der aktuell auf dem Markt erhältlichen Linux-Distribu- Hinweis


tionen enthält das xinetd-Paket. Die neueste Version findet
man zum Download im Internet unter www.xinetd.org.

Die Kontrolle über den xinet-Dämon obliegt der Konfigura-


tionsdatei /etc/xinetd.conf. Der Dämon selbst muss beim
Systemstart geladen werden.

Das Konfigurationsfile /etc/xinetd.conf enthält eine Sektion


für zentrale Einstellungen und beschreibt anschließend in
einzelne Abschnitte unterteilt für jeden Netzwerkdienst des-
sen Einstellungen und Eigenschaften. Jeder einzelne Konfi-
gurationsabschnitt trägt einen Namen, gefolgt von den in ge-
schweiften Klammern eingeschlossenen Parametern.

Am Anfang der Datei /etc/xinetd.conf steht der Abschnitt Zentrale


defaults. Hier werden die Einstellungen für die Protokollie- Einstellungen
rung erfolgreicher Verbindungen, blockierter Verbindungs-
versuche und der unterstützten Dienste vorgenommen. Jeder
einzelne Abschnitt, in dem der jeweilige Dienst konfiguriert
wird, kann mit Hilfe der Anweisungen enabled bzw. disabled
aktiviert werden. Über die Einstellungen im Abschnitt de-
faults lassen sich Vorgaben für alle anderen Dienste machen,
die bei Bedarf durch spezielle Einstellungen im jeweiligen
Abschnitt zu überschreiben sind.

5
Teil 7/3.4 Seite 2 Linux-System härten – sichere Netzwerkdienste

xinetd – die sichere Alternative zu inetd

Abbildung 7/3.4-1: Ausschnitt der xinetd-Konfigurations-


datei

Eine typische Konfiguration für den default-Abschnitt könnte


wie folgt aussehen:

defaults
{ log_type = FILE /var/log/xinetd.log
log_on_success = HOST EXIT DURATION
log_on_failure = HOST ATTEMPT RECORD
only_from = localhost 192.168.1.0
instances = 2
enabled = ftp
disabled = rstatd
}

Mit diesen Einträgen erfolgt die Protokollierung in die Datei


/var/log/xinetd.log. Für jede erfolgreiche Verbindung werden
Remote-IP, der Exit-Status und die Session-Dauer protokol-
liert. Bei einem abgelehnten Verbindungswunsch werden Re-
mote-IP, Ablehnungsgrund und Informationen über die Ver-
bindung wie z. B. Remote User protokolliert. Der FTP-Ser-
vice wird aktiviert und der rstatd-Service blockiert.
Linux-System härten – sichere Netzwerkdienste Teil 7/3.4 Seite 3

xinetd – die sichere Alternative zu inetd

Für jeden Service sind maximal zwei simultane Verbindungen


gestattet. Nur Verbindungen vom eigenen Rechner (localhost)
und aus dem angegebenen Netzwerk sind zulässig, sofern kei-
ne anderen Angaben im jeweiligen Dienstabschnitt erfolgen.

Zur Kontrolle über die Verbindungen zu den einzelnen Die wichtigsten


Diensten kennt xinetd folgende Konfigurationsanweisungen: Kontroll-
anweisungen

Anweisung Bedeutung Default


möglich
instances Bestimmt die maximale Anzahl der parallel möglichen ja
Aufrufe für einen Dienst. Wird kein Wert angegeben, ist
die Anzahl unlimitiert.
only_from Bestimmt eine Liste von Rechnern, für die der Zugriff ja
gestattet ist. Es können IP-Netzwerkadressen, Host-
Adressen, Hostnamen und IP-Netze mit der zugehöri-
gen Netzmaske angegeben werden.
Beispiele:
only_from = 192.168.1.0
only_from = 192.168.67.0/24
only_from = login.net.de
no_access Gibt die Liste von Rechnern an, von denen aus der ja
Zugriff untersagt ist. Der Aufruf entspricht der Syntax
von only_from.
access_time Gibt Zeitintervalle an, in denen der Dienst zur Verfü- nein
gung steht. Die Angabe erfolgt in der Form hh:ss-hh:ss
per_source Bestimmt die maximale Anzahl der Verbindungen pro nein
Quell-IP-Adresse.
cps x y Der erste Parameter x limitiert die Anzahl der Verbin- nein
dungen pro Minute. Ist der angegebene Wert über-
schritten, wird der Dienst gemäß dem zweiten Para-
meter für y Sekunden deaktiviert.

5
Teil 7/3.4 Seite 4 Linux-System härten – sichere Netzwerkdienste

xinetd – die sichere Alternative zu inetd

Das Konfigurationsfile kennt noch eine Reihe weiterer Optio-


nen, die speziell für die Einrichtung des jeweiligen Dienstes
erforderlich sind. Eine komplette Übersicht erhält man durch
den Aufruf von xinetd.conf. Wird keine Vorgabe für die Wer-
te no_access und only_from vorgenommen, werden standard-
mäßig alle Verbindungen akzeptiert.

xinetd-Konfigura- Damit der xinetd nach Abschluss der Konfigurationsarbeiten


tion laden seine neue Konfiguration lädt, muss das Signal USR1 bzw.
USR2 an den Prozess gesendet werden. Verwenden Sie hier-
für den Befehl

kill -s 12 <xinetd-PID>
Linux-System härten – sichere Netzwerkdienste Teil 7/3.5.1 Seite 1

Gefahrenquelle .rhosts und hosts.equiv

7/3.5 Kontrolle über r-commands

Anwendungen wie rsh und rlogin erlauben den Zugriff auf Rsh & Co.
einen entfernten Linux-Recher, um dort eine Shell zu starten
oder direkt Befehle auszuführen. Erlangt ein Unbefugter auf
diese Weise Zugriff auf das Linux-System, kann großer
Schaden entstehen. Ein einfacher Weg, diesen Angriffspunkt
zu schützen, ist das Abschalten der Dienste login und shell in
der inetd- bzw. xinetd-Konfiguration. Kann man auf diese
Dienste nicht verzichten, sollten die folgenden Sicherheits-
maßnahmen beachtet werden.

7/3.5.1 Gefahrenquelle .rhosts und


hosts.equiv

Die Dateien .rhosts und /etc/hosts.equiv erlauben das Hinter- Schwachstelle


legen von Kombinationen aus Hostnamen und Benutzerken- .rhosts und
nungen, denen der R-Loginprozess vertrauen soll und dabei hosts.equiv
auf die Abfrage des Passworts verzichtet. Jeder Benutzer
kann die Datei .rhosts in seinem Home-Verzeichnis hinterle-
gen. Die Kontrolle über das File hosts.equiv obliegt dem Su-
peruser. Der Einsatz beider Dateien stellt in verteilten Linux-
Umgebungen eine erhebliche Erleichterung für Benutzer dar,
da die ständige Eingabe von Login und Passwort bei einem
Remote-Zugriff unterdrückt wird. Gleichzeitig eröffnen sich
für einen Angreifer sehr viele Möglichkeiten, da mit einem
erfolgreichen Angriff auf einem Rechner in der Vertrauens-
hierarchie alle anderen Systeme ebenfalls offen stehen. Damit
beim Login bestehende .rhosts ignoriert werden, muss der
rlogin-Dämon mit der Option -l aufgerufen werden. Noch
mehr Sicherheit erlangt man mit der Option -L, bei der zu-
sätzlich das hosts.equiv-File übergangen wird. Ein Eintrag in
der inetd-Konfiguration könnte dann wie folgt aussehen:

login stream tcp nowait root /usr/sbin/tcpd in.rlogind -L

5
Teil 7/3.5.1 Seite 2 Linux-System härten – sichere Netzwerkdienste

Gefahrenquelle .rhosts und hosts.equiv

Der rlogin-Dämon ist lediglich für rlogin-Zugriffe verant-


wortlich. Sämtliche rsh-Zugriffe verarbeitet der rsh-Dämon
rshd. Dieser muss mit der Option -l aufgerufen werden, damit
die Einträge in .rhosts-Dateien nicht genutzt werden. Die
Auswertung der Datei hosts.equiv kann nicht unterbunden
werden.
Linux-System härten – sichere Netzwerkdienste Teil 7/3.6 Seite 1

Schutz für Login und Passwort

7/3.6 Schutz für Login und


Passwort

Als Mehrbenutzer-Betriebssystem muss Linux Angaben über


Benutzer und Benutzergruppen führen. Die zentralen Dateien
hierfür sind /etc/passwd und /etc/group. Ohne weitere Maß-
nahmen speichert Linux standardmäßig alle Informationen zu
einem Benutzer in der Datei /etc/passwd. Diese Datei kann
von jedem anderen Benutzer gelesen werden!

Neben den sicherheitsunkritischen Informationen wie Login-


name, Name, UID und Homeverzeichnis ist dort auch das
verschlüsselte Passwort abgelegt. Eigentlich ist das Passwort
dort sicher aufgehoben, da Linux eine Einweg-Funktion ver-
wendet, um das Passwort zu verschlüsseln. Damit ist eine
Entschlüsselung nahezu unmöglich. Fällt das Passwortfile
jedoch einem Hacker in die Hände, kann dieser mit Hilfe ei-
ner Brute-Force-Attacke verschiedene Passwörter testen und
mit dem gespeicherten Wert vergleichen. Auf diese Weise las-
sen sich Passwortdateien auf entfernten Rechnern knacken.
Im Internet existiert eine Reihe von Programmen, die ganze
Rechnernetze mit der Entschlüsselung solcher Passwortdatei-
en beschäftigen.

Versteckte Passwörter

Mehr Sicherheit bei der Passwortspeicherung garantiert die


Shadow-Passwort-Bibliothek. Sollte Ihre Installation noch
nicht über ein Shadow-Passwortsystem verfügen, finden Sie
die notwendigen Quellpakete unter ftp://ftp.icm.edu.pl/pub/
Linux/shadow-pwr/shadow-current.tar.gz.

Mit der Installation der Shadow-Bibliothek wird eine Reihe /etc/shadow


von Programmen, die für den Login-Prozess benötigt werden,
angepasst und einige neue Kommandos für die Benutzerver-
waltung eingerichtet. Die Verwendung von Shadow-Passwör-
tern hat sich in den letzten Jahren unter Linux fast vollständig
durchgesetzt.

5
Teil 7/3.6 Seite 2 Linux-System härten – sichere Netzwerkdienste

Schutz für Login und Passwort

Grundlegender Unterschied zur bisherigen Passwortspeiche-


rung ist, dass in der Datei /etc/passwd an Stelle des Passworts
ein x steht. Das verschlüsselte Passwort wird separat in der
Datei /etc/shadow gesichert. Während jeder User weiterhin
das passwd-File lesen darf, besitzt nur der Superuser die
notwendigen Berechtigungen für die shadow-Datei.

/etc/gshadow In der Datei /etc/group speichert Linux die Benutzergruppen


mit den jeweiligen Gruppenmitgliedern. Dabei kann auch eine
Gruppe durch ein Passwort geschützt sein. Mit dem Einsatz
der Shadow-Bibliothek wird parallel zur group-Datei die Da-
tei /etc/gshadow mit den verschlüsselten Passwörtern geführt.

Passwort-Konventionen

Als Administrator sollten Sie dafür sorgen, dass alle Pass-


wörter auf dem Linux-System sicher sind. Einfache Kombi-
nationen von Namen und Zahlen widerstehen Brute-Force-
Angriffen oft nur wenige Sekunden. Deshalb sollte man sich
auch bei der Verwendung von Shadow-Passwörtern nicht in
Sicherheit wiegen. Damit ein Passwort als sicher gilt, sollte
es 6– 8 Zeichen lang sein sowie 2 Zahlen und 2 Sonderzei-
chen enthalten. Mit Hilfe der Datei /etc/login.defs lassen sich
zentrale Vorgaben für Passwörter und den Login-Vorgang
stellen. Zunächst wollen wir die Möglichkeiten für die Pass-
wortanforderungen näher betrachten.

Die Sicherheitsüberprüfung eines Passworts erfolgt beim


Einsatz von Shadow-Passwörtern über eine Cracklib. Diese
überprüft das Passwort mit Hilfe eines Wörterbuchs und an-
hand vordefinierter Kriterien zur Zeichenabfolge auf dessen
Sicherheit. Eine Cracklib mit einem Wörterbuch zur Über-
prüfung neuer Passwörter wird mit jedem Shadow-Installa-
tionspaket geliefert.

Passwort ändern Um sein Passwort zu ändern, ruft ein Benutzer das Komman-
do passwd auf.
Linux-System härten – sichere Netzwerkdienste Teil 7/3.6 Seite 3

Schutz für Login und Passwort

reichelt@panache:~ > passwd


Old Password:
New password:
Re-enter new password:
Password changed

Nach der Eingabe des aktuell gültigen Passworts muss das


neue Passwort gewählt und anschließend zur Kontrolle erneut
eingegeben werden.

Im Konfigurationsfile /etc/login.defs lassen sich folgende Passwort-


Einstellungen für Passwörter festlegen: Einstellungen

Konfigurationseintrag Bedeutung
PASS_MIN_DAYS Minimale Anzahl von Tagen, die bis zur Pass-
wortänderung vergehen müssen.
PASS_MAX_DAYS Maximale Anzahl von Tagen, die ein Passwort
gültig ist.
PASS_WARN_AGE Anzahl der Tage, die der Benutzer im Voraus
gewarnt wird, bevor sein Passwort ungültig wird.
PASS_CHANGE_TRIES Anzahl der maximal fehlgeschlagenen Versuche,
bis passwd automatisch abbricht.
PASS_MIN_LEN Minimale Passwortlänge
PASS_MAX_LEN Maximale Passwortlänge. Wird der herkömmliche
DES-Algorithmus verwendet, ist maximal eine
Länge von 8 Zeichen möglich. Erst mit dem Ein-
satz von MD5 werden bis zu 256 Zeichen lange
Passwörter unterstützt.
OBSCURE_CHECKS_ENAB Ist dieser Wert auf true gesetzt, wird das neue
Passwort erst akzeptiert, wenn die Passwortlän-
ge den Anforderungen genügt.
MD5_CRYPT_ENAB Mit dem Wert Yes belegt, wird an Stelle des
DES-Verfahrens der MD5-Algorithmus zur Pass-
wortverschlüsselung verwendet.

5
Teil 7/3.6 Seite 4 Linux-System härten – sichere Netzwerkdienste

Schutz für Login und Passwort

Login-Einstellungen

Steuerung des Neben den Optionen für die Passworterstellung erlaubt log-
Login-Prozesses in.defs eine Reihe von Einstellungen für den Login-Prozess.

Konfigurationseintrag Bedeutung
CONSOLE Zeigt auf eine Datei, in der die Konsolen angegeben
sind, auf denen sich der Benutzer Root anmelden darf.
FAILLOG_ENAB Ist diese Option aktiviert, werden fehlgeschlagene
Logins in der Datei /var/log/faillog protokolliert.
FAIL_DELAY Bestimmt die Zeit, die nach einem falschen Login-Ver-
such gewartet wird.
LASTLOG_ENAB Das Aktivieren dieser Option führt dazu, dass fehlge-
schlagene Login-Versuche bei der nächsten erfolgrei-
chen Anmeldung angezeigt werden.
LOGIN_RETRIES Bestimmt die Anzahl fehlgeschlagener Login-Versu-
che, bis der Login-Prozess sich automatisch beendet.
LOGIN_TIMEOUT Legt die Dauer fest, die zwischen Eingabe von Login
und Passwort vergehen darf.

Rootlogin kontrollieren

Netzwerkanmel- Der Linux-Superuser Root sollte sich möglichs nur direkt am


dung als Root Server anmelden. Dadurch lässt sich das Abhören des Root-
Passworts bei einer unsicheren Telnet-Verbindung ausschlie-
ßen. Mit der Option CONSOLE in login.defs kann eine Datei
bestimmt werden, in der alle zulässigen Root-Terminals auf-
geführt sind. Standardmäßig ist dies /etc/securetty. Enthält
die Datei nur Einträge der Form ttyX, ist lediglich ein Login
auf den virtuellen Konsolen des Linux-Rechners möglich.
Eine Anmeldung über das Netzwerk wird blockiert.

Tipp Aus Sicherheitsgründen sollten Sie auf die Ausführung von


Root-Kommandos über eine Telnet-Verbindung verzichten,
da sämtliche Daten im Klartext über das Netz übertragen
werden. Verwenden Sie für Administrationsarbeiten die ab-
hörsichere Kommunikation über eine Secure-Shell.
Linux-System härten – sichere Netzwerkdienste Teil 7/3.7 Seite 1

Sicherheit im Dateisystem

7/3.7 Sicherheit im Dateisystem

Mit Hilfe des Linux-Dateisystems lassen sich ausgeklügelte


Rechte für Dateien und Verzeichnisse vergeben. Jede Linux-
datei ist einem Benutzer und einer Gruppe zugeordnet. Hinzu
kommen Rechte für den Besitzer, die Gruppe und alle ande-
ren Systembenutzer. Ungewollt können dabei Benutzern
Rechte eingeräumt werden, die weit über deren Informations-
bedarf hinaus gehen und Angriffspunkte eröffnen.

Benutzerrechte über SUID/SGID

Mit Hilfe der SUID- und SGID-Flags können Anwendungen SUID und SGID
bei der Ausführung mit den Rechten des eingetragenen Datei- sinnvoll einsetzen
Besitzers oder der Datei-Benutzergruppe ausgeführt werden.
Auf diese Weise kann das Programm auf Dateien zugreifen,
auf die der ausführende Benutzer gemäß den Zugriffsrechten
eigentlich keine Berechtigungen besitzt. Das bekannteste
Beispiel dürfte das Kommando passwd sein. Mit dessen Hilfe
kann jeder Benutzer sein Passwort ändern, obwohl er eigent-
lich keine Schreibrechte für die Datei /etc/passwd besitzt. Bei
vielen Anwendungen ist das SUID/SGID-Flag gesetzt, ob-
wohl dies für die Ausführung der Anwendung überflüssig ist.
In diesen Fällen stellt das Flag eine Gefahr dar, da diese Da-
teien durch gezielte Manipulationen einem Benutzer zusätzli-
che Rechte im System verschaffen können.

Eine Liste aller Dateien mit gesetztem SUID/SGID-Flag lie- SUID/SGID-


fert uns: Dateien finden

find / -perm +6000

Sie sollten diesen Befehl als Root ausführen, um alle Dateien


im Filesystem zu finden. Leider lässt sich für die Trefferliste
keine eindeutige Aussage über die Notwendigkeit von SUID
und SGID treffen. Einige Anwendungen wie z. B. passwd
benötigen diese Rechte.

5
Teil 7/3.7 Seite 2 Linux-System härten – sichere Netzwerkdienste

Sicherheit im Dateisystem

Es bleibt Ihnen nicht erspart, jede einzelne Anwendung zu


prüfen und selbst zu entscheiden, ob Sie der Anwendung das
Recht entziehen können.

SGUID/SGID Wollen Sie einer Datei das SUID/SGID-Flag entziehen, füh-


Rechte entziehen ren Sie folgende Anweisung durch:

chmod ug-s <dateiname>

Schutz vor Modifikation mit MD5

Wann eine Datei zuletzt geändert wurde und wie groß diese
Datei ist, lässt sich schnell mit Hilfe des Kommandos ls -l
anzeigen. Wichtige Dateien wie etwa Installationspakete und
Konfigurationsdateien bedürfen jedoch erweiterter Sicherheits-
mechanismen, um ihre Unveränderlichkeit zu überprüfen.
Die Kryptografie kennt eine Reihe von Hash-Algorithmen,
die die Sicherheit von Nachrichten und Dateien erhöhen.
Hierzu bilden diese Verfahren mit Hilfe einer Einweg-Hash-
Funktion einen Message Digest, der einer Art Prüfsumme
entspricht. Mit dessen Hilfe kann die Unversehrtheit des Ori-
ginals zu einem späteren Zeitpunkt überprüft werden. Eines
der bekanntestes Verfahren ist der Message-Digest-Algorith-
mus MD5, der unter Linux zur Verfügung steht.

Mit Hilfe des Kommandos md5sum wird die Prüfsumme für


eine Datei erstellt oder Dateien mit Hilfe von zuvor gespei-
cherten Prüfsummen auf Veränderungen überprüft.

Mit md5sum Wollen Sie z.B. die Konfigurationsdateien im Verzeichnis


arbeiten /etc auf Änderungen überprüfen, gehen Sie wie folgt vor:

cd /etc
md5sum * > etcsignatures
chmod 600 etcsignatures
Linux-System härten – sichere Netzwerkdienste Teil 7/3.7 Seite 3

Sicherheit im Dateisystem

Nachdem die Datei mit den Signaturen für alle Dateien im


Verzeichnis angelegt ist, lassen sich Veränderungen an den
Dateien mit dem Programmaufruf

cd /etc
md5sum –c etcsignatures

erkennen. Beim Test wird für jede Datei erneut die Prüfsum-
me gebildet und mit dem gespeicherten Wert verglichen.
Stimmen beide Werte nicht überein, weist das Programm den
Anwender darauf hin.

Der sichere Bootprozess

Während des Bootvorgangs ist jeder Rechner einem Angriff


fast schutzlos ausgeliefert. Die bisher beschriebenen Sicher-
heitsmechanismen können ihre Schutzfunktionen erst nach
dem Linux-Start zum Einsatz bringen. Trotzdem sollten Sie
die folgenden Grundregeln beachten, um den Bootvorgang so
sicher wie möglich zu gestalten.

Shutdown kontrollieren

Nur der Superuser verfügt über die Rechte, ein Linuxsystem Reboot
ordnungsgemäß zu beenden oder neu zu starten. Nach einer verhindern
Standardinstallation erlauben viele Distributionen jedoch den
Reboot des Systems über die Tastenkombination <STRG>+
<ALT>+<ENTF>. Sitzt der Benutzer direkt am Linux-Rech-
ner, hat er die Möglichkeit, den Bootvorgang zu manipulie-
ren. Damit sich Linux nicht über die genannte Tastenkombi-
nation beenden lässt, muss folgender Eintrag in der Datei
/etc/inittab gelöscht werden:

ca::ctrlaltdel:/sbin/shutdown -r -t 4 now

5
Teil 7/3.7 Seite 4 Linux-System härten – sichere Netzwerkdienste

Sicherheit im Dateisystem

System Nachdem die Zeile entfernt wurde, kann nur noch der Super-
neu starten user den Rechner mit Hilfe der Kommandos halt oder shut-
down ordnungsgemäß beenden.

Absicherung von Hardware und BIOS

Neben der Software-seitigen Absicherung des Systems soll-


ten auch die Hardware- und BIOS-Funktionen genutzt wer-
den. Einige Server verfügen z. B. über Sperren für Power-
und Reset-Taste und schützen so vor ungewollten Neustarts.

Bootreihenfolge Im BIOS ist die Bootreihenfolge der einzelnen Geräte zu be-


beachten achten. Wird vor der Festplatte das Disketten- oder CD-ROM-
Laufwerk nach bootfähigen Datenträgern durchsucht, kann
darüber ungewollt ein anderes Betriebssystem gestartet wer-
den, vom dem aus eine Manipulation der Linux-Daten mög-
lich wird. Das BIOS selbst sollte durch ein BIOS-Passwort
geschützt sein.

Bootmanager Lilo

Der Start des Linux-Systems erfolgt in der Regel mit Hilfe es


Bootmanagers Lilo. Indem die Einträge

delay = 0
timeout = 0
# prompt

in der Datei /etc/lilo.conf gesetzt werden, startet Lilo ohne


Eingabemöglichkeit und Anzeige eines Prompts. Auf diese
Weise wird automatisch das festgelegte Standardimage ge-
startet. Damit die Einstellungen für Lilo aktiv werden, müs-
sen Sie diese als Root lilo aufrufen.

Das könnte Ihnen auch gefallen