Sichere Linux-ServerServereinrichtung – Linux

BetriebssystemOpen SourceSicherheitSoftwareWorkspace

Hacker vs. Server

Sichere Linux-Server

Nicht nur bei den Serverbetriebssystemen liegt Linux ganz vorne. Auch bei den Angriffen ist Linux die Nummer eins. Nach einer Studie der britischen Sicherheitsexperten von mi2g (www.mi2g.com) werden Linux-Server am häufigsten von Hackern attackiert. Von 17 074 in einem Monat erfassten erfolgreichen Angriffen gegen Server richteten sich 13 654 gegen Linux und nur 2005 gegen Windows. Zwar gilt Linux in Fachkreisen sicherer als Windows. Doch dafür müssen Sie selbst etwas tun und Hand anlegen. Im Allgemeinen ist ein Standard-Linux-Server unsicherer als ein Standard-Windows- Server. Viele Distributionen statten eine Linux-Installation großzügig mit Programmen, Tools und Netzwerkdiensten aus. Das öffnet Eindringlingen Tür und Tor. Daemonen und Serverdienste bescheren Besuchern erweiterte Rechte, hinzu kommen eine schlampig oder fehlerhaft ausgeführte Konfiguration und Softwarefehler, die schnell zum Einfallstor für ungebetenen Besuch werden. Mit entsprechendem Wissen können Sie einen Linux-Server jedoch besser absichern als einen Microsoft-Server. Denken Sie dabei nicht gleich an Firewalls und Intrusion Detection. Das sind wichtige Elemente, jedoch nur die letzten Glieder einer professionellen Sicherheitsstrategie. Vorher sollten Sie die grundlegenden Basics für den sicheren Serverbetrieb legen: Eine geschickte Linux-Konfiguration, die das Risiko, zum Opfer zu werden, drastisch vermindert. Bewährte und wirksame Sicherheitsmaßnahmen können Sie mit wenig Aufwand durchführen, entfalten aber große Wirkung und härten den Linux-Server. Setzen Sie alle Maßnahmen konsequent um, erhalten Sie ein hartes Linux als sichere Basis für eine Firewall oder einen Internet-Server.

Minimalismus als Gebot

Sichere Linux-Server

Oberstes Gebot eines sicheren Linux- Betriebs ist ein radikaler Minimalismus. Installieren sollten Sie nur, was Sie unbedingt brauchen: 40 Prozent einer Standard-Linux-Installation sind für den Serverbetrieb überflüssig. Was nicht vorhanden ist, kann auch nicht zum Sicherheitsproblem werden ? und spart ganz nebenbei Administrationskosten. Wenn Sie den Server noch nicht installiert haben, können Sie schon im Vorfeld einige Fehler vermeiden. Der sicherste Weg ist, Linux in der Minimalkonfiguration zu installieren und zusätzlich benötigte Pakete einzeln hinzuzufügen: Bei Suse Linux wären das »compat« (Basis), »sudo« (Applikationen), »firewals«, »harden_suse«, »mod_ssl«, »scanlogd«, »seccheck«, »secumod» und »tripwire« (Security). Bei Netzwerk entfernen Sie »apache«, «bindutil«, »postfix« und »sendmail«. Anschließend installieren Sie das System fertig. Um jedes Risiko auszuschließen, sollten Sie den Rechner während der Installation nicht mit dem internen Netzwerk und schon gar nicht mit dem Internet verbinden. Wenn Sie hohe Sicherheitsansprüche stellen, installieren Sie die Source- statt der Binary-RPMs. Bei den Binary-RPMs werden beim Kompilieren alle möglichen Optionen mit übersetzt. Das meiste brauchen Sie nicht, stellt aber ein Sicherheitsrisiko dar. Deshalb gilt auch hier der minimalistische Grundsatz. So bleiben das System und seine Funktionen übersichtlich, die Zahl der möglichen Angriffspunkte verringert sich ebenso wie die Anzahl der Logbucheinträge. Unregelmäßigkeiten, die auf einen Eindringling hinweisen können, fallen schneller auf.

Updates und Patches

Sichere Linux-Server

