Sicherheit unter Linux

Aus LinuxUser 03/2006

Sicherheit unter Linux

Eingedämmt

Linux ist sicher – aber nur, wenn User und Programmierer mithelfen. Sie schützen ihre eigenen Rechner und verhindern, dass sich Schadprogramme ausbreiten.

Wer unter Windows mit Internet Explorer und Outlook Express online geht, auf Antiviren-Software und Personal Firewall aber verzichtet, gilt gemeinhin als fahrlässig. Was unter Windows stimmt, ist für Linux noch lange nicht richtig: Statt sich mit Virenscanner & Co. einzudecken, setzen die Freunde des Pinguins auf andere Schutztechniken. Allen voran stehen Sicherheits-Updates, sichere Konfiguration und vorsichtiger Umgang mit Mail und Web. Wer mehr will, aktiviert die Firewall und sperrt seine Programme in möglichst enge Käfige (etwa AppArmor).

Fremdkörper

Virenscanner sind unter Linux zwar anzutreffen – aber nicht auf dem Desktop, sondern im E-Mail- oder Datei-Server. Dort schützen sie Windows-Clients und nicht die Linux-Maschine. Theoretisch könnten Viren zwar auch das freie System bedrohen, praktisch passiert das so gut wie nie. Die Gründe dafür sind vor allem in der Technik zu suchen.

Viren verändern vorhandene Programme und sorgen dafür, dass jeder Start auch den Viren-Code ausführt. Das funktioniert auch unter Linux. Um sich weiter zu verbreiten, infiziert ein Virus andere Programme, die er im Dateisystem findet. Ältere Windows-Versionen lassen ihm dabei freie Hand, Linux bremst ihn. So lange sich das Programm mit User-Rechten begnügt und nicht als Root läuft, darf es andere Programmdateien nicht überschreiben. Dem Virus fehlt damit ein Ausbreitungsweg.

Dazu kommt, dass sich Linux-Anwender kaum gegenseitig fertig kompilierte Programme zuschicken. Daran wird sich so schnell nichts ändern: Bei frei verfügbarer Software sind Warez (Raubkopien) uninteressant. Originalsoftware lädt man leichter und schneller von der Distributions-DVD, einer Heft-CD oder der Originalseite der Entwickler.

Fachbegriffe

Die Sicherheitsgemeinde verwendet für viele Arten von Lücken, Angriffstechniken und Schadprogrammen eigene Namen.

Authentication Error: Das Programm prüft die Identität des Benutzers nicht ausreichend.

Buffer Overflow oder Boundary Error: Bei diesem Programmierfehler kopiert ein Programm Daten in einen zu kleinen Speicherbereich und überschreibt die dort vorhandenen Werte. Wenn die Daten vom Angreifer stammen, dann kontrolliert er Speicherstellen, auf die er normalerweise keinen Einfluss hätte. Das kann er beispielsweise nutzen, um eigenen Code einzuschleusen und so die Kontrolle über den Prozess zu übernehmen.

Cross Site Scripting: Javascript-Kommandos dürfen nur auf die Web-Anwendung zugreifen, für die sie gedacht sind. Durch Fehler in Web-Applikationen und in den Browsern gelingt es einem Angreifer, seinen Code im Kontext einer fremden Seite laufen zu lassen und so beispielsweise an Authentifizierungsdaten (Passwörter, Cookies) zu gelangen.

Denial of Service (DoS): Der Saboteur legt einen Dienst lahm. Er erhält zwar keine Kontrolle über das Programm, aber der Absturz fällt mindestens lästig. Eventuell kostet er auch Geld, was DoS-Attacken für Erpresser interessant macht.

Dot-Dot-Bug: Häufig anzutreffen in Web-Anwendungen. Durch Folgen von ../../ bricht der Angreifer aus dem gewollten Dokumentenverzeichnis aus und greift auf Dateien zu, die er nicht erreichen dürfte.

Eingabekontrollfehler (Input Validation Error): Oberbegriff über alle Programmierfehler, bei denen der Entwickler Benutzereingaben zu vertrauensselig behandelt.

