gulli: server

Die Sicherheit von Webservern



Vorwort

Diese Facharbeit beschäftigt sich mit dem Herzstück eines Netzwerkes, dem Webserver - die Maschine, welche mit der Außenwelt kommuniziert. Die Frage von Sicherheit ist besonders wichtig, denn über diesen Kanal können Daten in jeder nur denkbaren Form infiltriert werden.

Doch selten wurde ein Thema so sehr von Halbwahrheiten und Panikmache durch die Medien geprägt, wie die (Un-)Sicherheit in der Informationstechnologie! In großen Lettern werden Script Kids profiliert, täglich wird ein neues Sicherheitsloch entdeckt und Kontroversen um den "guten" Hacker und den "bösen" Cracker runden dieses Chaos ab.

Es ist erstaunlich, dass immer wieder Webseiten gehackt werden - obwohl doch heutzutage jede Standard- Linux Distribution über ein umfangreiches Sicherheitsangebot verfügt. Anscheinend genügt es nicht sein Netzwerk durch eine Firewall vom Rest des Internets abzuschotten, einen Paketfilter zu installieren oder gar ein "Network Intrusion Detection" Programm laufen zu lassen...

Ich möchte dazu beitragen, dass Sicherheitslücken erkannt und beseitigt werden, denn Angriffe auf Webserver sind kein unkalkulierbares Risiko. Sie basieren oft auf Unwissenheit der verantwortlichen Personen. Deshalb richtet sich diese Arbeit ausschließlich an Administratoren und Programmierer mit einem entsprechenden Grundwissen, welches im Kapitel I nur kurz angesprochen wird. Der allgemeine Benutzer von Netzwerken ist davon nicht unbedingt betroffen, er muss sich auf die professionelle Arbeit seiner Fachkräfte verlassen können.

 

 

I. Einführung

TCP/IP Schichtenmodell Das gesamte Internet basiert auf dem vierteiligen TCP/IP Schichtenmodell. Das "Transmission Control Protocol" und das "Internet Protocol" ergänzen sich und werden fast immer zusammen genannt.

Die erste und "unterste" Schicht ist die Netzwerkschicht. Sie regelt den Transport von einem Netzgerät zum nächsten. Je nach verwendetem physikalischem Medium hat sie unterschiedliche Protokolle. Mögliche Protokolle sind zum Beispiel Ethernet, ISDN oder xDSL.

Die zweite Schicht ist die Internetschicht.
Diese ist der kleinste gemeinsame Nenner des Internets. Hier findet sich das verbindungs- und sicherungslose IP-Protokoll - zum Abschicken von Daten-Paketen, das ARP ("Address Resolution Protokoll") - zum Auslösen von IP-Adressen und das Fehlerprotokoll ICMP ("Internet Control Message Protocoll").
In dieser Schicht bekommt jeder Teilnehmer (Host) eines Netzwerkes ein unikate IP-Adresse, welche ihn eindeutig identifiziert. (Beispiel: 192.168.6.1)
Das aktuelle Internetprotokoll ist IPv4. Aufgrund einiger Probleme, etwa der zu kleine Adressraum, geht der Trend langsam zu IPv6 hin.

Die dritte Schicht ist die Transportschicht.
Sie ist der Lieferservice zwischen den beiden Partnern einer Kommunikation. Hier werden große Datenblöcke von Programmen in kleine Segmente (IP-Pakete) geteilt.
Das TCP-Protokoll kontrolliert die logische Kommunikation und überwacht die korrekte Reihenfolge der Segmente. Es baut virtuelle Verbindungen auf und sorgt für Empfangsbestätigungen.
Hier wird sichergestellt, dass die Gegenstelle die exakt selben Daten bekommt.
Der "kleine Bruder" des TCP ist das UDP ("User Datagram Protocol"). Dieses verbindungslose Protokoll arbeitet ohne Empfangsbestätigung. Es ist bedeutend schneller und wird beispielsweise in vielen Multimediaanwendungen (Filme, Musik) genutzt.