Ein Server, der nicht auf dem neuesten Stand gehalten wird, ist schnell Ziel von Angreifern. Noch vor jeder Konfiguration sollten Sie im ersten Schritt deshalb prüfen, ob es Sicherheitsupdates zu den eingespielten Paketen gibt. Die nötigen Dateien und Informationen laden Sie sich von den FTP-Servern der Distribution oder deren offiziellen Mirrors. Für Suse sind die Update-Informationen unter www.suse. de/de/private/download/updates erhältlich. Sicherheitsdienste wie Aerasec (www.aerasec.de/ security.html) halten Sie im Übrigen mit tagesaktuellen Meldungen zu Linux-Sicherheitslücken auf dem Laufenden. Wenn Sie ganz sicher gehen wollen, prüfen Sie vor dem Brennen auf CD oder DVD die md5-Checksummen mit dem entsprechenden Befehl

md5sum -name-der-datei.rpm-

Checksummen per Mailinglist
Die Checksummen bekommen Sie über die Update- und Security-Mailinglisten mitgeteilt, die Sie abonnieren und regelmäßig lesen sollten. Security-Mailings von Suse gibt es unter www.suse.com/de/private/support/online_help/mailinglists. Diese E-Mails sollten signiert sein, um die Authentizität sicherzustellen. Die absolute Gewissheit einer unmanipulierten Datei ergibt sich dann, wenn auch diese Signatur überprüft wurde. Einfacher geht das Einspielen von Security- Updates mit automatisierten Patch- Diensten, wie sie viele Linux-Distributoren anbieten. Leider basieren diese oft auf recht einfachen Update-Strategien und benötigen meist ein grafisches Frontend. Daher sind sie für automatisches Update nicht einsetzbar. APT (Advanced Package Tool) hingegen ist ein schlichtes Kommandozeilen- Tool. Sie können es nicht nur zum Updaten, sondern auch zum schnellen Installieren und Deinstallieren von Software verwenden. Anders als die meisten Konkurrenzprodukte kann APT auch auftretende Abhängigkeiten selbstständig auflösen. APT arbeitet nach folgendem Grundprinzip: Das Tool erzeugt aus den gespiegelten Paketen eine Datenbank, die eine Liste aller verfügbaren Pakete sowie Abhängigkeiten zwischen ihnen enthält. Diese Datenbank wird beim Erscheinen neuer Patches aktualisiert und vor einem Update vom Server geholt. Danach vergleicht der Rechner die verfügbaren Pakete mit den lokal installierten und aktualisiert veraltete Software. Infos und fertige RPMs für Suse Linux gibt es unter http://linux01.gwdg.de/apt4rpm/
.
Infos in Deutsch
Eine deutschsprachige Einführung findet sich unter www.openoffice.de/linux/buch/apt.html. Ein gutes Forum zu APT ist der Linux-Club (www.linuxclub.de). Die gängigsten Distributionen liefern mittlerweile eigene Tools mit, die eine ähnliche Funktionalität bieten wie APT. Suse bietet etwa »Yast Online Update « (kurz: YOU) an. YOU wählt hierbei in einem mehrstufigen Prozess alle erforderlichen Update-Pakete für Ihr System aus, prüft nach dem Download die Integrität und Authentizität jedes Pakets anhand von Prüfsummen und installiert das Paket auf Ihrem System. Zum Starten des Assistenten geben Sie am der Root-Shell

yast2 online_update

ein. Mit welchem Verfahren Sie die Server aktualisieren, ist unwichtig ? wichtig ist nur, dass dies regelmäßig geschieht.

Server-Dienste

Sichere Linux-Server

Es gibt Linux-Software, die aufgrund ihrer Funktion oder systembedingter Mängel nicht für sensible Bereiche geeignet ist. Mit ihrer Hilfe kann ein Eindringling das Netzwerk leicht auskundschaften und weiter vordringen. Leider fügen die Standard- Installations-Skripte vieler Distributionen dem System viele unnötige und gefährliche Dienste hinzu. Der wichtigste nächste Schritt beim Härten des Systems ist es deshalb, diese Dienste abzustellen. Zunächst sollten Sie sich einen Überblick darüber verschaffen, welche Dienste ausgeführt werden. Eine einfache Möglichkeit hierfür bieten die Kommandos »lsof« und »netstat«. Geben Sie als Superuser im Root-Verzeichnis

netstat -nap

ein, um die laufenden Serverdienste aufzulisten. Ob es sich um einen TCP- oder UDP-Dienst ha
ndelt, sehen Sie in der ersten Spalte. Ebenfalls aufgeführt sind die PIDs der Dienste und die Namen der Programme, welche diese Dienste gestartet haben. »LISTEN» ist das servertypische »Warte auf Anfrage«. Können Sie einen der aufgeführten Dienste nicht identifizieren, brauchen Sie ihn wahrscheinlich auch nicht. Falls aus der Ausgabe von netstat nicht hervorgeht, was ein bestimmter Dienst tut, finden Sie mit den Befehlen »ps«, »find«, »grep« oder »locate« weitere Informationen über das Programm oder die zugehörige PID heraus. Sie sollten auch das Verzeichnis »/etc/services « auf unbekannte Dienstbezeichnungen oder Portnummern überprüfen.

