Konzeption Projekt Realisierung eines Webservers E2FI4 Verfasst von: Bertwin Mann, Mike Essig, Steffen Jahr und Alexander Martin [02 November 07] INHALTSVERZEICHNIS 1. ANFORDERUNG ............................................................................................................ 2 2. AUFGABENVERTEILUNG ................................................................................................... 2 3. SERVER-ANFORDERUNGEN ............................................................................................... 3 4. BETRIEBSSYSTEM (OPERATION SYSTEM) ................................................................................ 3 5. WEBSERVER (APACHE) ................................................................................................... 3 6. SSL VERSCHLÜSSELUNG................................................................................................... 4 7. PHP UNTERSTÜTZUNG ................................................................................................... 4 8. DATENBANK (MYSQL).................................................................................................... 6 1 1. ANFORDERUNG Angeboten werden soll ein Root-Server der später als Plattform für eine Online-Applikation dient, hierbei ist zu beachten, dass mit circa 2 Millionen Zugriffe pro Tag zu rechnen sind die durch den Root-Server zu bewältigen sind. Der Root-Server ist durch die Firma BMSA zu installieren und warten. Der Root-Server wird später im Rechenzentrum von 1&1 Karlsruhe implementiert und betrieben, wodurch eine Verfügbarkeit von 99,9% p.a. gewährleistet wird. Weiterhin werden folgende technische Anforderungen an den Root-Server gestellt. Betriebssystem Linux SSL Unterstützung FTP Zugänge Benötigte Applikationen o Webserver (Apache) o PHP o MySQL Datenbank 2. AUFGABENVERTEILUNG Aufgabe Arbeitszeit (geschätzt) Realisierungsdatum Betreuer Installation Grundsystem + benötigte Applikationen inklusive Konfiguration 2 MT 19.11.2007 Herrn Bertwin Mann Integration SSL 1 MT 26.11.2007 Herrn Mike Essig Integration PHP Unterstützung 1 MT 03.12.2007 Herrn Steffen Jahr Installation Datenbank 1 MT 03.12.2007 Herrn Alexander Martin Präsentation Projekt - 17.12.2007 Herrn Bertwin Mann, Herrn Mike Essig, Herrn Steffen Jahr und Herrn Alexander Martin Wir behalten uns vor eine Abweichung von circa 1 - 2 Arbeitstage von den veranschlagten 5 MT explizit in Rechnung zu stellen falls kundenseitige Änderungen im Rahmen der Umsetzungsphase erfolgen. 2 3. SERVER-ANFORDERUNGEN Anforderungen an den Root-Server: Ausfallsicherheit (Strom / Netzwerk) Datensicherheit und Performance Hochleistungs-Datenbankanwendungen Wartungsfreundlich Onlineverfügbarkeit Der Root-Server wird komplett datenredundant, netzwerkredundant sowie stromredundant ausgelegt. Er ist für Hochleistungs-Datenbankanwendungen konzipiert und besitzt ein Höchstmaß an Effizienz. Nachträgliche Erweiterungen des Hauptspeichers ist durch das Hotplug Prinzip im laufenden Betrieb möglich. Technische Daten des Servers: Dual-Core 4-HE-Rackserver mit 4 Sockets Bis zu 4 Intel® Xeon® Dual-Core 7100-Serie Prozessoren Bis zu 64 GB ECC DDR-2 SDRAM Bis zu 1500 GB maximaler interner Festplattenspeicher Im Rechenzentrum wird der Server zusätzlich an eine USV Anlage angeschlossen, um somit eine höhere Ausfallsicherheit zu gewährleisten. Die Netzwerk beziehungsweise Onlineverfügbarkeit beträgt 99,9% p.a. (Dieser Wert ergibt sich aus dem gewählten Rechenzentrum) 4. BETRIEBSSYSTEM (LINUX, UBUNTU) Der spätere Root-Server wird später mit der Linux Distribution Ubuntu 6.06 LTS (Long Term Support) betrieben, durch dieses Betriebssystem fallen keine weiteren kosten an, der Erwerb eine Lizenz ist nicht nötig. Von Seiten des Herstellers werden Updates bis 2011 bereitgestellt somit können mögliche Sicherheitsrisiken beseitigt werden. 5. WEBSERVER (APACHE) Um den Root-Server und auch die darauf installierte Kunden-Applikation zu einem späteren Zeitpunkt über das World Wide Web erreichen zu können, wird die Anwendung Apache installiert und dient als Webserver. Apache ist der meistbenutzte Webserver, er ist für viele Betriebssysteme erhältlich, der Webserver ist modular aufgebaut wodurch er zu jederzeit ohne größeren Aufwand durch Module 3 erweiterbar ist. Der Webserver wird die Standardports 80 für http und 443 für https (SSL) belegen. Aus Sicherheitsgründen bleiben sind dieses die einzigsten öffentlich erreichbaren Ports. Die Anmeldung am Root-Server erfolgt stehts über eine gesicherte SSL Verbindung. 6. SSL VERSCHLÜSSELUNG SSL arbeitet transparent, so dass es leicht eingesetzt werden kann, um Protokollen ohne eigene Sicherheitsmechanismen abgesicherte Verbindungen zur Verfügung zu stellen. Ende-zu-EndeVerschlüsselung mittels symmetrischer Algorithmen und Sicherung der Nachrichten-Integrität und Authentizität durch Bildung einer kryptografischen Prüfsumme sind die Kernaufgaben des SSL. Entrust Thawte Versign Preis 899 $ / Jahr 899 $ / Jahr 995 $ / Jahr Typ Root Root Root Ausstellung sofort sofort max. nach 2 Tagen Validierung Dokumente Email, Robot Dokumente Zertifiziert Domaininhaber, Domaininhaber Domaininhaber, Identität Identität V ERGLEICH 1: V ERSCHIEDENE SSL-A USSTELLER Nach einem näheren Vergleich verschiedener SSL-Aussteller, haben wir uns für ein Zertifikat der Firma Verisign entschieden. . Das SSL-Zertifikat von Verisign bietet eine 256-Bit-Verschlüsselung, welche heute den neuesten Standards entspricht. Dieses Zertifikat bietet Unterstützung vieler aktueller Browser, sowie eine hohe Haftungssumme (100.000$) bei Schäden die durch Sicherheitslöcher des Zertifikates entstanden sind. Durch die hohe Belastung des Servers die zu erwarten ist, sind wir mit diesem Zertifikat ausreichend abgesichert. 7. PHP UNTERSTÜTZUNG Die Kunden-Applikation wurde mittels der Programmiersprache PHP realisiert. Die Implementierung der PHP Unterstützung kann über zwei verschiedene Arten ermöglicht werden, beide Varianten haben sowohl Vor- als auch Nachteile welche nachstehend etwas genauer erläutert werden. Implementierung Apache Modul „mod_php” Das Apache Modul hat den Nachteil, das es für alle Benutzer nur einen Prozess anstarten. Dies bedeutet, dass es nicht möglich ist verschiedenen Benutzern verschiedene PHP-Konfigurationen zu geben. Allerdings hatte diese Einbindung von PHP den Vorteil, das Anfragen schneller bearbeitet werden können, da nur ein Prozess überprüft weden muss. 4 Implementierng über die PHP CGI Schnittstelle Für die Einbindung von PHP per CGI spricht, dass man pro Benutzer eine PHP-Konfiguration vergeben kann. Allerdings wird auch für jeden Benutzer ein eigener Prozess angestartet, was bedeutet, dass diese Einbindung deutlich mehr Resourcen benötigt als die Einbindung per Modul. Die CGI-Anbindung wird meist auf Servern genutzt auf die mehrere Benutzer Zugriff haben. Wir entscheiden uns für den Apache Modulmod, da wir pro Server nur einen Benutzer haben und daher keine geteilte Rechtevergabe benötigen. PH P- S i che rh e it s e in st el lung en Um absolute Sicherheit bei Ihren PHP-Anwendungen zu gewährleisten werden verschiedene Sicherheitseinstellungen an ihrem Webserver vorgenommen: 1. allow_url_fopen() = off Mit dem Abschalten dieser Funktion wird das Öffnen von Dateien Verbietet das öffnen von Dateien auf anderen Servern. Keine Ausführung externer Scripte 2. allow_url_include() = off Verbietet das einbinden von Dateien die auf einem anderen Server liegen. Daher können keine externen Scripte ausgeführt werden. 3. display_errors = off Um zu verhindern das Benutzer ungewünschte Fehlermeldungen von PHP sehen und dadurch eventuelle Schwachstellen ausnutzen wird diese Funktion abgeschaltet. 4. open_basedir = Pfad auf Webverzeichniss Durch Setzen dieses Pfades wird verhindert, dass Dateioperationen auf ein übergeordnetes Verzeichniss angewendet werden kann. Diese Einstellung dient weniger dem Benutzer, als der Sicherheit des Servers. 5. register_globals = off Die Einstellung register_globals steuert ob URL oder POST Variablen global deklariert werden oder nicht. Da sich viele Angriffe eines PHP-Skriptes auf diese Schwachstelle richten, ist es ratsam diese Einstellung abzuschalten. 6. safe_mod = on Deaktiviert zahlreiche Sicherheitslöcher die im Laufe der Jahre in PHP implementiert worden sind. Ausführliche Liste unter http://www.php.net/manual/de/features.safe-mode.php 7. disable_functions = Funktionen die deaktiviert werden sollen (exec,system,passthru,shell_exec,popen,escapeshellcmd,proc_open,proc_nice,ini_restore) Mit dieser Einstellung werden Befehle deaktiviert mit der ein Benutzer per PHP Befehle auf dem System ausführen könnte. Wird aktiviert um unbefugten Zugang zu unterbinden. 5 Die Implementierung auf dem Root-Server erfolgt über das Apache Modul da keine Mehrfachbenutzung in Aussicht steht. 8. DATENBANK (MYSQL) Die Enterprise-Edition der Open-Source Datenbank ist im Gegensatz zur kostenlosen Community Edition auf Unternehmen egal welcher Größe spezialisiert, durch die Zuverlässigkeit und Sicherheit ist sie somit perfekt geeignet für geschäftskritische Anwendungen. Als Gold beziehungsweise Platinum Kunde steht Ihnen ein qualifiziertes Support Team 24 Stunden 7 Tage die Woche zur Verfügung. In wichtigen Fehler-Fällen können spezielle Hotfixes maßgeschneidert für die eigene Applikation angefordert werden welche binnen 3 Stunden zur Verfügung stehen. Die Open-Source Datenbank informiert über verfügbare Updates, hinzu kommen technische Warnhinweise, sowie monatliche Updates und vierteljährliche Service-Packs. Der MySQL Enterprise-Server steht für über 10 verschiedene Plattformen bereit, ausgeliefert wird dieser mit zahlreichen Tools und Utilities zum administrieren und warten der angelegten Datenbanken. Mitgelieferte Administrations- und Wartungstools MySQL Migration Toolkit Mit Hilfe des Toolkit können über einen Assistenten bestende Datenbanken auf MySQL migriert werden. MySQL Administrator Mittels eine graphischen Verwaltsungskonsole können Sie auf einfache Weise die MySQL Umgebung verwalten, die Oberfläche bietet einen Überblick über den Status der bestehenden Datenbanken. Der MySQL Administrator ermöglicht die Wartung und Administration einer Datenbank mittels einer klar strukturierten und intuitiv bedienbarer Oberfläche. MySQL Query Browser Der Query Browser dient als Werkzeug zum erstellen, ausführen und optimieren von SQL-Statements (Abfragen), mittels Drag-and-Drop Verfahren können Abfragen visualisiert erstellt, analysiert und verwaltet werden. MySQL Workbench Die MySQL Workbench kann als Werkzeug zur Datenbankgestaltung eingesetzt werden, es ermöglicht die Konzeption und Erstellung neuer Datenbankschematas auch können Dokumentationen zu bestehenden Datenbanken erstellt werden ebenfalls sind komplexe Migrationen auf MySQL möglich. 6