Einführung in die Sicherheit von Linux
2000 (C)opyrights by Marc Ruef <marc.ruef@computec.ch>

Immer wieder tauchen in den Medien Artikel auf, die von bösartigen Crackern berichten, die irgendwelche vernetzten Computer-Systeme negativ beeinträchtigt haben. Viele nicht versierte Linux-Administratoren wissen im ersten Moment jedoch gar nicht erst, wo sie denn für die Erhöhung der Sicherheit des eigenen Systems ansetzen sollen. Dieser Text soll als kurze Einführung in die hochkomplexe Thematik der Sicherheit unter Linux dienen.

Grundlagen

Gefahren für ein Computer-System können grob in zwei Kategorien unterteilt werden: Zum Einen entstehen Sicherheitslücken dank fehlerhafte Konfigurationen, zum anderen durch unsauber programmierte Software. Das Risiko einer Bedrohung durch die erste Fehlerquelle kann mit individuellen Schulungen und Weiterbildung degeneriert werden. Da die Welt der Datenströme seit ihren Anfangstagen in der Anarchie versinkt, gewinnt schlussendlich der erfahrenere Administrator, der seine Umgebung bestmöglich im Griff hat. Gegen das Risiko einer Kompromittierung des eigenen Systems durch fehlerhafte Software kann in gewissem Masse durch das Publizieren der Quelltexte vorgegangen werden. So bleibt es einem sicherheitsbewussten Administrator überlassen, ob er nach Einsicht des Sourcecodes genügend Vertrauen in die inspizierte Software legen möchte. Da für das Verständnis der Quellen ein hohes Mass an Wissen der genutzten Programmiersprache (vorzugesweise C und Perl) und oft viel Zeit von Nöten ist, müssen viele Systemverwalter in der Hitze des Gefechts blind ihr Schicksal in die Hände der Programmierer legen.
Gefahrenquellen
Jeder Zugriff auf ein System setzt es einem möglichen Risiko durch unerlaubte oder unerwartete Aktionen aus. Exponentiell schnellt diese Gefahr in die Höhe, sobald eine Netzanbindung ins Spiel kommt. Obwohl die Medien aufregende Angriffe über das Internet in ihrer Profitgier gerne etwas aufplustern, so finden in Tat und Wahrheit die meisten Attacken durch lokale Benutzer oder aus dem eigenen Netzwerk statt. Trotzdem ist nicht zu vergessen, dass bei einer Verbindung zum Internet jeder Mitbenutzer des weltweiten Datennetzes zum potentiellen Angreifer wird.
Da bei der Entstehung von Netzwerken sehr wenig Energie und Zeit für die Implementierung von Vorteilen für die Sicherheit der Architekturen vorgenommen wurde, existieren seit jeher löchrige Methoden für alltägliche Prozeduren, die nur sehr schwer zu ersetzen oder verbessern sind. Beliebt sind in dieser Hinsicht besonders Angriffe auf die eigentlich sauber durchgeführte Login-Sequenz von Linux. Da kein tiefgründiges Wissen erforderlich ist und genügend Tools zur Automatisierung solcher Angriffe existieren, werden sie mit Vorliebe von Gelegenheits-Crackern ausgeführt. Erfolgreich verlaufen diesbezüglich erschreckend oft sogenannte Wörterbuch-Attacken, da viele User aus Bequemlichkeit reguläre Begriffe des Alltags als Passwort zu nutzen pflegen. Dabei werden der Reihe nach die Einträge aus herkömmlichen Wörterbüchern als Passwort-Angabe versucht. Konnte schlussendlich doch kein Erfolg dieser Angriffs-Form verbucht werden, so setzen viele Angreifer auf die langwierige Brute-Force-Attacke, bei jener alle möglichen Buchstabenkombinationen als Passwort ausprobiert werden: Früher oder später wird der Angriff im Gutfall für den Cracker enden... Der Schutz der Daten und die Authentifizierung des Benutzers durch sein geheimes individuelles Passwort mag auf den ersten Blick als sicher erscheinen, doch so verblasst er relativ schnell wieder während eines hartnäckigen Angriffs durch bösartige Kreaturen.

Des Weiteren wird seit jeher bei normalen Datenverbindungen (z.B. Telnet und FTP) die Kommunikation mehr oder weniger im Klartext geführt. So ist es nicht verwunderlich, wenn ein Angreifer durch ein geschickt plazierten Sniffer sehr schnell an vorteilhafte Informationen (z.B. Passwörter und Mail-Daten) kommt. Dabei wird vom Cracker einfach der vermeintlich interessante Datenverkehr, der ihn eigentlich nichts anzugehen hat, im Geheimen mitprotokolliert und ausgewertet. Der Weg zur ultimativen Kontrolle über das betroffene System wird dann zum Spaziergang...
 