Entfernte Lücke (Remote Vulnerability): Diese Schwachstelle ist über das Netzwerk ausnutzbar, ohne vorher einen Account auf dem angegriffenen Rechner zu besitzen.

Format-String-Fehler: Hier benutzt ein Programmierer eine Funktion falsch. Im Format-String haben Steuerzeichen (etwa %) eine Sonderbedeutung. Stammt der Format-String vom Angreifer, verhilft ihm das zu ähnlichen Angriffsmöglichkeiten wie beim Buffer Overflow.

Konfigurationsfehler: Manchmal ist nicht das Programm selbst fehlerhaft, sondern nur seine Einstellungen. Dazu gehören auch falsch gesetzte Dateizugriffsrechte.

Lokale Lücke: Um diese Sicherheitslücke auszunutzen, muss der Angreifer bereits einen Login auf der Maschine haben.

Makrovirus: Virus, der Dokumente befällt. Viele Dateitypen können Makros enthalten, die ein Editor oder Dateibetrachter als Code ausführt.

PHP-Include-Fehler: Der Angreifer schafft es, eigene PHP-Anweisungen in eine fremde Web-Applikation einzuschleusen. Diese Kommandos laufen dann mit den Rechten der Web-Anwendung.

Race Condition: Lücken, die nur für einen sehr kurzen Zeitraum ausnutzbar sind. Angreifer können das Wettrennen gegen ihre Opfer aber gewinnen. Beispielsweise bei Symlink-Schwachstellen anzutreffen: Viele Programm prüfen zwar, ob der Namen noch frei ist, zwischen Prüfen und Schreiben verstreicht aber eine (beliebig kurze) Zeitspanne.

Root Access: Der Angreifer erlangt Root-Rechte.

SQL Code Injection: Eine Web-Anwendung nutzt eine Datenbank. In die SQL-Abfragen bettet sie Daten ein, die vom Angreifer stammen. Der schafft es durch geschickten Einsatz von Sonderzeichen, den SQL-Befehl mit eigenen Kommandos zu erweitern und erhält damit Kontrolle über den Inhalt der Datenbank.

Symlink-Schwachstelle: Legt ein Programm Daten in einem Verzeichnis ab, in dem auch potenzielle Angreifer Schreibrecht haben (etwa /tmp), dann platzieren Bösewichte vorher einen Symlink mit gleichem Namen. Unvorsichtige Programme überschreiben dann die verlinkte Datei.

Trojanisches Pferd: In einem harmlos wirkenden Programm verborgene Schadfunktion.

Wurm: Schadprogramm, das selbständig läuft und sich aus eigenem Antrieb verbreitet. Es nutzt dazu Schwachstellen in anderen Programmen.

Virus: Dieses Schadprogramm befällt einen Wirt und kommt künftig als Teil dieses Programms zur Ausführung.

Kosten und Nutzen

In der Kosten-Nutzen-Rechnung der Virenschreiber schneiden Linux-Viren somit schwach ab. Verschiedene Distributionen auf unterschiedlichen Architekturen, kaum Verbreitungsmöglichkeiten und unbestreitbar mehr Windows-Maschinen, die bereitwillig auf Viren warten – all das sorgt dafür, dass andere Angriffe auf Linux wesentlich mehr Erfolg versprechen.

Wer trotzdem auf seinen Virenwächter nicht verzichten möchte, weil der ein komfortables Gefühl der Sicherheit vermittelt und vermeintlich nicht schaden kann, der irrt: Jedes Stück Software, das auf einem Rechner läuft, stellt eine potenzielle Gefahrenquelle dar. Virenscanner bilden keine Ausnahme, ganz im Gegenteil. Sie analysieren quasi jedes Dateiformat, egal wie vertrackt es sich gestaltet, packen Archive aus und durchsuchen den Inhalt mit komplexen Suchoperationen. Das Ganze muss zudem flott ablaufen. Da wundert es nicht, dass auch Scanner Sicherheitslücken aufweisen und selbst zum Angriffsziel mutieren.

Riskanter Scanner

