05.02.2013 Aufrufe

Firewall Handbuch für LINUX 2.0 und 2.2 - zurück

Firewall Handbuch für LINUX 2.0 und 2.2 - zurück

Firewall Handbuch für LINUX 2.0 und 2.2 - zurück

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

installieren, welche alle Ports außer dem Port 80 sperren würde. Da häufig Formulare an<br />

ein PERL - Skript Daten aus der HTML Seite übergeben, muß also der Datenstrom<br />

zwischen Browser <strong>und</strong> Server mit Hilfe von z.B. des DELEGATE Filters (welcher auch<br />

einige Sicherheitsprobleme hat) gefiltert werden, sodaß alle Befehle, die Informationen an<br />

das PERL Skript eines WWW - Servers übergeben (POST/PUT), herausgefiltert werden,<br />

oder auf problematische Inhalte hin untersucht werden.<br />

Es ist jedoch äußerst schwierig, festzustellen, welche Parameter <strong>für</strong> ein CGI-Skript oder<br />

einen Server - Dämon eine Gefahr darstellen. Daher ist es sinnvoll, alles zu filtern, was<br />

nicht ausdrücklich funktionell erforderlich ist, <strong>und</strong> von vorne herein den Server so zu<br />

konfigurieren, daß ein Angreifer nur minimalen Schaden anrichten kann. Hierzu ist es<br />

notwendig, alle Zugriffsrechte auf das Betriebssystem weitestgehend zu begrenzen. Unter<br />

UNIX ist dies dank der Modularität <strong>und</strong> der Unabhängigkeit der Serverdämonen möglich,<br />

unter Windows NT hingegen nicht.<br />

Da PERL zu den wichtigsten (neben PHP) serverseitigen Skriptsprachen gehört, hier also<br />

eine Art Checkliste <strong>für</strong> UNIX (unter NT ist diese völlig wertlos !!!). PERL gehört aufgr<strong>und</strong><br />

des TAINT Mechanismus, der Variablen als verdorben kennzeichnet, zu den sichersten<br />

Programmiersprachen überhaupt. Genau deswegen betreiben große Internet Sites alle<br />

serverseitigen Funktionen unter PERL (Yahoo, HOTMAIL (gehört zu Microsoft), Siemens,<br />

Deutsche Bank, INFOSEEK, LYCOS ...)...<br />

30.1 Allgemeine Tips<br />

1. Bei jeder Anwendung, deren Ausführung besondere Privilegien benötigt, muß<br />

strengstens auf Sicherheit geachtet werden.<br />

2. Das betrifft Skripte, die mit einem S-Bit (SUID) ausgestattet sind (das heißt<br />

sie laufen unter UNIX mit anderen Privilegien als denen des Aufrufers), <strong>und</strong><br />

es gilt in ganz besonderem Maße <strong>für</strong> Netzdienste, da sie <strong>für</strong> jeden aus dem<br />

Internet zugreifenden Client (Browser) einen möglichen Angriffspunkt<br />

darstellen.<br />

3. Neben den üblichen Techniken zur Vermeidung von Programmierfehlern (`-w''<br />

auf der Kommandozeile <strong>und</strong> use strict), gibt es hier<strong>für</strong> noch eine weitere<br />

wertvolle Unterstützung: den Taint Modus, der entweder automatisch<br />

eingeschaltet wird (bei Skripten mit S-Bit) oder auch explizit gewünscht<br />

werden kann (Option -T in der ersten Zeile eines Skriptes).<br />

4. Aber dies allein reicht nicht, da es noch weitere Angriffspunkte gibt, die nicht<br />

automatisch durch -T verhindert werden können.<br />

30.2 Typische Schwachstellen bei PERL Skripten<br />

1. Die Ausführung externer Kommandos (sei es durch system() oder auch ganz<br />

einfach bei einer Pipeline mit open()) ist gr<strong>und</strong>sätzlich sehr gefährlich, wenn<br />

eine Angreifer auf die Übergabeparameter Einfluß nehmen kann.<br />

2. Wenn bei auszuführenden Kommandos kein absoluter Pfadname angegeben<br />

wird, kann es "Überraschungen" durch eine manipulierte Umgebungsvariable<br />

PATH, IFS ... geben oder durch vorgeschobene Kommandos eines<br />

Angreifers, die weiter vorne im Pfad vor dem eigentlich gewünschten<br />

Kommando liegen.<br />

3. Sowohl bei open() als auch bei system() sind beliebige Shell-Metazeichen<br />

zugelassen. Wenn eine Einflüßmöglichkeit auf die Zeichenkette existiert, die<br />

der Shell übermittelt wird, ist es damit leicht möglich, ein Kommando des<br />

Angreifers anzuhängen, z.B. ; rm -rf /, welches die Festplatte löscht.....<br />

4. Die Shell trennt Kommandozeilen auf Basis der Umgebungsvariablen IFS auf.<br />

Wenn die z.B. auf den Schrägstrich gesetzt wird, dann wird aus einem<br />

absoluten Kommandonamen beispielsweise unerwartet das Kommando usr.<br />

Erstellt von Doc Gonzo - http://kickme.to/plugins

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!