Unnötige Dienste deaktivieren

Sichere Linux-Server

Sind die unnötigen Dienste ermittelt, können Sie diese deaktivieren. Einfach und sicher ist, die überflüssigen Programme zu entfernen. Mit

rpm -qa

listen Sie zuerst die installierten Pakete in einer Detailansicht auf. Möchten Sie beispielsweise den Apache von Festplatte löschen, geben Sie

rpm -e apache

ein. Haben Sie Dienste gelöscht, entfernen Sie sicherheitshalber auch die dazugehörigen Shell-Skripte. Sie finden diese im Verzeichnis »/etc/init.d«. Wenn Sie weniger radikal vorgehen möchten, weil Sie vielleicht den einen oder anderen Dienst zu einem späteren Zeitpunkt doch benötigen, legen Sie den Dienst vorübergehend still. Als User »Root« können Sie einen beliebigen Dienst deaktivieren, indem Sie den Pfadnamen für den Dienst gefolgt von der »stop«-Option eingeben. Deaktivieren sollten Sie aus Sicherheitsgründen möglichst viele Netzwerkdienste. Um beispielsweise den Dienst »nfs« auszuschalten, geben Sie ein:

/etc/init.d/nfs stopp

Möglicherweise ist ein Dienst aber auch nach dem Abschalten nicht dauerhaft deaktiviert. So kann ein Dienst zum Beispiel beim Systemstart neu aktiviert werden. Sie sollten also sicherheitshalber nach dem nächsten Neustart noch einmal »netstat« ausführen, ebenso nach jedem System- oder Package-Upgrade. Viele Linux-Distributionen bieten für die Unterbindung des automatischen Starts einen eigenen Editor mit komfortabler Bedienerführung an. Bei Suse und anderen Distributionen, die der LSB (Linux Standard Base) entsprechen, gibt es zwei einfache Skripte, die dies auf der Kommandozeile erledigen:

/usr/lib/lsb/install_initd
/usr/lib/lsb/remove_initd

Soll Apache automatisch gestartet werden, geben Sie ein /usr/lib/lsb/install_initd apache Wenn nicht, dann verwenden Sie /usr/lib/lsb/remove_initd apache als Befehl. Als Ergebnis wird der Webserver nicht mehr ausgeführt.

su verhindern

Sichere Linux-Server

Mit einer Reihe einfacher, aber effizienter Maßnahmen erhöhen Sie die Sicherheit des Servers weiter. Mit dem Programm »su« (substitute user) kann ein Benutzer mit dem entsprechenden Passwort aus Systemsicht seine Identität wechseln und weitergehende Rechte als Superuser erhalten. Das können Sie verhindern: Kommentieren Sie hierzu in der Datei »/etc/pam.d/su diese Zeile aus«:

#auth required /lib/security/pam_unix.so nullok #set_secrpc

Ersetzen Sie diese durch:

auth required /lib/security/pam_wheel.so group=wheel

Ein Versuch, mit su Superuser-Rechte zu bekommen, wird danach mit einer Fehlermeldung abgewiesen. Achten Sie auch darauf, dass »xinetd« statt »inetd« läuft. Bei den neueren Distributionen ist dies ohnehin der Fall. inetd ist für den Start von Netzwerkdiensten verantwortlich und das ideale Ziel für DOS-Angriffe. Einem Server mit mehreren Netzwerkkarten lauscht er an allen zur Verfügung stehenden Ethernet-Interfaces. Mechanismen zur Zugriffskontrolle oder Logging gibt es ebenfalls nicht. Diese Löcher stopfen Sie mit »xinetd«. Es verwendet seine eigene Konfigurationsdatei »/etc/xinetd.conf«. Dort können Sie diverse Parameter einstellen. Den gefürchteten DOS-Angriffen treten Sie beispielsweise durch eine Beschränkung der Anzahl neu gestarteter Server entgegen. Den Wert können Sie entweder global oder auf Service-Ebene mit dem Parameter instances beeinflussen. Er sollte
grundsätzlich immer angegeben werden, weil sonst unbegrenzt viele Server gestartet werden können. Sollten Sie trotzdem »inetd« verwenden, kommentieren Sie alle Dienste in »/etc/inetd.conf aus«.