Securitytracker listet beispielsweise beim freien Virenscanner ClamAV im Jahr 2005 fünf Lücken [8]. Auch die kommerzielle Closed-Source-Konkurrenz bleibt von Fehlern nicht verschont. Dabei setzen sich Scanner sogar gezielt der Gefahr aus – schließlich müssen sie potenzielle Schadsoftware analysieren. Die Risikoschätzung für Virenscanner lautet damit: Unter Windows überwiegen die Vorteile, dort also lieber mit Scanner. Auf einem Mail- oder File-Server, der Windows-Clients bedient, genauso. Ein reiner Linux-Desktop ist ohne Virenwächter besser dran.

Abbildung 1: OpenOffice 2 informiert, dass sich in diesem Dokument Makros befinden. Der Benutzer kann wählen, ob er den Makros vertraut und sie startet oder auf Nummer Sicher geht und diese Funktionen abstellt.

Abbildung 1: OpenOffice 2 informiert, dass sich in diesem Dokument Makros befinden. Der Benutzer kann wählen, ob er den Makros vertraut und sie startet oder auf Nummer Sicher geht und diese Funktionen abstellt.

Bei Makroviren verhält es sich ähnlich. Es sind durchaus Viren denkbar, die sich in OpenOffice-Dateien einnisten. Allerdings warnt OpenOffice den Benutzer, bevor es Makros in Dokumenten aktiviert (siehe Abbildung 1). Word-Makroviren haben sowieso keine Chance, da OpenOffice keine Microsoft-Makros (weder Word Basic noch VBA) ausführt. Das Verhalten von OpenOffice ist recht detailliert festlegbar: Extras / Optionen / OpenOffice.org / Sicherheit / Makrosicherheit.

Tradition

Makroviren haben unter Unix Tradition. Bereits sehr frühe Versionen des Editor-Klassikers vi kannten die so genannte Modeline, eine speziell formatierte Textzeile mit Editor-Kommandos. Neuere Versionen lösen das Problem an seiner Wurzel: nvi ignoriert die Modeline vollständig und vim gehorcht nur unbedenklichen Befehlen.

Wurmkur

Im Gegensatz zu Viren benötigen Würmer kein Wirtsprogramm, sie laufen selbständig. Um sich zu verbreiten, missbrauchen sie fremde Programme und deren Sicherheitslücken. Der bekannteste Wurmträger ist wohl das E-Mail-Programm Outlook unter Windows. Ein typischer E-Mail-Wurm versendet sich an alle Personen aus dem Adressbuch. Er richtet beim Empfänger aber nur Schaden an, wenn der sorglos den Anhang öffnet oder wenn der Wurm eine Sicherheitslücke im Mailer findet.

Beides könnte auch unter Linux geschehen, allerdings verstellen zahlreiche Hürden den Weg. Die Anwender benutzen viele verschiedene Mail-Programme. Ein E-Mail-Wurm wäre bei den meisten Empfängern unwirksam und würde sich daher langsamer verbreiten als seine Outlook-Verwandtschaft. Linux-Mailer gehen mit Anhängen vorsichtig um; sie zeigen den kompletten Namen und fragen in der Regel, bevor sie den Inhalt an einen Betrachter übergeben.

Viele E-Mail-Clients ignorieren HTML-Anhänge oder setzen sichere Programmmodule ein, um HTML-Code anzuzeigen. Outlook nutzt den Internet Explorer als HTML-Komponente und ist folglich für ähnliche Sicherheitslücken anfällig. Ähnlich gefährlich verhält sich Thunderbird. Er verwendet die voll ausgestattete Mozilla-HTML-Komponente und ist daher anfällig für Firefox-Lücken.

Es gilt für alle Mail-Programme unter Linux die bekannte Warnung: Anhänge von suspekten E-Mails besser nicht öffnen und vor allem keine unerwartet eintreffenden Programme starten. Damit würde der Benutzer einen eventuellen Wurm selbst in seinen Rechner einsetzen.

Saubermänner