Einem feindlich gesinnten Geist kann nur durch kryptographische Verfahren (z.B. SSH und PGP) die Stirn geboten werden. Wo immer sich solche zusätzlichen Mauern erstellen lassen, soll dies im Sinne der Beteiligten entstehen. Das Abfangen des Datenverkehrs ist dann im Gegensatz zur Deociderung desselbigen ein Kinderspiel.

Es existieren weitere fortgeschrittene Techniken zur Untergrabung der Sicherheit eines Systems. Werden Authentifikationen anhand der IP-Adresse eines Hosts vorgenommen, so können durch IP-Spoofing Kompetenzen vorgetäuscht werden. Daneben existieren Angriffe auf Routing-Informationen..................

Fehlerhafte Konfigurationen
Linux biete schier unendliche Einstellungsmöglichkeiten, doch wer sich nicht gut mit der hockomplexen Materie auskennt, der dürfte sich relativ schnell im Gewirr der oft unüberschaubaren Konfigurationen verlieren. So können zu laxe Zugriffsrechte auf sensible Daten besonders bei Freigaben über das Netzwerk (z.B. NFS und Samba) ein System leicht ausbeutbar machen.

Fehlerhafte Konfigurationen können jedoch auch einen Cracker für ihn elementare Meldungen bezüglich des Systems überlassen: Unnütze Auskunftsdienste (z.B. finger) und überflüssige Zugriffsmöglichkeiten (z.B. FTP und HTTP) lassen den Angreifer schnell an die begehrten Informationen (z.B. eingerichtete Benutzer und eingesetzte Software) kommen, die ihm einen ersten Schritt ins System überhaupt erst ermöglichen werden - Ein System kann erst angegriffen werden, wenn einem die Eckdaten bekannt sind.

Besonders begehrte Schwachstellen sind Default-Passwörter. Der Hersteller pflanzt bei der Erstellung seiner Software oft eine kleine Hintertür für Notfälle in Form eines inoffiziellen Passwortes ein. Solche Standart-Passwörter werden in der Cracker-Szene jedoch oft schnell weitergereicht, und so wird vielen von ihnen ohne grössere Probleme der Eintritt in geschützte Systeme ermöglicht werden. Am besten löscht oder ändert man sofort die Default-Logins, damit keine Schlupflöcher bestehen bleiben können.

Wer für die Betreuung eines Hosts verantwortlich ist, der sollte stets bestens über die eingesetzte Software unterrichtet sein. Besonders wichtig ist diese Botschaft für alle Administratoren, die sich mit der Konfiguration einer Firewall herumschlagen müssen. Eine Firewall ist in keinem Fall ein Allheilmittel, vor allem nicht, wenn sie sich in unbeholfenen Händen befindet. Die Sicherheit eines Systems wird schlussendlich massgeblich von der Kompetenz des Betreibers beeinflusst und ein Blick in das Handbuch ist nie als verkehrt anzusehen.
Fehlerhafte Software
Benutzer können sich manchmal selbst erweiterte Rechte verleihen, was auf fehlerhaft und schlampig programmierte Software zurückzuführen ist. Das Gefahrenpotential steigt ins Unermessliche, wenn das Produkt selbst ein hohes Mass an Rechten einfordert oder vererben kann. Besonders beliebt gegen solche Programme sind Bufferoverflows, bei denen der Puffer eines Programms so überschrieben wird, dass man in den Besitz von erweiterten Rechten kommt. Dadurch lassen sich zum Beispiel geschützte Dateien einsehen, überschreiben oder eine Shell mit Root-Rechten hinzaubern. Gefährlich werden Pufferüberläufe bei Server-Software, die über das Internet ansprechbar ist. Neue Meldungen über erfolgreiche Bufferoverflow-Attacken machen in der Cracker-Szene praktisch täglich und relativ schnell die Runde, so wird es nur eine Frage der Zeit, bis der erste vermeindlich erfolgreiche Angriffsversuch auf das eigene System gefahren wird.
Eine andere Sicherheitslücke kann durch Race-Conditions geöffnet werden. Dabei verändert ein Programm bewusst die Zugriffsrechte auf eine Datei, um manipulativ jene modifizieren zu können. Wird nun das Zeitfenster zu gross angesetzt oder das Zurücksetzen der Permissions vergessen oder verhindert, können Angreifer die gelockerten Zugriffsrechte zum eigenen Vorteil ausnutzen.

Ein ähnliches Problem wie das der Race-Conditions tritt bei Symlinks zu Tage. Viele Programme mit einer grossen Macht nutzen von allen les- oder schreibbare verlinkte Dateien. Das Ausnutzen der dadurch entstehenden grösseren Befehlsgewalt bleibt dann nur noch dem findigen Angreifer überlassen.

