Best Practices zum Schutz vor Hacking-Angriffen

Freitag, 20. Februar 2009

Heutzutage basiert die Mehrheit der Websites auf Webapplikationen, um ihren Usern einen guten Service anzubieten. Vor allem Content-Management-Systeme (CMSs) sind sehr verbreitet, um Content zu erstellen, zu editieren und zu verwalten. Aufgrund der interaktiven Natur dieser Systeme, die sich grundlegend auf Usereingaben stützen, ist es wichtig über Sicherheitsaspekte nachzudenken, um die Systeme vor schädlichen Zugriffen Dritter zu schützen und die beste Usererfahrung zu sichern.

Einige Hacking-Methoden und wie man sie verhindern kann

Es gibt viele verschiedene Arten von Hacking-Angriffen, um eine Website teilweise oder vollständig unter Kontrolle zu bekommen. Die beiden häufigsten und auch gefährlichsten Methoden sind SQL-Injection (SQL-Einschleusung) und Cross-Site-Scripting (XSS).

SQL-Injection ist eine Technik, mit der man schädlichen Code in eine Webanwendung einfügen kann und eine Sicherheitslücke auf Datenbankebene ausnutzt, um ihr Verhalten zu beeinflussen. Es ist eine sehr wirkungsvolle Methode, wenn man in Betracht zieht, dass damit sowohl URLs (Suchstrings) als auch Formulare (Suchformulare, Logins, E-Mail-Registrierungen) manipuliert werden können, um schädlichen Code einzuschleusen. Einige Beispiele von SQL-Injections könnt ihr auf der Site des Web Application Security Consortiums finden.

