Im allgemeinen Sprachgebrauch versteht man unter einem Server eine Maschine. Im IT-Sinn aber ist ein Server ein Dienst, der von einem Programm bereitgestellt wird. In einem Unternehmen müssen oft gleich mehrere dieser Dienste vorhanden sein, etwa ein Druckserver, ein Dateiserver, ein Mail- und ein Webserver, ein LDAP-Server, ein Samba-Server oder sogar ein Musikserver.
Die Dienste oder Daemons können auf mehrere Maschinen verteilt sein oder alle zentral von einem Computer vorgehalten werden. In größeren Netzwerken ist zumeist eine Firewall vorgeschaltet, bevor Daten ins Innere gelangen. Kleinere Netzwerke mit einem Server halten eine Firewall oftmals auf dem gleichen Rechner vor oder sogar nur auf dem Internet-Router wie etwa einer FritzBox.
Wichtig für einen sicheren Serverbetrieb ist der Grundsatz: "Nicht benötigte Dienste abschalten." Die in Linux genutzten Daemons sind generell sicher. Trotzdem gilt: Sie sollten keine Dienste installieren, die Sie nicht unbedingt in Ihrem System benötigen. Denn je weniger Dienste Sie einsetzen, desto geringer ist die Gefahr eines Angriffs. Warum das?
Server horchen an einem Port auf Anfragen - so etwa der SMTP-Dienst am Port 25, der Webserver am Port 80, IMAP am Port 143, der Druckdienst CUPS am Port 631 und der Samba-Share-Server am Port 901. Diese Ports sind die Angriffspunkte, wenn es darum geht, einen Rechner zu kompromittieren. Sie verringern das Risiko eines Eindringens, indem Sie auf nicht benötigte Dienste verzichten und den Port so quasi verschließen.
Netzwerkdienste überprüfen und gegebenenfalls abschalten
Wenn Sie zum Beispiel von außen per SSH (Port 22) auf Ihr Netzwerk zugreifen, benötigen Sie eventuell einen Dienst wie FTP (Ports 20 und 21) nicht. Dann schalten Sie diesen ab, falls er installiert ist. Das machen Sie am einfachsten, indem Sie das zugehörige Paket entfernen. In openSUSE benutzen Sie dazu das Administrations-Tool Yast, in Debian können Sie den FTP-Dienst als Root auf der Konsole löschen mit
apt-get remove --purge ftp
Der Parameter "--purge" sorgt dafür, dass auch sämtliche Konfigurationsdaten gelöscht werden. Für Angreifer ist es danach nicht mehr möglich, sich über den Port Zugang zu verschaffen. Wenn Sie beispielsweise IMAP anstelle von POP3 als Versandprotokoll einsetzen, benötigen Sie den POP3-Dienst (Port 110 und 995).
In Debian ist zudem der RPC-Portmapper (Port 111) standardmäßig installiert. Das Protokoll Remote Procedure Call (RPC) wird unter anderem von NFS und NIS verwendet. Er muss für manche lokale Dienste laufen, um RPC-Aufrufe ausführen zu können. Zwar gilt der Portmapper selbst als sicher, allerdings gibt es einige DDoS-Angriffe, die RPC-Löcher dazu benutzen, in das System einzudringen. In dem Fall hilft es, den Zugriff auf Portmapper und RPC-Dienste einzuschränken: Dazu blockieren Sie den Zugang zu den Ports entweder mit einer lokalen Firewall oder mittels eines TCP-Wrappers, indem Sie den externen Zugang über die Parameter hosts.allow und hosts.deny in der TCP-Wrapper-Konfiguration blockieren. Die einfachste Lösung dürfte aber sein, das Paket portmap so zu konfigurieren, dass es nur an der lokalen Schleifenschnittstelle lauscht. Das ist seit Version 5.5 möglich. Dazu müssen Sie lediglich die Zeile
#OPTIONS="-i 127.0.0.1"
in der Datei /etc/default/portmap auskommentieren und den Portmapper neu starten. Das reicht aus, um lokale RPC-Dienste laufen zu lassen und entfernte Systeme am Zugang zu hindern.
Mit Port-Scans Sicherheitslücken finden
Welche Ports auf Ihrem System geöffnet sind, erfahren Sie mithilfe des Kommandozeilen-Tools netstat. Netstat liefert Informationen aus dem Linux-Netzwerk-System. Ohne Optionen zeigt netstat den Zustand von offenen Sockets an. Der Befehl
netstat -lnp
ist dienlicher: Er gibt nur die Sockets aus, auf denen gehört wird (-l); zeigt die numerischen Adressen (-n), anstatt zu versuchen, den symbolischen Rechner, Port oder Benutzernamen auszugeben; und er gibt die Prozess-ID sowie den Programmnamen (-p) an, zu denen jeder Socket gehört. Was bei der Ausgabe als aktive Internetverbindung angezeigt wird, sollten Sie besonders beachten: Das sind die Server, die auf Anfragen von draußen lauschen.
Eine weitere Möglichkeit bietet nmap. Das Kommando
nmap -p1-65535 irgendeinServer.tld
zeigt nach einigen Sekunden alle offenen Ports im Bereich von 1 bis 65535 an, an denen Server lauschen. Diese können Sie einfach kontrollieren und bei Bedarf abschalten. Der Portscanner nmap bietet aber noch einige weitere Möglichkeiten.
Typisch ist zum Beispiel das Kommando:
nmap -A -T4 irgendServer.tlp
Hier wird ein Portscan durchgeführt. Dieser ermöglicht Betriebssystemerkennung, Skript-Scanning und Traceroute (-A); der Parameter -T4 sorgt zudem für eine schnellere Ausführung. Wenn Sie mit nmap arbeiten wollen, werfen Sie unbedingt einen Blick in die man-Page, die mit mehr als 2.000 Zeilen das Tool umfassend erklärt.
Mehr Schutz mit einer richtig konfigurierten Firewall
Eine Firewall dient dazu, den Zugriff auf das lokale System abzusichern oder sogar einzuschränken. Der aktuelle Linux-Kernel hat diese Fähigkeiten bereits eingebaut, als Firewall wird iptables beziehungsweise netfilter (http://www.netfilter.org) benutzt. Generell gilt: Man sollte sich nicht allein auf die Firewall-Regeln verlassen. Ebenso wichtig ist das korrekte Konfigurieren aller Dienste, die Verbindung zur Außenwelt haben. Denn ein System, das nur von einer Firewall geschützt wird, wäre nach Entfernen der Regeln geöffnet für Angriffe.
Am sinnvollsten ist eine Firewall, die standardmäßig zunächst alles ablehnt, was nicht erlaubt ist. Mit einer strengen Konfiguration kann man selbst Trojaner am Funktionieren hindern, die Meldungen aus dem System heraus verschicken wollen. Das ist insbesondere deshalb interessant, weil Eindringlinge keine Super-User-Rechte benötigen, um etwa ferngesteuerte Trojaner zu installieren. Im Idealfall sorgt eine Firewall dafür, dass eingehende Verbindungen zu lokalen Diensten nur den in der Konfiguration eingetragen erlaubten Maschinen gestattet ist. Verbindungen nach draußen werden von einer derartigen Firewall nur den Diensten gestattet, die auf dem eigenen System benutzt werden - egal, ob das der Webserver oder der Bittorrent-Client ist.
Wird der Zugang zum Netzwerk von einem gesonderten Firewall-Rechner abgeschirmt, wird anhand von Forward-Regeln alles weitere verboten, sei denn, andere Rechner sind entsprechend geschützt. Dazu kann man eine sogenannte Bridge-Firewall aufsetzen. Diese filternde Firewall hat keine IP-Adresse und kann nicht direkt attackiert werden. Je nach Linux-Kernel müssen Sie dazu eventuell den Bridge-Firewall-Patch installieren. Wie das zum Beispiel in Debian funktioniert, wird im Sicherheitshandbuch in Anhang D beschrieben.
Während unter Opensuse die Firewall einfach über Yast konfiguriert werden kann, hat der Debian-Administrator noch die Qual der Wahl zwischen verschiedenen Firewall-Konfigurationspaketen:
-
Die Gnome-Anwendung firestarter richtet sich an Endanwender, die mithilfe eines Assistenten schnell Firewall-Regeln aufstellen wollen.
-
Das KDE-Programm Knetfilter verwaltet Firewall- und NAT-Regeln für iptables und richtet sich an fortgeschrittenere Benutzer.
-
Das Paket bastille härtet Debian von der Kommandozeile aus. Hier kann der Administrator unter anderem den erlaubten und verbotenen Netzwerkverkehr definieren und Firewall-Regeln generieren, die das System am Start ausführt.
Ob nun mit Yast oder einem der Pakete für Debian: Mit allen ist es möglich, sich komplett vom System auszusperren - nicht nur auf dem Remote-System, sondern - so iptables-Debian-Maintainer Laurence J. Lane - sogar "von dem Computer, dessen Tastatur einem unter den Fingern liegt". Gehen Sie daher beim Konfigurieren der Firewall äußerst vorsichtig vor und machen Sie nur das, wovon Sie genau wissen, was Sie tun.
Innere Sicherheit überprüfen und erhöhen
Während einer Debian-Installation werden Sie gefragt, ob Sie Shadow-Passwörter nutzen wollen. Das ist eine sinnvolle Sache, denn die Passwörter werden in der Datei /etc/shadow gespeichert, auf die nur root und die Gruppe shadow Zugriff haben. Mit dem Befehl "shadowconfig on" kann root die Shadow-Passwörter auch nachträglich einschalten. Wichtig kann es zudem sein, dass Benutzer ihre Passwörter regelmäßig ändern sollten. Wann das ist, kann der Administrator in der Datei /etc/login.defs festlegen. Mit den Variablen PASS_MAX_DAYS, PASS_MIN_DAYS und PASS_WARN_AGE legt root fest, wie lange ein Passwort maximal gültig ist, wie kurz die Zeit zwischen Passwortänderungen sein soll und wie viele Tage vor Ablauf des Passworts eine Warnung ausgegeben wird. Auf einem Ubuntu-System ist eine Passwort 99.999 Tage gültig, also fast 274 Jahre. Wer hier beispielsweise spätestens alle drei Monate seine Benutzer auffordern will, ein neues Passwort zu verwenden, trägt bei PASS_MAX_DAYS den Wert 90 ein.
Standardmäßig werden Passwörter mit einem SHA512-basierten Verfahren verschlüsselt. Das gilt als relativ sicher gegen Brute-Force-Angriffe. Zum Erzeugen eines SHA-Passworts kann root vorgeben, wie viele Durchläufe der Algorithmus passieren soll. Standardmäßig sind das 5000 Schleifen. Über die Parameter SHA_CRYPT_MIN_ROUNDS und SHA_CRYPT_MAX_ROUNDS in der /etc/login.defs kann root diesen Wert anpassen. Wird nur ein Wert gesetzt, übernimmt das System diesen als Vorgabewert. Hier gilt: Je mehr Runden, desto komplexer wird das Passwort - allerdings sind auch mehr CPU-Reserven zum Authentifizieren erforderlich.
Wer seinen Benutzern das Finden neuer Passwörter erleichtern will, sollte ein Tool wie APG einsetzen. Je nach den Parametern erzeugt dieses Tool zufällig Passwörter, die in keinem Lexikon oder Wörterbuch stehen. In der man-Page von apg steht außerdem der Text für ein Skript pwgen.sh, mit dem Sie sichere Passwörter erzeugen. Der Inhalt des Skripts besteht lediglich aus zwei Zeilen:
#!/bin/sh
/usr/local/bin/apg -m 8 -x 12 -s
Wichtig ist die zweite Zeile, sie ruft das apg-Programm auf. Die Parameter bedeuten: -m legt die Mindestlänge eines Passworts fest; -x definiert die maximale Länge des Passworts; der Parameter -s schließlich sorgt dafür, dass der Benutzer eine zufällige Tastenfolge eingeben muss, um so beim Generieren des neuen Passworts zu helfen.
Sicheres Linux - Weitere Informationsquellen
Sicherheit ist auf Linux-Systemen ein relevantes, allgegenwärtiges Thema und beschäftigt daher auch die IT-Administratoren in den Unternehmen. Entsprechend viele unstrukturierte Informationen gibt es daher im Internet. Diese sicherheitsrelevanten Daten sind aber oft ungeordnet und schwer im Netz zu finden. Wir haben hier eine konkrete Auswahl für Sie zusammengestellt, die als zusätzliche Lektüre rund um die Sicherheit von Linux-Systemen zu empfehlen ist:
-
Das Linux Security Howto ist eine umfangreiche Quelle über Sicherheit auf Linux-Systemen im Allgemeinen. Aktuell ist die Version 2.4 aus dem Jahr 2006. Das Howto gibt einen Überblick vom BIOS-Passwort über Benutzer-Accounts bis hin zu Kernel- und Netzwerk-Sicherheit.
-
Wer einen schnellen Einblick ins Thema sucht, wird im Security Quick-Start HOWTO for Linux fündig. Das Dokument in der Fassung 1.2 vom Juli 2002 befasst sich mit Firewall, notwendigen Services und Intrusion Detection.
-
Für Debian und Derivate hilft die "Anleitung zum Absichern von Debian" aus dem Jahr 2007. Sie erklärt, wie eine Debian-Standardinstallation abgesichert wird, beschäftigt sich mit der Frage einer sicheren Netzwerkumgebung und bietet weitere Informationen über die Sicherheitswerkzeuge in Debian.
-
Ein sehr aktuelles Dokument ist der Opensuse Security Guide Die Version vom 24. März ist auf die openSUSE-Version 11.4 zugeschnitten.
-
Ein umfassendes Dokument für Red Hat Linux Enterprise ist der sogenannte Konfigurations-Guide. Eine Version des Dokuments von 2007 ist von Hewlett-Packard für seine Server geschrieben, gilt aber ebenso für andere Hardware. (hal)