Die vierte und "oberste" Schicht ist die Anwendungsschicht. Auf dieser Ebene kommunizieren die einzelnen Anwendungen im Internet miteinander. Fast alle von ihnen besitzen dabei ein eigenes Protokoll, welches die vierte Schicht darstellt. Damit auf einem Rechner mehrere Anwendungen parallel arbeiten können, wirken hier so genannte Port-Nummern. Sie werden an die IP-Adresse gehängt. (Beispiel: 192.168.6.1:23) Jedes Dienst-Programm "horcht" deshalb nur auf seinen Port.

Ein Webserver arbeitet standardmäßig auf dem Port 80 und mit TCP.
Auf Port 80 benutzt man das "Hypertext Transfer Protocol" (HTTP). Es ermöglicht den Austausch von Webseiten im Internet.
Das World Wide Web ist das Konzept zur Informationsverteilung und stellt in seiner Gesamtheit den fiktiven Verbund von vielen Webservern des Internets dar. Das Internet gab es schon lange vor dem WWW, nur schaffte es zweifellos seinen Durchbruch erst dank HTTP und der Auszeichnungssprache HTML, den beiden Pfeilern des WWW's.

Das HTTP-Protokoll funktioniert nur in eine Richtung. Ein Client (Browser) verbindet mit dem Webserver und startet einem HTTP-Request. Daraufhin antwortet der Webserver mit einem HTTP-Response und schließt die Verbindung wieder.
Der Client kann Dokumente (GET Methode) oder nur Dokument-Informationen (HEAD Methode) anfordern. Auch variable Informationen, wie etwa Formulareingaben können übergeben werden (POST Methode). Andere mögliche Methoden werden heutzutage praktisch nicht genutzt.

Die Erwartungshaltung an das heutige WWW sind derartig komplex, dass der bloße Austausch von Dokumenten nicht mehr zeitgemäß erscheint.
So sind Programme erforderlich, die Webseiten für den Besucher automatisch generieren. Das CGI (Common Gateway Interface) ist eine für diesen Zweck geschaffene Schnittstelle, um Programme durch den Webserver auszuführen.

Der Mechanismus hinter der CGI-Schnittstelle ist relativ einfach.
Der Client ruft ein Dokument per GET oder POST auf, welches sich in einem Verzeichnis des Webservers befindet. Der Webserver erkennt, dass es sich um ein ausführbares Programm handelt und führt dieses aus. Zusätzliche erhält das Programm wichtige Informationen über den Clienten in Form von CGI-Umgebungsvariablen.
Die Ausgaben des Programms leitet der Webserver wie ein normales Dokument an den Clienten zurück.

Hauptsächlich werden dafür so genannte Scripts benutzt. Scripts sind Textdateien mit Befehlen, die ein Interpreter kompiliert (in Maschinencode übersetzt). Jeder Interpreter erwartet dabei seinen individuellen Syntax - die spezifische Sprache. Man spricht daher auch von Scriptsprachen.

Aufgrund mangelhafter Performance der CGI-Schnittstelle, besteht außerdem die Möglichkeit, den Interpreter durch Module direkt in den Webserver zu integrieren.

Eine Scriptsprache allein reicht für eine professionelle Umgebung nicht aus. Alle inhaltlichen Informationen werden zentral in einer Datenbank gespeichert. Relationale Datenbanken (RDBMS) sind Systeme, die ihre Daten in Tabellen strukturieren und die Möglichkeit von Verknüpfungen (Relationen) zwischen den Tabellen bieten. Ein Gegensatz zu diesen alteingesessen und dominierenden Datenbanken sind objektorientierte Datenbanksysteme (OODBS), welche sich bis heute nicht durchsetzen konnten.

 

 

Seite 1 von 51 2 3 4 5 zur nächsten Seite zur letzten Seite

Suche

ANZEIGE

RSS

AKTION

Wir haben bezahlt!

Napping

Das Beste von gulli auch auf deiner Seite?
Newsfeed abonnieren  news feed
Suche auf deiner Seite  suchbox
Banner und Buttons  banner & buttons

Support

Rettet das Internet

Piratenpartei Österreich

Piratenpartei Deutschland

© COPYRIGHT 2007 GULLI.COM