Sonntag, 1. August 2010

entwickler.com Magazine Konferenzen Entwickler Akademie Entwickler-Forum Jobbörse Bücher
Software & Support Verlag





12.04.2007
About Security #100: Die Jubiläumsfolge

Dies ist die 100. (nummerierte) Folge von "About Security", und die Serie wird gleichzeitig 2 Jahre alt: Die erste Folge erschien am 14.4.2005. Zeit, einen Überblick über die behandelten Themen zu geben.

Einführung

Am Anfang stellt sich die Frage "IT-Sicherheit – Was ist das eigentlich?". Eine einfache Antwort darauf gibt es nicht, dafür drei Grundziele, anhand derer IT-Sicherheit definiert wird: Vertraulichkeit, Verfügbarkeit und Integrität. Diese werden anhand einiger beispielhafter Angriffsszenarien näher erläutert, bevor Gegenmaßnahmen vorgestellt werden. Die dabei erwähnte Möglichkeit, einen Trojaner über eine zugeschickte Diskette oder CD in Verbindung mit etwas Social Engineering einzuschleusen, ist inzwischen veraltet: Inzwischen werden dafür USB-Sticks verwendet. Zum Abschluss der Einführung geht es um die Gefahren durch mitgebrachte Hardware wie z.B. USB-Massenspeicher.

Eine erste Schwachstelle: Pufferüberläufe

Als Nächstes wird eine typische Schwachstelle vorgestellt: Der Pufferüberlauf. Es folgt die Beschreibung seiner Ausnutzung sowie mögliche Gegenmaßnahmen. Anschließend wird beschrieben, wie Entwickler Pufferüberlaufschwachstellen verhindern können. Um mögliche Schwachstellen zu finden, gibt es zwei Möglichkeiten: Bei Sourcecode Audits wird der Quelltext untersucht, bei Software Audits werden die Binärdateien analysiert.

Sicherheit von Webanwendungen

