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
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