Login- und Passwortschutz

Sichere Linux-Server

Um dem Gefahrenpotenzial von Angriffen auf die Passwortarchitektur zu begegnen, setzen Sie Password-Shadowing ein. Der Hintergrund: Die Passwörter der Benutzer werden bei Linux in der Ascii- Datei »/etc/passwd« abgelegt. Sobald ein Nutzer das Passwort eingegeben hat, wird es durch einen speziellen DES-Algorithmus (Data Encryption Standart) zwar verschlüsselt.
Die Datei »/etc/passwd« ist jedoch für jeden auf dem System lesbar, was die Verwundbarkeit durch Password-Hacks erhöht. Der Angreifer kann entweder ein Klartext-Passwort oder ein kryptografisches, gehashtes Passwort abfangen. Das gehashte Passwort kann mit Brute-Force- Methoden durch Ausprobieren aller Möglichkeiten geknackt werden. Programme wie »Crack« oder »John the Ripper« zeigen dabei hohe Erfolgsquoten. Beim Password-Shadowing bleibt zwar »/etc/passwd« lesbar, doch enthält sie statt den kodierten Passwörtern nur karge Platzhalter. Die Benutzerpasswörter werden in »/etc/shadow« gespeichert, das nur vom Administrator gelesen werden kann. Durch das Password-Shadowing können Sie auch Definitionen für das Ablaufen gültiger Passwörter und Accounts einrichten. Natürlich sollten Sie auch die anderen Login- und Passwort- Schutzmechanismen umsetzen wie Login-Versuche aufzeichnen oder lange Passwörter einfordern.

SUID-Bits entziehen

Sichere Linux-Server

Als Systemadministrator müssen Sie sich mit Zugriffsrechten für Devices, Verzeichnissen und Dateien auseinandersetzen. Permissions werden mit den Kommandos »chmod« und »chown« definiert und können elementare passive Einflüsse auf die Systemsicherheit haben. Ein hohes Sicherheitsrisiko stellen Programmdateien mit gesetztem SUID-Bit (Set User Identification) dar. Solche Programme werden immer mit den Rechten des Besitzers (Owner) ausgeführt. Ist dies der Superuser »root«, erhält der Anwender für die Dauer der Programmausführung dessen Rechte und kann auf Daten zugreifen und diese verändern. Ein böswilliger Benutzer kann durch

find / -perm +4000

nach Dateien mit gesetztem SUIDBit suchen. Um solchen Attacken vorzubeugen, sollten Sie nur denjenigen Programmen SUID gewähren, die diese Option unbedingt benötigen. Allen Programmen, die kein SUID brauchen, entziehen Sie dieses Flag. Angezeigt werden SUIDDateien durch den Buchstaben »s« anstatt des »x« für eine ausführbare Datei in den Rechten. S-Bits sind mit

find / -type f \( -perm -04000 -o – perm -02000 \) -exec ls -lg {} \;

leicht zu finden. Folgenden Dateien sollten Sie aus Sicherheitsaspekten das SBit auf alle Fälle entziehen: /usr/bin/chage, /usr/bin/chfn, /usr/bin/ chsh, /usr/ bin/gpasswd, /usr/bin/newgrp, /usr/bin/ passwd, /bin/mount sowie /bin/umount.

Hilfreiches

Sichere Linux-Server

Was Sie noch tun können ist:
Shell-Zugriffe durch Telnet unterbinden Sie möglichst ganz. Zum Arbeiten auf einem entfernten Rechner sollten Sie SSH (Secure Shell) anstatt der r-Befehle verwenden. »rlogin« für Terminalzugriff, »rcp« für Filetransfer und »rsh« für das Ausführen von Befehlen sind alles andere als sicher. SSH verschlüsselt die übertragenen Daten und damit auch die Passwörter. Es empfiehlt sich zusätzlich, auf dem lokalen System oder extern eine Firewall einzurichten. Dadurch können ungewollte Informationslecks verhindert oder frühzeitig erkannt werden.
Seit Kernel-Version 2.4 enthält jeder Linux-Kernel das Firewall-Konzept IPTables. IPTables beherrscht die so genannte Stateful inspection. Damit können Sie nicht mehr nur einzelne Pakete filtern, sondern ganze Ströme relat
iv einfach analysieren oder blocken. Weitere Informationen gibt es unter www.netfilter.org.

Lesen Sie auch :