Destruktive Angriffe in höchstem Masse werden DoS-Attacken genannt. Das Akronym "DoS" steht in diesem Zusammenhang für "Denial of Service" und bezeichnet die Kunst bzw. den Unsinn des Unzugänglichmachens einer Ressource. In einzelnen Fällen kann ein Server-Daemon eines Systems bezwungen, oder gleich das gesamte System heruntergerissen werden. Die Ursache für den Erfolg dieser oft gesehenen Angriffs-Form ist auf fehlerhafte Reaktionen von Systemen auf angeblich unvorhersehbare Aktionen zurückzuführen. Grösserer Beliebtheit verschafften sich in den vergangenen Monaten DDoS-Attacken (Distributed Denial of Service). Bei dieser Angriffsform werden mehrere Hosts in einem Netzwerk manipulativ für einen sehr grossflächigen Angriff auf ein einzelnes Gerät missbraucht. Die Durchschlagkraft solcher Aktionen ist enorm, wie die Schlagzeilen (Stichwörter "Yahoo" und "Ebay") der vergangenen Monate sehr imposant verdeutlichten.
Die Entwickler der Software versuchen beim Bekanntwerden einer Lücke stets so schnell wie möglich mit Patches und Bugfixes zu reagieren. Es empfiehlt sich deshalb ein wachsames Auge auf die aktuellen bekannten Schwachstellen in der eingesetzten Software zu haben (z.B. Security-Seiten im World Wide Web), und gegebenenfalls mit der Installation der zur Verfügung gestellten Updates zu reagieren. Um die Gefahren durch schlechte Konfigurationen und fehlerhafte Software möglichst klein zu halten, sollte man bestmöglich auf nicht zwingend erforderliche Elemente verzichten: Das Deinstallieren der besagten Pakete gilt als die sauberste Lösung für solche Fälle.
Es gibt aber auch die Möglichkeit, dass Software von Dritten zur Korrumpierung des Systems modifiziert oder entwickelt wurde. Diese Machwerke unterscheidet man zwischen Viren und trojanischen Pferden. Viren sind unter Linux eigentlich kein erwähnenswertes Thema, da die System-Architektur ein Ausbreiten der sich selber reproduzierenden Codezeilen nur begrenzt zulässt. Gefährlicher wird es, wenn man auf das Thema der trojanischen Pferde zu sprechen kommt: Ein trojanisches Pferd ist in der Computer-Welt ein Programm, welches sich einer zuvor definierten Aufgabe annimmt, jedoch im Hintergrund, meist ohne das Wissen des Initiators, zusätzlich das System unerlaubt beeinflusst. Dies kann das Ausspähen von Passwörtern oder Einrichten einer Hintertür sein.
Programme sollte man bestmöglich vor der Compilierung einer genauen Studie des Quelltextes unterziehen, um eventuelle verborgene Funktionen gar nicht erst eine Start-Chance zu gewähren. Das Beziehen von Software über das Internet sollte stets direkt vom Hersteller geschehen, um eine Einschleusung von korruptem Programmcode durch Dritte zu umgehen. Eine Checksumme zur Verifizierung eines komplett unangetasteten Programms sollte erwünscht oder gar Pflicht sein. Aktuelle Viren-Scanner können zudem in gewissem Masse gefährlich erscheinende Sequenzen oder auffällige Zeichenketten aufspüren, um vor der effektiven Ausführung des Programms zu warnen.
Fazit & Schlusswort
Die Vorteile der hohen Komplexität und Funktionalität von Linux sind gleichzeitig seine Schwächen. Der Besitz von gesundem Menschenverstand und einer gehörigen Portion Wissen sowie Erfahrung ist in erster Linie der beste Schutz für das eigene System. Zwar lassen sich dadurch Mängel von Programmierfehlern in der System- und Sicherheitsarchitektur nicht verhindern, doch ist man dabei mit einem schnellen Reagieren durch Updates meist gut beholfen. Zusätzlich sollte man das aktuelle System auf bekannte Schwachstellen prüfen. Die langwierige und nervenaufreibende daraus entstehende Arbeit kann einem von Security-Scannern (z.B. SAINT und NESSUS) abgenommen werden. Sicherheit ist ein stetiger Kampf, den es nicht zu verlieren gilt...
 
Zusätzliche und weiterführende Security-Links
E AntiCode http://www.anticode.com/
D AREAsec http://www.aerasec.de/security/
E Astalavista http://astalavista.box.sk/
D Computec http://www.computec.ch/
D Computer Security http://www.computer-security.de/
D Kryptocrew http://www.kryptocrew.de/
E PacketStorm http://packetstorm.securify.com/
E Rootshell http://www.rootshell.com/
E SecuriTeam http://www.securiteam.com/
E Security Focus http://www.securityfocus.com/
E Security Bugware http://oliver.efri.hr/~crv/security/
E UUSRback http://www.ussrback.com/