Es gibt definitiv einige Vorsichtsmaßnahmen, die ihr treffen könnt, um diese Art von Angriff zu vermeiden. Beispielsweise ist es ein guter Ansatz, eine Ebene zwischen dem Formular im Frontend und der Datenbank im Bankend einzufügen. In PHP wird die PDO -Extension oft verwendet, um mit Parametern (manchmal auch Platzhalter oder Bindevariablen genannt) zu arbeiten, anstatt Usereingaben in den Ausdruck einzubinden. Eine andere sehr einfache Methode besteht darin, Zeichen zu maskieren (escapen), so dass alle gefährlichen Zeichen, die einen direkten Einfluss auf die Datenbankstruktur haben können, durch die Maskierung neutralisiert werden. Beispielsweise muss jedes Auftauchen eines einfachen Anführungszeichens ['] in einem Parameter durch zwei Anführungszeichen [''] ersetzt werden, um einen gültigen SQL-String-Literal zu bilden. Dies sind nur zwei der verbreitetsten Maßnahmen, die ihr treffen könnt, um die Sicherheit eurer Site zu erhöhen und SQL-Injection zu vermeiden. Online könnt ihr viele andere Quellen zu speziellen Themen finden, wie etwa Programmiersprachen, besondere Webapplikationen etc.

Die andere Technik, die wir hier vorstellen möchten, ist Cross-Site-Scripting (XSS). XSS ist eine Technik, die gerne verwendet wird, um schädlichen Code in eine Webpage einzufügen, wobei Sicherheitslücken in der Webapplikation ausgenutzt werden. Diese Art von Angriff wird dann ermöglicht, wenn die Webapplikation Daten verarbeitet, die sie von Usern erhält und diese ohne weitere Überprüfung oder Validierung an den Enduser ausgibt. Einige Beispiele von Cross-Site-Scripting könnt ihr im Web Application Security Consortium finden.

Es gibt viele Möglichkeiten, um eine Webapplikation gegen diese Technik zu sichern. Einige einfache Maßnahmen wären beispielsweise:
  • Beschränkt die Eingaben für ein Formular (beispielsweise mit der strip tags -Funktion in PHP).
  • Verwendet Datenenkodierung, um direkte Einschleusung von potentiell schädlichem Code zu verhindern (seht dazu z. B. die htmlspecialchars -Funktion in PHP).
  • Fügt eine Ebene zwischen Dateneingabe und dem Backend ein, um eine direkte Einschleusung von Code in die Applikation zu vermeiden.

Einige Quellen zum Thema CMS-Sicherheit

SQL-Injection und Cross-Site-Scripting sind nur zwei von vielen Methoden, die von Hackern verwendet werden, um unschuldige Sites anzugreifen und auszunutzen. Als eine generelle Sicherheitsrichtlinie gilt, dass ihr stets über die aktuellsten Sicherheitsrisiken informiert sein solltet und, sofern ihr Software von Drittanbietern verwendet, sicherstellt, dass ihr immer die aktuellste Version installiert habt. Viele Webapplikationen haben eine große Community und bieten kontinuierlichen Support und Updates an.
Um ein paar Beispiele zu nennen: Vier der größten Communities von Open Source Content-Management-Systemen — Joomla, WordPress, PHP-Nuke und Drupal — bieten nützliche Sicherheitstipps auf ihrer Site an; zudem gibt es dort große Foren mit einer aktiven Community, in denen User ihre Probleme schildern und um Hilfe fragen können. Beispielsweise bietet die Website von WordPress im Abschnitt Hardening WordPress eine umfassende Dokumentation dazu an, wie ihr die Sicherheit des WordPress-CMS gewährleisten könnt. Auch Joomla bietet viele Quellen zum Thema Sicherheit an, darunter vor allem auch eine umfassende Sicherheits-Checkliste mit Maßnahmen, die Webmaster treffen können, um die Sicherheit einer auf Joomla basierten Website zu erhöhen. Auf Drupals Site erhaltet ihr im Abschnitt über Sicherheit gezielte Informationen zu diesem Thema. Ihr könnt euch auch auf der Sicherheits-Mailingliste einschreiben, um regelmäßig über Neuigkeiten auf dem Laufenden zu sein. PHP-Nuke bietet einiges an Dokumentation zum Thema Sicherheit im Kapitel 23 ihres "How to"-Abschnittes an, welches sich gezielt mit dem Systemmanagement dieser CMS-Plattform befasst. In dem Abschnitt Hacked - Now what? bieten sie Tipps zum Umgang mit Hacking-Problemen an.

Einige Möglichkeiten, um festzustellen, ob eure Site gehackt wurde

Wie oben bereits erwähnt, gibt es verschiedene Arten von Angriffen, die Hacker auf Sites verüben, um unschuldige Sites für ihre Zwecke zu missbrauchen. Wenn es Hackern gelingt, die vollständige Kontrolle über eine Site zu gewinnen, können sie die Site komplett entstellen (indem sie Homepage ändern), den gesamten Content löschen (indem sie die Tabellen aus eurer Datenbank löschen), oder Malware bzw. Scripte zum Auslesen der Cookies einschleusen. Sie können eine Site auch zum Spammen missbrauchen, indem sie Links auf ihr verstecken, die wiederum auf andere Spamquellen verweisen, oder indem sie Seiten erstellen, die zu Malware-Sites umleiten . Wenn ihr diese Veränderungen in eurer Applikation bemerkt (wie etwa "Defacing", d. h. die Entstellunge eurer Homepage), dann könnt ihr mit Sicherheit davon ausgehen, dass ihr gehackt wurdet; für andere Arten von Missbrauch jedoch, insbesondere für die mit Spamabsicht, ist dies nicht so eindeutig festzustellen. Google bietet Webmastern durch einige seiner Produkte einfache Wege an, um zu erkennen, ob eine Site gehackt oder von dritter Seite ohne Zustimmung verändert wurde. Beispielsweise könnt ihr typische Schlüsselwörter, die von Hackern in eure Site eingefügt wurden, durch eine Google-Suche erkennen und die betroffenen Seiten identifizieren. Geht einfach zu google.de und macht eine site: Suchanfrage für eure Website, kombiniert mit kommerziellen Schlüsselwörtern, die Hacker gewöhnlich für ihre Spamaktivitäten verwenden (wie etwa viagra, mp3, cialis, etc.):

[site:example.com viagra]

Falls ihr noch nicht mit dem site: Suchoperator vertraut seid - er bietet euch die Möglichkeit, eine Google-Suchanfrage auf eine bestimmte Site zu beschränken. So gibt euch beispielsweise die Suche site:googleblog.blogspot.com nur Ergebnisse des Official Google Blogs aus. Wenn ihr spammige Schlüsselbegriffe zu dieser Art von Suchanfrage hinzufügt, dann wird Google euch alle indexierten Seiten eurer Site ausgeben, die diese Begriffe enthalten und demnach mit hoher Wahrscheinlichkeit gehackt sind. Um die verdächtigen Seiten zu überprüfen, öffnet einfach die Cache-Version, die Google euch anbietet, und ihr werdet den Hacking-Content gegebenenfalls schnell erkennen. Ihr könnt daraufhin die betroffenen Seiten von dem Hacking-Content befreien; zudem könnt ihr auch die Konfigurationsdateien auf eurem Server nach Anomalien untersuchen (beispielsweise die des Apache Web-Servers: .htaccess und httpd.conf).
Falls eure Site nicht mehr in den Google-Suchergebnissen auftaucht, dann könnte das bedeuten, dass Google die schädlichen Hacking-Aktivitäten auf eurer Site bereits bemerkt und diese vorübergehend aus unserem Index entfernt hat, da sie aufgrund des gehackten Contents gegen unserere Richtlinien für Webmaster verstößt.

Um stets ein Auge auf eure Website zu haben und verdächtige Schlüsselbegriffe schnell zu entdecken, könnt ihr auch Google Alerts zur Überwachung bestimmter Suchanfragen verwenden, wie etwa:

site:example.com viagra|casino|porn|ringtones

Ihr erhaltet dann eine Benachrichtigung, sobald diese Schlüsselbegriffe auf eurer Website gefunden werden.

Ihr könnt zudem auch unsere Webmaster-Tools verwenden, um Hacking-Aktivitäten auf eurer Site zu entdecken. Die Webmaster-Tools stellen euch Statistiken über die Top-Suchanfragen für eure Site zur Verfügung. Diese Daten können euch dabei helfen, einen Überblick über eure Site zu behalten und zu erkennen, falls eure Site für verdächtige, themenfremde Suchbegriffe rankt. Diese 'Was Googlebot sieht'-Daten sind zudem auch nützlich, weil ihr so erkennt, ob Google ungewöhnliche Schlüsselbegriffe auf eurer Site entdeckt, unabhängig davon, ob ihr dafür rankt oder nicht.

Wenn ihr ein Konto in den Webmaster-Tools habt und Google annimmt, dass eure Site gehackt wurde, dann werdet ihr gewöhnlich darüber benachrichtigt und auch über die Art der Sicherheitsverletzung informiert:
  • Falls eine böswillige dritte Partei eure Site für Spamaktivitäten ausnutzt (wie etwa das Verstecken von Links zu verstecken oder die Erstellung von Spamseiten zu erstellen) und dies von unseren Crawlern erkannt wurde, dann könnt ihr gewöhnlich im Nachrichten-Center detailliertere Informationen darüber finden (wie etwa eine Auswahl der gehackten URLs oder Linktext der versteckten Links).
  • Falls eure Site dazu missbraucht wird, schädliche Software wie etwa Malware zu verbreiten, dann werdet ihr eine Malware-Warnung auf der Übersichtsseite eures Webmaster-Tools-Kontos finden.

Alle Spuren des Hacker-Angriffs entfernt, was jetzt?

Eure Site ist gehackt worden oder sie verbreitet Malware? Befreit eure Site zunächst einmal von der Malware und dann macht das Folgende:
  • Wenn eure Site zu Spamzwecken gehackt wurde, dann besucht bitte unsere Seite Antrag auf erneute Überprüfung in den Webmaster-Tools, um einen Antrag auf erneute Überprüfung für eure Site zu stellen.
  • Wenn eure Site Malware verbreitet, dann reicht bitte eine Malware-Überprüfung auf der Übersichtsseite der Webmaster-Tools ein.

Wir hoffen, dass ihr diese Tipps hilfreich findet. Falls ihr eure eigenen Tipps und Erfahrungen mitteilen möchtet, dann hinterlasst gerne einen Kommentar zu diesem Blogpost. Vielen Dank!

Best practices against hacking (English version)

Post von Paolo Petrolini & Iris Mariano, Search Quality (Übersetzung von Claudia Pfalzer, Search Quality)