Ob ein Programm schädlich ist oder nicht bleibt oft unklar. Bei einem einfachen E-Mail-Wurm ist die Sachlage noch recht eindeutig. Manch bösartige Funktion verstecken sich aber in harmlos wirkenden Programmen; das Gespann nennt sich trojanisches Pferd.

Eventuell weiß nicht einmal der Programmautor von den verborgenen Programmteilen, etwa wenn ein Angreifer den Computer des Entwicklers geknackt hat und unbemerkt Zusatzfunktionen in die Software einfügt. In anderen Fällen ist es der Autor selbst, der dunkle Ziele verfolgt. Bei Open-Source-Software stehen die Chancen aber gut, dass andere Entwickler getarnte Fallen aufdecken und die Linux-Gemeinde warnen. Die Distributoren beauftragen meist mehrere Entwickler, Programme zu untersuchen und Schwachstellen, Sicherheitslücken und Hintertüren aufzuspüren.

Für die Lückenjäger bedeutet die Linux-typische Vielfalt (viele Programme für die gleiche Aufgabe) mehr Arbeit – das trifft aber auch auf die Angreifer zu. Im Ernstfall finden sie weniger Opfer, dan nicht jeder Computer mit der identischen Software ausgestattet ist.

DFN-Cert

Unterstützung und Koordination erfahren Distributoren und Netzwerk-Administratoren von Computernotfallteams (CERT, Computer Emergency Response Team) [2]. Diese sorgen im Ernstfall dafür, dass sich die Verantwortlichen auch ohne E-Mail und WWW verständigen und helfen bei der Reaktion auf Computer-Einbrüche. Sie veröffentlichen aber auch die berühmten CERT-Advisories. Diese Meldungen informieren über neue Sicherheitslücken und wie man sie behebt. Die übersetzten Texte des DFN-CERT [3] stehen unter anderem auf der Linux-Community [4].

Abbildung 2: Das Suse-Update verdient Lob und Tadel zugleich. Es informiert ausführlich über anstehende Patches (links oben), klassifiziert sie nach Sicherheitskorrekturen (rot), funktionalen Fehlern (blau) und weiteren Updates (schwarz), liefert eine Patch-Beschreibung mit Größenangaben (links unten) und listet die Komponenten des Patch-Pakets (rechts). Leider hat Suse das Fenster mit den vielen Informationen völlig überladen.

Abbildung 2: Das Suse-Update verdient Lob und Tadel zugleich. Es informiert ausführlich über anstehende Patches (links oben), klassifiziert sie nach Sicherheitskorrekturen (rot), funktionalen Fehlern (blau) und weiteren Updates (schwarz), liefert eine Patch-Beschreibung mit Größenangaben (links unten) und listet die Komponenten des Patch-Pakets (rechts). Leider hat Suse das Fenster mit den vielen Informationen völlig überladen.

Update nicht vergessen

Wird eine Lücke bekannt, dann heißt es: Löcher stopfen, am besten das betroffene Programmpaket aktualisieren oder komplett deinstallieren. Beim Patchen (Korrekturen einspielen) helfen moderne Distributionen (zum Beispiel Suse, siehe Abbildung 2). Deren Online-Update sucht nach Korrekturen für installierte Pakete.

Besonders kritisch sind Sicherheitslücken in Server-Programmen. Die warten darauf, dass sich ein Client mit ihnen in Verbindung setzt. Jedes schwarze Schaf kann sich über das Internet mit einem Server verbinden und sein Unwesen treiben. Dazu braucht es noch nicht einmal die Adresse zu kennen, es durchsucht einfach große Teile des Netzes und hofft darauf, Opfer zu finden. Erschwerend kommt hinzu, dass Server oft mit Root-Rechten laufen – nach einem Einbruch übernimmt der Angreifer die Rechte des Opfers und kontrolliert damit den Computer.

