Get Shared Hosting und Sorgen um die Sicherheit? Hier ist was Sie wissen müssen
Shared Hosting. Es ist die billige Option, nicht wahr? Und für einen großen Teil der Bevölkerung ist dies alles, was sie jemals brauchen werden, um ihre Website oder Webanwendung zu hosten. Shared Hosting ist gut skalierbar, schnell und sicher.
Aber was passiert, wenn es nicht gut gemacht wird?
Nun, da beginnen sich gefährliche Sicherheitsprobleme einzuschleichen. Dann besteht die Gefahr, dass Ihre Website unkenntlich gemacht wird oder die privaten Daten, von denen Sie wissen, dass sie durchgesickert werden. Aber mach dir keine Sorgen. Die große Mehrheit der Web-Hosts verfügt über angemessene Sicherheitsmaßnahmen. Es sind nur die fliegenden, billigen Kellner, bei denen Sie vorsichtig sein müssen.
Wir empfehlen das Shared Hosting von InMotion Hosting mit SSD-Speicher.
Wir werden die Sicherheitsprobleme rund um Shared Hosting untersuchen. Lassen Sie uns zuerst darüber sprechen, was eine Shared-Hosting-Plattform sicher macht.
Was macht einen sicheren Webhost aus?
In Bezug auf Shared Hosting sollten einige herausragende Sicherheitsaspekte beachtet werden.
- Jeder Benutzer auf dem Server sollte von anderen Benutzern isoliert sein und darf nicht auf die Dateien anderer Benutzer zugreifen oder sie ändern können.
- Eine Sicherheitslücke in der Logik einer auf dem Server gehosteten Website sollte sich nicht auf andere Benutzer auswirken.
- Der Server wird regelmäßig gepatcht, aktualisiert und überwacht, um architektonische Sicherheitsprobleme zu beheben.
- Jeder Benutzer sollte über einen eigenen isolierten Datenbankzugriff verfügen und darf keine Änderungen an den gespeicherten Datensätzen oder Tabellenberechtigungen anderer Benutzer vornehmen.
Auch hier erfüllen die meisten Web-Hosts diese Anforderungen für ihre gemeinsamen Angebote. Wenn Sie jedoch mehrere Websites auf einem Server hosten möchten oder neugierig sind, wie Ihr Hosting-Unternehmen sich stapelt, oder sogar daran denken, ein eigenes Hosting-Unternehmen zu gründen, und darüber nachdenken möchten, wie Sie Ihre Benutzer schützen können, lesen Sie es bitte auf.
Aber zuerst ein Haftungsausschluss
Bevor wir uns mit den gängigen Angriffen auf Shared Hosting beschäftigen, möchte ich nur sagen, dass dieser Beitrag keine erschöpfende Liste potenzieller Sicherheitsprobleme darstellt (und nicht als solche gelesen werden sollte).
Sicherheit ist kurz gesagt groß. Es gibt viele Möglichkeiten, wie Sie eine Site gefährden können. Dies gilt für Shared Hosting doppelt. Sie in einem einzigen Artikel zu behandeln, war nie vorgezeichnet.
Wenn Sie bezüglich Ihrer Sicherheit paranoid sind, besorgen Sie sich einen VPS oder einen dedizierten Server. Dies sind Umgebungen, in denen Sie (meistens) die absolute Kontrolle darüber haben, was passiert. Wenn Sie nicht sicher sind, welche Arten von Web-Hosting Sie haben, lesen Sie diesen Beitrag. Die verschiedenen Formen des Website-Hosting erklärt [Technologie erklärt] Die verschiedenen Formen des Website-Hosting erläutert [Technologie erklärt] Lesen Sie mehr von meinem Kollegen James Bruce.
Ich sollte auch betonen, dass dieser Beitrag nicht als Angriff auf Shared Hosting ausgelegt werden sollte. Es handelt sich vielmehr um einen rein akademischen Blick auf die Sicherheitsprobleme dieser Kategorie von Webhosting.
Directory Traversal
Beginnen wir mit Directory Traversal-Angriffen (oft auch als "Path Traversal" bezeichnet). Mit dieser Art von Angriff können Sie auf Dateien und Verzeichnisse zugreifen, die außerhalb des Webstamms gespeichert sind.
In reinem Englisch? Nehmen wir an, Alice und Bob verwenden den gleichen Server, um ihre Websites zu hosten. Alices Dateien werden in / var / www / alice gespeichert, während Bobs Dokumente in / var / www / bob zu finden sind. Nehmen wir außerdem an, dass sich auf dem Server ein weiterer Ordner (/ usr / crappyhosting / myfolder) befindet, der eine unverschlüsselte Klartextdatei (wir nennen es pwd.txt) enthält, die Benutzernamen und Kennwörter des Systems enthält.
Bei mir soweit? Gut. Stellen wir uns vor, dass Bobs Website lokal erzeugte PDF-Dateien bereitstellt und die lokale Datei in der URL referenziert wird. So etwas wie:
http://example.com/file?=report.pdf
Was würde passieren, wenn ich 'report.pdf' durch einige UNIX-Parameter ersetzt, die das Verzeichnis ändern?
http://example.com/file?=… / alice /
Wenn der Server falsch konfiguriert ist, können Sie dann das Dokumentstammverzeichnis von Alice sehen. Interessant, aber wir interessieren uns viel mehr für diese saftige Passdatei. Accio-Passwörter!
http://example.com/file?=… /… /… /usr/crappyhosting/myfolder/pwd.txt
So einfach ist das wirklich. Aber wie gehen wir damit um? Das ist einfach.
Hören Sie immer von einem wenig bekannten Linux-Dienstprogramm namens Chroot? Sie haben wahrscheinlich bereits erraten, was es bewirkt. Dadurch wird das Linux / UNIX-Stammverzeichnis auf einen beliebigen Ordner festgelegt, sodass Benutzer es nicht beenden können. Es stoppt effektiv Verzeichnisdurchquerungsangriffe in ihren Spuren.
Es ist schwer zu sagen, ob Ihr Gastgeber dies hat, ohne gegen das Gesetz zu verstoßen. Zum Testen würden Sie schließlich auf Systeme und Dateien zugreifen, auf die Sie nicht zugreifen dürfen. Vor diesem Hintergrund ist es möglicherweise sinnvoll, mit Ihrem Webhost zu sprechen und nachzufragen, wie er die Benutzer voneinander isoliert.
Betreiben Sie einen eigenen Shared-Hosting-Server und verwenden Sie keine chroot, um Ihre Benutzer zu schützen? Zugegeben, das chrooting Ihrer Umgebungen kann schwierig sein. Zum Glück gibt es eine Fülle von Plugins, die dies einfach machen. Schauen Sie sich insbesondere mod_chroot an.
Befehlseinspritzung
Kommen wir zu Alice und Bob zurück. Wir wissen also, dass Bobs Webanwendung ein paar… Ahem… Sicherheitsfragen hat. Eine davon ist die Sicherheitsanfälligkeit bei der Befehlsinjektion, mit der Sie beliebige Systembefehle ausführen können. Eine kurze Anleitung Erste Schritte mit der Linux-Befehlszeile Eine kurze Anleitung Erste Schritte mit der Linux-Befehlszeile In Linux können Sie viele erstaunliche Funktionen ausführen und es ist wirklich nicht schwer zu lernen. Weiterlesen .
Mit der Website von Bob können Sie eine whois-Abfrage auf einer anderen Website ausführen, die dann im Browser angezeigt wird. Es gibt ein Standard-HTML-Eingabefeld, das einen Domänennamen akzeptiert und dann den whois-Systembefehl ausführt. Dieser Befehl wird durch Aufruf des PHP-Befehls system () ausgeführt.
Was würde passieren, wenn jemand den folgenden Wert eingibt??
example.com && cd… / alice / &&rm index.html
Nun, lass es uns brechen. Einige davon sind Ihnen vielleicht vertraut, wenn Sie das Handbuch "Erste Schritte für Linux" und "Erste Schritte" für Linux lesen. Erste Schritte für Linux. Ein Handbuch für Anfänger. Sie haben wahrscheinlich von Linux gehört, dem kostenlosen Open-Source-Betriebssystem, das sich gegen Microsoft durchgesetzt hat. Lesen Sie mehr E-Book, das wir zuvor im Jahr 2010 veröffentlicht haben oder einen Blick auf unser Linux-Kommandozeilen-Spickzettel werfen.
Zunächst wird eine whois-Abfrage auf example.com ausgeführt. Dann würde es das aktuelle Arbeitsverzeichnis in Alices Dokumentstammverzeichnis ändern. Dann würde sie die Datei 'index.html' entfernen, die die Indexseite zu ihrer Website ist. Das ist nicht gut. Nein Sir.
Wie können wir als Systemadministratoren dagegen abmildern? Nun, zurück zum vorigen Beispiel, wir können jeden Benutzer immer in seine eigene isolierte, hygienische und chrootierte Umgebung bringen.
Wir können dies auch auf sprachlicher Ebene angehen. Funktionsdeklarationen können global entfernt werden (dies kann jedoch zu Fehlern führen). Das heißt, es ist möglich, Funktionen aus den Sprachen zu entfernen, auf die Benutzer Zugriff haben.
Insbesondere bei PHP können Sie mit Runkit - dem offiziellen Toolkit von PHP - Funktionen entfernen, um die Funktionalität der Sprache zu ändern. Es gibt eine Fülle von Dokumenten da draußen. Lesen Sie hinein.
Sie können auch die Konfigurationsdatei von PHP (php.ini) ändern, um Funktionen zu deaktivieren, die häufig von Hackern missbraucht werden. Öffnen Sie dazu ein Terminal auf Ihrem Server und öffnen Sie Ihre php.ini-Datei in einem Texteditor. Ich nutze VIM gerne, aber auch NANO ist akzeptabel.
Suchen Sie die Zeile, die mit disable_functions beginnt, und fügen Sie die Funktionsdefinitionen hinzu, die Sie verbieten möchten. In diesem Fall handelt es sich um exec, shell_exec und system, obwohl es erwähnenswert ist, dass es andere integrierte Funktionen gibt, die von Hackern ausgenutzt werden können.
disable_functions = exec, shell_exec, system
Angriffe auf Sprache und Dolmetscher
Schauen wir uns also PHP an. Dies ist die Sprache, die eine erstaunliche Anzahl von Websites unterstützt. Es hat auch eine Reihe von Eigenheiten und seltsamen Verhaltensweisen. So was.
PHP wird normalerweise in Verbindung mit dem Apache-Webserver verwendet. Es ist meistens nicht möglich, mit dieser Konfiguration mehrere Sprachversionen zu laden.
Warum ist das ein Problem? Nehmen wir an, Bobs Webanwendung wurde ursprünglich 2002 erstellt. Das ist schon lange her. Das war wieder, als Michelle Branch immer noch an der Spitze der Charts stand, Michael Jordan spielte immer noch für die Washington Wizards und PHP war eine andere Sprache.
Aber Bobs Website funktioniert immer noch! Es verwendet eine ganze Reihe nicht fortgeführter und veralteter PHP-Funktionen, aber es funktioniert! Die Verwendung einer modernen Version von PHP würde die Website von Bob effektiv brechen und warum sollte Bob seine Website umschreiben, um den Launen seines Webhosts gerecht zu werden?
Dies sollte Ihnen einen Eindruck von dem Dilemma vermitteln, mit dem einige Webhoster konfrontiert sind. Sie müssen die Balance zwischen einem architektonisch soliden und sicheren Service halten und gleichzeitig sicherstellen, dass die zahlenden Kunden zufrieden sind.
Daher ist es nicht ungewöhnlich, dass kleinere, unabhängige Hosts ältere Versionen des PHP-Interpreters (oder einer anderen Sprache) verwenden.
Es ist nicht ungewöhnlich, dass kleinere, unabhängige Hosts ältere Versionen von PHP verwenden, wodurch Benutzer möglicherweise Sicherheitsrisiken ausgesetzt werden.
Warum ist das eine schlechte Sache? Nun, erstens würde es die Benutzer einer Reihe von Sicherheitsrisiken aussetzen. Wie die meisten großen Softwarepakete wird PHP ständig aktualisiert, um die Vielzahl von Sicherheitslücken zu beheben, die ständig entdeckt (und bekanntgegeben) werden..
Darüber hinaus bedeutet dies, dass Benutzer die neuesten (und besten) Sprachfunktionen nicht verwenden können. Dies bedeutet auch, dass Funktionen, die aus einem bestimmten Grund nicht mehr verwendet werden, erhalten bleiben. Im Falle der Programmiersprache PHP gehören dazu die lächerlich schrecklichen (und kürzlich veralteten) mysql_-Funktionen, die zur Interaktion mit dem relationalen MySQL-Datenbanksystem verwendet werden, und dl (), mit denen Benutzer ihre eigenen Spracherweiterungen importieren können.
Als Benutzer sollten Sie in der Lage sein, zu sehen, welche Version eines Interpreters in Ihrem Dienst ausgeführt wird. Wenn es veraltet ist oder eine Reihe von Sicherheitslücken aufweist, wenden Sie sich an Ihren Host.
Was ist mit den Sysadmins? Sie haben hier einige Möglichkeiten. Die erste (und vielversprechendste) Anwendung besteht darin, Docker für jeden Ihrer Benutzer zu verwenden. Docker ermöglicht das gleichzeitige Ausführen mehrerer isolierter Umgebungen, ähnlich wie bei einer virtuellen Maschine, jedoch ohne dass ein anderes Betriebssystem ausgeführt werden muss. Dies ist folglich schnell. Wirklich sehr schnell.
In reinem Englisch? Sie können für die Mehrheit Ihrer Benutzer den neuesten und leistungsfähigsten Interpreter ausführen, während die Kunden, die alte Anwendungen verwenden und alte, veraltete Interpreter verwenden, dies tun, ohne andere Benutzer zu beeinträchtigen.
Dies hat auch den Vorteil, sprachunabhängig zu sein. PHP, Python, Ruby. Was auch immer. Es ist alles das Gleiche.
Keine Albträume.
Dieser Beitrag sollte ein paar Dinge tun. Zunächst sollten Sie darauf aufmerksam machen, wie viele Sicherheitsprobleme Webhosting-Unternehmen zu bewältigen haben, um die Sicherheit ihrer Kunden und ihrer Daten zu gewährleisten.
Es sollte auch zeigen, wie sich auf demselben Server gehostete Sites gegenseitig beeinflussen können. Möchten Sie eine Delle hinzufügen? Fangen Sie an, gute, sichere Kodierungsstandards zu befolgen. Beginnen Sie insbesondere mit der Bereinigung Ihrer Eingaben sowohl im Front-End als auch im Back-End.
Ein guter Anfang ist die neue HTML5-Formularvalidierungsfunktion. In unserem HTML5-Handbuch haben wir bereits darüber gesprochen. Zusammen können wir Websites sicherer machen, indem wir bessere, gewissenhaftere Programmierer sind.
Wie immer bin ich bereit, deine Gedanken zu hören. Schreiben Sie mir unten einen Kommentar.
Bildnachweis: Jeder braucht einen Hacker (Alexandre Dulaunoy), Aufkleber am Taxi-Fenster (Cory Doctorow), Serverraum (Torkild Retvedt), Linux-Bücher und -Magazine (library_mistress), PHP-Elefant (Markus Tacker)
Erfahren Sie mehr über: Online-Sicherheit, Webhosting.