Die Sicherheit von Webanwendungen wird u.a. durch SQL Injection bedroht, was man durch Prüfen der Benutzereingaben oder den Einsatz von Stored Procedures verhindern kann. Auch Cross-Site Scripting ist ein weit verbreitetes Problem, dem man durch eine Filterung der Benutzereingaben begegnen kann. Eine besonders für PHP-Skripte gefährliche Schwachstelle ist das unerwünschte Einbinden von Dateien. Im Fall von PHP-Skripte liegt das Problem darin, dass in der eingebundenen Datei enthaltene PHP-Befehle ausgeführt werden. Im Falle anderer Sprachen kann so zumindest JavaScript-Code eingeschleust werden. Beim Einbinden lokaler Dateien kann der Angreifer u.U. sensitive Informationen ausspähen, z.B. wenn er eine Datei mit Zugangsdaten ausgeben lassen kann.
Eine relativ neue Klasse von Angriffen ist das HTTP Request Smuggling, von dem es verschiedene Spielarten gibt, z.B. das Request Hijacking oder die Täuschung von Firewalls und Intrusion-Detection- bzw. -Prevention-Systemen. Angriffe können auf TCP-Ebene erkannt und z.B. durch eine Firewall (#29) oder ein Intrusion-Prevention-System (#49) verhindert werden. HTTP Response Splitting nutzt Schwachstellen in Webanwendungen, um statt einer Antwort derer zwei zu erschleichen. Dadurch lassen sich z.B. Webcaches vergiften. Auch der Browsercache kann als Ziel dienen.
Weitere Spielarten sind Cross-Site-Scripting-Angriffe und das indirekte Vergiften von Cache- und Proxy-Servern. Auch lassen sich durch HTTP Response Splitting Webseiten entführen: Die für einen anderen Benutzer bestimmten HTTP-Responses werden zum Angreifer umgeleitet. Es gibt mehrere Möglichkeiten, derartige Angriffe zu verhindern. Webanwendungen sind noch einigen anderen Gefahren ausgesetzt, ebenso wie Webserver.

N E U ! Security aktuell
Täglich aktuelle Security-Infos!

Wichtig in diesem Zusammenhang ist auch die Wahl des richtigen Standorts für den Webserver. Und das ist auch die Überleitung zum nächsten Thema:

Firewall

Zuerst wird als Grundlage das TCP/IP-Schichtenmodell beschrieben. Die einfachste Form einer Firewall ist der Paketfilter, der auf der Netzzugangs-, Netzwerk- und Transportschicht des TCP/IP-Schichtenmodells arbeitet. Ein Problemfall sind FTP-Verbindungen. Sonderfälle der Paketfilter sind zustandsorientierte und dynamische Paketfilter. Nach einer Gegenüberstellung von Vor- und Nachteilen der Paketfilter geht es weiter zur zweiten Kategorie von Firewall-Systemen: Application Level Gateways arbeiten auf der Anwendungsschicht des TCP/IP-Schichtenmodells. Dabei wird zwischen Application Level Proxies und Circuit Level Proxies unterschieden. Auch Application Level Gateways haben Vor- und Nachteile. Paketfilter und Application Level Gateways können sehr gut miteinander kombiniert werden. Dabei kann auch eine demilitarisierte Zone eingerichtet werden, in die dann z.B. der Webserver stationiert werden kann.

Beim Betrieb der Firewall fallen Logfiles an, die besser ausgewertet werden sollten. Daher folgt als nächstes Thema die

Auswertung von Logfiles

Zuerst einmal stellt sich die Frage, welche Daten gespeichert werden sollen. Eine Möglichkeit, die Logfiles zu verarbeiten, ist die automatische Auswertung. Das funktioniert zwar im Allgemeinen ganz gut, trotzdem kommt man ab und zu nicht um eine manuelle Auswertung der Paketfilter-Logfiles herum. Das gilt auch für die HTTP-Proxy-Logfiles. Ein Mensch erkennt manche möglichen Angriffe besser als jede Automatik.

Die Firewall soll den Angreifer aus dem zu schützenden Netz fern halten. Falls doch mal einem ein Eindringen gelingt, muss das erkannt werden. Dazu dienen

Intrusion Detection Systeme (IDS)

Man unterscheidet nach dem Funktionsprinzip zwischen hostbasierten und netzwerkbasierten Systemen, die entsprechend ihren Anforderungen unterschiedlich positioniert werden müssen. Dabei wird auch wieder an den Standort des Webservers (#28) und die DMZ (#36) angeknüpft. Verteilte Systeme sind auf eine interne Kommunikation zwischen den Sensoren und dem Managementsystem angewiesen. Probleme bereiten hochverfügbare Netze. Da das IDS den Angreifer natürlich im Wege ist, ist es selbst Angriffen ausgesetzt. Zu guter Letzt werden einige Beispiele für IDS-Regeln zur Erkennung früher beschriebener Angriffe vorgestellt. Diese werden dann für das Open-Source-Intrusion-Detection-System Snort konkret formuliert.
Soll das IDS Angriffe nicht nur erkennen, sondern auch aktiv abwehren, ist es ein Intrusion Prevention System (IPS).
Um Informationen über Angriffe zu sammeln, werden Honeypots eingesetzt. Ein derartiges System ist Honeyd.

Jetzt ist es Zeit, das Zusammenwirken von Firewall, IDS, IPS und Honeypot zu betrachten. Um die technischen Möglichkeiten sinnvoll einzusetzen, wird ein organisatorisches Konzept benötigt:

Sicherheitsrichtlinien (Security Policy)

Nach einer Beschreibung der Grundlagen folgt als praktisches Beispiel die Entwicklung der Sicherheitsrichtlinie der "Bratkartoffel KG" mit verschiedenen organisatorischen und administrativen Maßnahmen und einer Risikoanalyse.

Um einen ganz anderen Problembereich geht es im folgenden Thema:

Sicherheit von TCP/IP

Die Grundlagen von TCP/IP wurden bereits beschrieben (#29, #30), daher kann es gleich um erste Angriffe darauf gehen: Spoofing. Hilfreich dabei sind Denial-of-Service-Angriffe, die u.a. auch zum Lahmlegen von IDS und IPS genutzt werden können. Weitere mögliche Angriffe sind TCP-Hijacking und ARP-Spoofing. Auch das Domain Name System (DNS) ist angreifbar: Durch DNS-Spoofing.
Weitere mögliche Angriffe sind das Vergiften des DNS-Caches und HTTP-Hijacking. Gefürchtet sind auch Distributed Denial of Service (DDoS-)Angriffe, die meist von Botnets ausgehen. Abschließend werden noch allgemeine Schutzmaßnahmen für TCP/IP und die Erkennung von Systemen anhand ihres TCP/IP- oder HTTP-Fingerprints beschrieben.

About Security: Die komplette Serie

Etwas braucht man im Bereich der IT-Sicherheit immer wieder:

Kryptographie

Dies ist ein sehr umfangreiches Thema, das nur relativ kurz behandelt wird... von #66 bis #82. Klingt ironisch, ist aber nicht so gemeint. Tatsächlich fehlen noch einige eigentlich benötigte Themen, aber würden die alle ausreichend gewürdigt, müsste man die Serie wohl in "About Cryptography" umbenennen. Los geht es mit den Grundlagen und einigen klassischen Verfahren: Substitution, Transposition, polyalphabetische Substitution, Vernam-Chiffre und das einzige beweisbar sichere Verschlüsselungsverfahren, das One-Time-Pad. Die ersten vorgestellten aktuellen Verfahren sind Feistel-Netzwerke. Diese werden z.B. im Data Encryption Standard (DES) eingesetzt. Da DES inzwischen unsicher ist, musste es verbessert werden. DES ist eine Blockchiffre, d.h. es werden immer Blöcke einer bestimmten Größe verarbeitet. Für derartige Chiffren gibt es verschiedene Betriebsarten.
Nach der ganzen Theorie wird es Zeit für ein paar Anwendungsbeispiele für DES. Der offizielle Nachfolger von DES ist der Advanced Encryption Standard AES. Dessen Sicherheit und Anwendung wird näher betrachtet. Alle bisher betrachteten Verfahren waren symmetrische Verfahren: Für Ver- und Entschlüsselung werden die gleichen Schlüssel verwendet. Asymmetrische Verfahren nutzen dafür getrennte Schlüssel, von denen nur einer geheim gehalten werden muss. Ein solches Verfahren ist RSA, das auch als Authentikationssystem oder digitales Signatursystem eingesetzt werden kann. Aus der Kombination von symmetrischen und asymmetrischen Verfahren erhält man hybride Verfahren, die die Vorteile beider Verfahren vereinen.

Ein praktisches Problem der Kryptographie ist die Identitätsprüfung. Dafür gibt es zwei Ansätze: Das Web of Trust, das ohne hierarchische Institutionen auskommt, und hierarchische Zertifizierungssysteme. Als praktisches Beispiel wird der Einsatz von Zertifikaten in SSL/TLS beschrieben, ein Problem, das später wieder vorkommen wird.

Als Beispiel für eine praktische Anwendung der Kryptographie wird wieder die Bratkartoffel KG verwendet. Dabei geht es um Aufbau und Betrieb einer

Public-Key-Infrastruktur (PKI)

Nach der Beschreibung des allgemeinen Aufbaus folgt die Beschreibung der Zertifizierungsstelle (Certificate Authority, CA). Ein erste praktische Anwendung der PKI ist der geschützte Versand von E-Mails mithilfe von S/MIME. Auch sicheres Einloggen mit Single Sign-On ist dank PKI möglich. Der Sicherheit dieses Ansatzes ist ein eigener Text gewidmet.

Ohne Kryptographie ebenfalls unmöglich wäre die sichere Verbindung von Systemen oder Netzen über

Virtuelle Private Netze (VPN)

Nach der Beschreibung der Grundlagen wird eine konkrete Implementierung vorgestellt: IPsec (Fortsetzung). Für den für den Betrieb von IPsec notwendigen Austausch von Schlüsseln wird das Internet Key Exchange Protocol IKEv2 verwendet (1. Fortsetzung, 2. Fortsetzung). Ein Beispiel schließt die Beschreibung von IKEv2 ab, gefolgt von einer anschaulichen Beschreibung von IPsec.
Ein weiteres VPN-Protokoll ist das Point-to-Point Tunneling Protocol PPTP PPTP. Auch auf Grundlage des bereits in #73 sowie #81 und #82 vorgestellten SSL/TLS kann ein VPN aufgebaut werden: Entweder als Clientless TLS-VPN oder als TLS-Tunnel. Ein konkrete Implementierung eines TLS-Tunnels in OpenVPN. Abgeschlossen wird der Thema VPN mit einem Vergleich der vorgestellten VPN-Ansätze.

In der nächsten Folge wird ein schon mehrmals erwähntes Verfahren aus der Kryptographie vorgestellt: der Diffie-Hellmann-Schlüsselaustausch.

Wenn Sie Fragen oder Themenvorschläge haben, können Sie diese gerne an die angegebene E-Mail-Adresse senden oder im Security-Forum einbringen!

Carsten Eilers