Bei dem Angreifer kann es sich um einen Menschen mit dunklen Absichten handeln (meist als Cracker tituliert), der den Computer direkt attackiert. Es kann aber auch ein Stück Software sein, in Form eines Wurms. Ramen, Lion und Slapper haben zu größerer Verbreitung gebracht. Der Ramen-Wurm [5] griff 2001 WuFTP-Server an, während Lion [6] eine Sicherheitslücke im DNS-Server Bind nutzte. Anno 2002 nistete sich Slapper [7] in Apache/SSL-Installationen ein. In allen Fällen waren die Lücken bekannt, nur hatten die Betreiber vieler Unix- und Linux-Computer die Updates nicht eingespielt.

Abbildung 3: Eine Firewall verhindert, dass Clients eine verbotene Verbindungen zu einem Server herstellen. Ob die Verbindung erlaubt ist oder nicht, gibt der Administrator vor.

Abbildung 3: Eine Firewall verhindert, dass Clients eine verbotene Verbindungen zu einem Server herstellen. Ob die Verbindung erlaubt ist oder nicht, gibt der Administrator vor.

Feuerschutz

Um sich vor Angriffswellen zu schützen, verwenden viele Netze Firewalls (Abbildung 3). Diese Schutzwälle lassen nur Datenpakete durch, die bestimmten Kriterien genügen: Welcher Computer darf mit welchem anderen kommunizieren, welche Protokolle dürfen sie verwenden. Der Schutz einer Firewall bleibt aber begrenzt: Wenn sie eine Verbindung zulassen, dann müssen sich weiterhin die Client- und Server-Programme selbst verteidigen. Der beste Schutz ist daher, nur die wirklich benötigten Server zu installieren und zu starten.

Neben Server-Programmen sind auch die Clients gefährdet. Sie müssen zwar zunächst von sich aus eine Verbindung öffnen, über diesen Weg kann sie dann aber der Server angreifen.

Sichere Passwörter

Das beste Linux ist machtlos, wenn Benutzer versehentlich oder leichtfertig ihre Sicherheit gefährden. Passwörtern kommt dabei zentrale Bedeutung zu. Ihre Sicherheit hängt davon ab, wie leicht jemand das Geheimnis errät. Der Geburtstag der Freundin oder der Name des Haustigers eignen sich denkbar schlecht. Wer Passwörter knacken will, setzt dafür Programme ein, die das Raten automatisieren. Sie verwenden umfangreiche Wortlisten in mehreren Sprachen, zusammen mit Regeln, wie man die Wörter zusammensetzt und Buchstaben durch Zahlen oder Sonderzeichen ersetzt.

Um das Raten so schwer wie möglich zu machen, darf ein Passwort nicht zu kurz ausfallen. Unix- und Linux-Systeme erlauben oft nur acht Stellen (DES-Passwortsystem). Diese Länge sollte jeder Benutzer auch ausnutzen. Mit der MD5-basierten Alternative entfällt die Längenbeschränkung.

Besonders die Anzahl unterschiedlicher Zeichen ist wichtig: Groß- und Kleinbuchstaben mischen, Zahlen und Sonderzeichen wie #, <, >, _, =, (, ) verwenden. Zeichen, die nicht auf jeder Tastatur vorhanden sind, eignen sich dagegen weniger. Das Euro-Zeichen ist kritisch, auch die Zeichen & und @ bereiten manchmal Ärger.

Trotz aller Vielfalt und Zufälligkeit muss sich jeder User sein Passwort merken. Dabei helfen Eselsbrücken als Merkhilfen, die aber ebenso geheim bleiben müssen wie das Passwort. Wichtig: Jedes Passwort immer nur für eine Aufgabe verwenden. Das Kennwort für den Login in ein Web-Forum sollte auf gar keinen Fall dem Root-Account gleichen. Das Passwort auch gelegentlich ändern. Falls es doch einmal in die falschen Hände gerät, bleibt der möglichen Schaden begrenzt.

Solide Basis

Linux wehrt sich gegen Eindringlinge aus dem Untergrund der Datennetze. Die Mithilfe des Anwenders und Admins vorausgesetzt, ist diese Abwehr auch sehr erfolgreich: So gilt Linux zu Recht als sicheres Betriebssystem mit verantwortungsvollen Benutzern.

LinuxUser 03/2006 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben