Sicherheitstechniken bei der Implementation von Webservern - (im speziellen LAMP)

Aus THM-Wiki
Wechseln zu: Navigation, Suche

LAMP (Linux, Apache, MySQL und PHP) bieten die Basis für einen Großteil der weltweiten Webserver. Laut Netcraft hat im Mai 2006 der Apache-Webserver mit 64.76 % den größten Anteil am weltweiten Webserver-Markt. Ein LAMP-System bietet die Möglichkeit, Webinhalte dynamisch darzustellen und Benutzereingaben über das "Common Gateway Interface" (CGI) zu verarbeiten. Es gibt spezielle LAMP-Distributionen, welche in der Grundinstallation alles mitbringen, was ein LAMP-System braucht, inklusive GDLib zum Verarbeiten von Graphiken, PDF Librarys und vielem mehr.

Übersicht

Definition LAMP

Lizenzmodell

Sämtliche Komponenten eines LAMP Systems unterliegen verschiedenen Open-Source Lizenzmodellen.

OReilly's OnLAMP

Linux

Linux bildet als Open Source Betriebssystem (GPL) die Grundlage für die Server. Es hebt sich unter anderem durch Quelloffenheit, gute Performance, ausgezeichnete Stabilität und einfache Wartung besonders als Betriebssystem und durch die Kompatibilität zu den historisch typischen Serverbetriebssystemen aus der Unix Gruppe im speziellen hervor. Linux ist POSIX Konform.

Apache

Der Apache Webserver ist der weltweit am weitesten verbreitetste und liegt weit vor Microsofts IIS. Er ist auch auf anderen Betriebssystemen lauffähig und hat in der Version 2 eine Optimierung auf Stabilität und Performance erhalten.

MySQL

Als Datenbankserver wird in einer LAMP-Umgebung der MySQL-Server eingesetzt. Dieser unterstützt seit Version 5.0.1 auch Stored Procedures und Trigger und ist damit eine vollwertige Datenbankumgebung für nahezu jeden Bereich. Im LAMP-Umfeld wird davon häufig gebrauch gemacht, z.B. durch Content Management Systeme, Wikis und Foren.

PHP // Perl

Die eingesetzte Scriptsprache ist in der Regel PHP. Entstanden als Sammlung von Perl Wrappern wurde PHP im Laufe der Zeit als Ansammlung von CGIs in der Sprache C neu geschrieben.

BAMP, XAMP, DAMP, etc.

Neben der Linux Implementation der Apache, MySQL und PHP Komponenten gibt es noch viele mehr, von denen hier folgende noch aufgeführt werden sollten:

Sicherheitstechniken

Am Anfang des Sicherungsprozesses steht die Festlegung der Qualitätsziele. Es müssen auf dem Server laufende Dienste spezifiziert werden, sodass die Maßnahmen zur Maximierung der Sicherheit entsprechend umgesetzt werden können.

Folgend werden einige Sicherheitsmerkmale aufgezählt und eine kurze Einführung in deren Wirken gegeben. Zusätzlich sind Links zu dem Thema Sicherheit zu finden.

Allgemeines

Es gibt keine absolute Sicherheit.

Sicherheit ist immer relativ; heute sicher geglaubtes kann morgen durch neue technische Erkenntnisse oder durch neue Hacks oder Audits der Quelltexte als unsicher definiert werden.

Firewall

Eine Firewall dient als Paketfilter und arbeitet auf den OSI Schichten zwei bis sieben. Bei einer Firewall können Pakete nach ihrem Ursprung und ihrem Ziel klar gefiltert werden und somit das Eindringen in nicht-öffentliche Dienste (z.B. ein rein lokal laufendes MySQL, Portbind, RPC, etc.) unterbinden.

In einer kleinen LAMP Umgebung mit einer lokalen Datenbank sollte folgende Port Konfiguration ein guter Ansatz für eine Firewall darstellen:

IPTables

Shorewall

FTP:     Port 21
SSH:     Port 22
HTTP:    Port 80
HTTPS:   Port 443

Natürlich können die Ports umkonfiguriert werden, allerdings lassen sich mit dem Programm NMAP die Daemons hinter den offenen Ports ermitteln.

FTP bietet eine Besonderheit, die den Umgang mit der Firewall erschwert. Der Verbindungsaufbau erfolgt über Port 21. Die eigentliche Datenübertragung erfolgt auf einem anderem, meist zufälligen Port. Die Firewall muss in der Lage sein, zu erkennen, dass eben dieser zufällig verwendete Port zu der gesamten FTP Verbindung dazugehört. Stichwort Connection Tracking.

Weiterhin sei darauf hingewiesen, das in Firmennetzen FTP meist unterbunden wird, und dementsprechend Alternativen wie HTTP genutzt werden müssen.

Das Ändern der TCP Ports des SSH Servers beugt z.B. lästigen Log Einträgen durch Skripte und Würmer welche per Brute-Force Methode Benutzernamen und Passwörter ausprobieren vor. Diese Änderung sollte jedoch nur mit administrativen Diensten gemacht werden.

Da FTP Daten und Passwörter unverschlüsselt überträgt ist nach Möglichkeit sftp (FTP over ssh) einzusetzen. Der entsprechende Port (115) muss in der Firewall freigegeben werden. Eine ausführliche Aufzählung aller Portnummern findet man in Linux Systemen in der Datei /etc/services.

Apache Module

Um den (in der Regel) auf Port 80 und 443 laufenden HTTP Daemon "Apache" zu härten bieten sich folgende Module aus dem Apache Projekt an:

mod_security
Mod Security ist eine Applikation Level Firewall, welche sich vollständig in die Apache Applikation integriert und das HTTP Protokoll versteht. Auf dieser Ebene der Firewall wird direkt mit Regeln in den HTTP Requests gearbeitet. Einzelne TCP Pakete müssen nicht betrachtet werden.
Eine Alternative wäre ein Application Proxy, welcher die Anfragen filtert.
weitere Informationen
CHROOT Umgebung
Apache in einer Chroot Umgebung ablaufen zu lassen bedeutet, dass dem Apache Prozess eine eigene Betriebssystemsumgebung zur Verfügung gestellt wird. Dies verhindert den Zugriff auf Daten, welche an dieser Stelle gar nicht in Erscheinung treten sollten.
Anleitung

MySQL Absicherung

MySQL sollte grundsätzlich in der Standard Konfiguration, MySQL Server ist gleichzeitig Web Server, nur auf die localhost IP Adresse lauschen.

sicheres PHP

PHP bietet verschiedene Möglichkeiten sicher konfiguriert zu werden.

  • Safe Mode:
Safe mode besagt, dass jeder von einem PHP Script benutzte Datei dem gleichen Benutzer im Dateisystem gehört wie das Script. Somit wird der Zugriff des PHP Skripts auf einige wenige Dateien abgegrenze und Systemdateien können nicht einfach manipuliert oder ausgelesen werden.
  • open_basedir:
Dieser Parameter beschränkt PHP Skripte auf bestimmte Verzeichnisse im Dateibaum. Der Parameter arbeitet rekursiv. Verzeichnisse von gemeinsam genutzten Dateien (zB /usr/share/php) müssen hier auch angegeben werden.
  • disable_functions:
Erlaubt dem Administrator einige Funktionen zu deaktivieren, sodass möglicherweise unsichere Funktionen nicht genutzt werden können.
  • display_errors:
Durch die Anzeige von Fehlern können Informationen publik werden, welche besser geheim blieben. Mit display_errors kann dies unterdrückt werden. Wichtig in dem Zusammenhang sind auch die folgenden Parameter.
  • log_errors:
Gibt an, ob Fehler anstelle ausgegeben in eine Log Datei geschrieben werden sollen.
  • error_log:
Gibt die Datei an, in welche die Error Meldungen geschrieben werden sollen.
  • register_globals:
Dieser Parameter ist von entscheidender Wichtigkeit, da er festlegt, ob Umgebungsvariablen, GET und POST Variablen als global gekennzeichnet werden sollen.

Intrusion Detection Systeme

Um Angriffe zu erkennen werden häufig Systeme benutzt, die den Netztwerkverkehr nach definieren Angriffsmustern absuchen, um in Echtzeit über Angriffe zu alamieren, und ggf. Gegenmaßnahmen einzuleiten. Ein beliebtes Opensource Werkzeug ist z. B. Snort.

Snort

Datensicherung

Datensicherung ist eines der wichtigsten Themen im Zusammenhang mit Betriebsservern, da eine absolute Sicherheit nicht erreichbar ist. Neben verschiedenen Möglichkeiten wie einem Hard- oder Software RAID System (Nachteil: Bei einem erfolgtem Angriff sind die Daten und das System nicht mehr vertrauenswürdig) und redundanten Netzteilen gehört auch der Notfall- und Katastrophenplan (IT Grundschutzhandbuch) zu den notwendigen Kriterien, die zu einem sicheren Serversystem gehören.

Disk Imaging Software

Um das Betriebssystem nach einem Angriff möglichst schnell wieder einsatzbereit zu haben, ohne eine Neuinstallation mit entsprechenden Risiken (Absichern der Dienste vergessen, etc.) unnötig zu machen bietet sich eine Software zum Erstellen von Abbildern der Partitionen. Grundsätzlich sollte diese Software folgende Anforderungen unterstützen:

  • Erstellung von Abbildern einzelner Partitionen
  • inkrementelle und vollständige Abbilder erstellen
  • Verschlüsselung des Abbildes
  • Komprimierung des Abbildes
  • Prüfsumme
  • Passwortschutz des Archivs
  • Sicherung auf verschiedene Medien, z.B. Streamer, DVD, REV, UDO...
  • Veränderung der Partitionsgröße beim Rückspielen der Sicherung
  • Unterstützung unterschiedlicher Partitions- und Dateisysteme

Es gibt Produkte zum Disk Imaging sowohl Open-Source, wie auch kommerziell. Auf der Serverplattform (sowohl Windows, wie auch Linux) hat sich als kommerzielle Applikation "Acronis True Image Server" etabliert, welches live Images aus laufenden Systemen und die Erstellung spezieller Boot Medien (mit angepassten Treibern, z.B. für SCSI, S-ATA, etc.), sowie die oben genannten Punkte unterstützt.

Als Open Source Lösung soll hier die ebenfalls sehr komfortable wie funktionale Lösung "partimage" stehen. Diese Applikation ist Server- Client basiert und benötigt somit noch einen weiteren Server im lokalen Netzwerk. Dieser Server bekommt die Daten durch eine Client Applikation übertragen und speichert diese auf verschiedene Arten. Partimage unterstützt verschiedene Partitionsformate für Linux, wie auch für Windows.

Im Notfall kann so eine Boot oder Rescue CD genutzt werden um die defekte Partition wiederherzustellen. Dazu sollte gesagt sein, dass ein angepaßter Kernel die Option der Hardware Flexibilität nimmt und somit auch die Flexibilität bei der Wiederherstellung.

Auch einige unter "Backup Software" aufgezählten Anwendungen bieten eine ähnliche Funktionalität (z.B. Mondo)

Rescue CD

Eine Rescue CD hilft bei verschiedenen Problemen um auf Daten Zugriff zu bekommen, selbst wenn das installierte und konfigurierte Betriebssystem des Servers nicht startet. Mit möglichst vielen Werkzeugen bietet eine Rescue CD eine komplette Arbeitsumgebung um defekte Dateien wiederherzustellen oder um Partitionsabbilder zu erstellen.

Download

Backup Software

Selbst der sicherste Server benötigt ein individuell gestaltetes Datensicherungskonzept. Beispiele und Vorschläge sind im IT Grundschutzhandbuch des BSI zu finden. Um die Datensicherung durchzuführen und zu planen bietet sich folgende Auswahl an:

Betriebssystemeigene Backup Funktionen

Speziell im Fall Linux ist es möglich ein Backup der Festplatte, Partition, oder der Nutzdaten mit Standardkommandos zu erstellen. Weiterhin lässt sich das Backup ebenso mit Standardfunktionen komprimieren, oder verschlüsseln. Ein weiter Vorteil dieses Weges ist die einfach Wiederherstellung mittels Rescue-CD .

dd überträgt Daten zwischen verschiedenen Speichermedien und führt dabei auf Wunsch eine Kovertierung der Daten durch.

tar erzeugt Archivdateien, eigent sich speziell für Backups auf Bandstreamer, funktioniert auf Wunsch inkrementell und unterstützt Device Nodes (/dev).

cpio kopiert Dateien von und in Archive.

In Windows ist ebenfalls ein Backupmechanismus eingebaut, der vom Taskplaner automatisiert werden kann. Dieser kann sogar im laufenden Betrieb von Microsoft Exchange ein Backup erstellen.

Monitoring

Ein Server erbringt Leistungen in Netzwerken. Diese Leistungen können auf verschiedene Weise beeinflußt werden. Um Änderungen an den Leistungen des Servers oder dessen kritischen Parameter zu überwachen und automatisiert auszuwerten und bei entsprechenden Funktionsstörungen oder Warnungen per eMail oder einem anderen Kommunikationssystem informiert zu werden gibt es die Software Nagios.

Plugins können lokal oder remote ausgeführt werden. Somit lassen sich netzweit Server, Router, (managed) Switches und so weiter kontrollieren.

Resourcen

Nagios bietet die Möglichkeit Festplattenkapazitäten, Speicherauslastungen, System Load, den Zustand der Hardware und vieles mehr zu überwachen.

Sogenannte "Services" sind mit Plugins zu überwachen.

Dienste

Die Server Applikationen können auf unterschiedliche Arten überwacht werden. Von der Erreichbarkeit der TCP Ports über einen Test der laufenden Prozesse bis zu Auswertungen auf die Reaktion von z.B. HTTP Requests. (Überprüfung auf korrekte HTML Antwort Seiten).

Erweiterungen / Plugins

Das Monitoring kann beliebig durch Perl Skripte, C Anwendungen oder jede beliebige andere Programmiersprache erweitert werden. Somit ist jede Applikation, jedes Feature und jede Hardware überwachbar. Für viele Anwendungen gibt es mitgelieferte Plugins.

Benachrichtigung

Mitteilungen können via eMail, Pager oder SMS gesendet werden. Andere Kommunkationssysteme können mittels Erweiterungen hinzugefügt werden.

Tips

Ein Server ist niemals sicher. Allerdings kann man es Eindringlingen einfach oder schwer machen. Man kann den Notfall möglichst gut planen und auch üben (hierzu lohnt sich ein Blick in das schon erwähnte IT Grundschutz Handbuchdes BSI).

Aktuelle Sicherheitspatches und Updates sind genau so wichtig wie eine regelmäßige Durchsicht der Log Dateien.