Web Application Firewall (ModSecurity)

Inhalt

In diesem Artikel erfahren Sie, wie Sie Ihre Webanwendungen (wie WordPress, Joomla! oder Drupal) mit ModSecurity, einer Open-Source-Firewall für Webanwendungen, vor Angriffen schützen können.

Sie finden hier einen kurzen Überblick über die Funktionsweise von ModSecurity sowie eine Anleitung zur Aktivierung und Konfiguration.

Um Angriffe gegen Webanwendungen zu erkennen und zu verhindern, gleicht die Web Application Firewall (ModSecurity) alle Abfragen an Ihren Webserver und die zugehörigen Antworten vom Server mit ihren Regeln ab. Wenn diese Überprüfung erfolgreich verläuft, wird die HTTP-Anforderung an die Website weitergegeben, um den Inhalt abzurufen. Fällt die Überprüfung hingegen negativ aus, werden die vorher definierten Aktionen durchgeführt.

ModSecurity wird sowohl in Plesk für Linux als auch in Plesk für Windows unterstützt. Es wird als Webserver-Modul (Apache, Nginx oder IIS) ausgeführt.

ModSecurity aktivieren

So aktivieren Sie die Web Application Firewall:

  1. Gehen Sie zu Tools & Einstellungen > Web Application Firewall (ModSecurity) (unter „Sicherheit“).

    Wenn Sie diesen Link nicht sehen, installieren Sie die ModSecurity-Komponente unter Tools & Einstellungen > Updates > Komponenten hinzufügen/entfernen > Gruppe Webhosting.

    image-mode-selector

  2. Stellen Sie den Modus der Web Application Firewall auf Ein oder Nur Erkennung. Jede eingehende HTTP-Abfrage und die zugehörige Antwort werden mit einem Regelsatz verglichen. Wenn diese Überprüfung erfolgreich verläuft, wird die HTTP-Anforderung an die Website weitergegeben, um den Inhalt abzurufen. Fällt die Überprüfung hingegen negativ aus, wird das Ereignis protokolliert. Im Modus Nur Erkennung werden keine weiteren Aktionen ausgeführt. Im Modus Ein wird eine HTTP-Antwort mit einem Fehlercode ausgegeben.

    Bemerkung

    Die Modi der Web Application Firewall können auf Server- sowie auf Domainebene eingerichtet werden. Jedoch kann der Modus auf Domainebene nicht höher sein als der für den Server festgelegte Modus. Wenn beispielsweise die Web Application Firewall auf der Server-Ebene im Modus Nur Erkennung arbeitet, werden Sie sie für Domains nicht auf Ein einstellen können. In dem Fall werden nur die Modi Aus und Nur Erkennung angezeigt.

  3. (Nur Plesk für Linux) Gehen Sie zum Tab „Einstellungen“ und wählen Sie die gewünschte ModSecurity-Version aus dem Dropdown-Menü Regeln ausführen auf aus:

    • Apache (ModSecurity 2.9) (empfohlen): ModSecurity 2.9 kann nur verwendet werden, wenn für Domains die Option „Proxymodus“ in den Einstellungen für Apache & nginx ausgewählt wurde.
    • Nginx (ModSecurity 3.0): ModSecurity 3.0 kann nur mit Regelsätzen von OWASP und Comodo verwendet werden. Wir empfehlen dringend, ModSecurity 3.0 zunächst auf einem Testserver auszuprobieren, bevor Sie es in Ihrer Produktionsumgebung einsetzen.
  4. Wählen Sie einen verfügbaren Regelsatz aus, mit dem jede eingehende HTTP-Anforderung vom Web-Application-Firewall-Modul überprüft wird, oder laden Sie einen benutzerdefinierten Regelsatz hoch. Sie können die folgenden Regelsätze auswählen:

    image-rule-sets

    • Atomic Standard (kostenlos, Upgrade auf Atomic Advanced möglich). Eine kostenlose Einsteigerversion der Atomic ModSecurity-Regeln, die mit Plesk geliefert werden. Umfasst wichtige Sicherheitsfunktionen und Bugfixes, die monatlich veröffentlicht werden. Weitere Informationen zu den Regeln in diesem Regelsatz finden Sie unter Atomic ModSecurity-Regelsätze.

    • OWASP (kostenlos). Das OWASP ModSecurity Core Rule Set (CRS) bietet allgemeinen Schutz vor unbekannten Schwachstellen, die oft in Webanwendungen gefunden werden. Dieser Regelsatz wird kostenfrei zur Verfügung gestellt. Dabei handelt es sich um einen sehr strengen Regelsatz. Zur Verwendung in der Produktionsumgebung sind daher zusätzliche Anpassungen nötig. Wenn dieser Regelsatz ausgewählt ist, funktioniert WordPress nur teilweise und Webmail sowie die Dateifreigabe gar nicht. Sie können stattdessen den Atomic- oder Comodo-Regelsatz verwenden.

    • (Plesk für Linux) Comodo (kostenlos). Ein kostenloses, einfach zu bedienendes, anpassbares, regelbasiertes System zur Traffic-Kontrolle, das Ihre webbasierten Anwendungen schützt und neuen Hacking-Techniken dank einer häufig aktualisierten Regeldatenbank zuvorkommt.

    • Atomic Advanced. Die neueste Version der Regeln – mit allen Leistungsverbesserungen, neuen Sicherheitsfunktionen und Bugfixes, die täglich von Atomicorp GotRoot veröffentlicht werden. Dies ist ein kommerzieller Regelsatz, der vollständig unterstützt und für die Verwendung in der Produktivumgebung empfohlen wird. Plesk bietet die zusätzliche Funktion Security Core Complete by Atomicorp an, mit der Sie diesen Regelsatz in Plesk aktivieren können. Verwenden Sie hierzu eine der folgenden Methoden:

      • Kaufen Sie das Produkt „Advanced ModSecurity Rules by Atomicorp“ im Plesk Online-Shop.
      • Wenn Sie bereits eine Plesk Lizenz haben, können Sie die zusätzliche Funktion über Plesk Partner Central oder über die Partner API hinzufügen. Details dazu finden Sie im Benutzerhandbuch für Partner Central oder in der Referenz für die Partner API 3.0.
      • Falls Sie zwar eine Plesk Lizenz, aber keinen Zugriff auf Plesk Partner Central haben, wenden Sie sich an Ihren Provider.

      Wenn Sie bereits ein Konto auf der Atomic-Website haben, geben Sie Ihren Benutzernamen und das Passwort an, um diesen Regelsatz zu aktivieren.

      Bemerkung

      Wenn Sie diese zusätzliche Funktion kaufen, wird in der Plesk-Oberfläche Atomic Advanced anstelle von Atomic Standard (kostenlos, Upgrade auf Atomic Advanced möglich) angezeigt. Das bezieht sich auf den kompletten Atomic Advanced ModSecurity-Regelsatz.

      Weitere Informationen zu den Regeln in diesem Regelsatz finden Sie unter Atomic ModSecurity Regelsätze.

    • Benutzerdefinierter Regelsatz. Sie können einen benutzerdefinierten Regelsatz für die Web Application Firewall hochladen, zum Beispiel, ein Testpaket von Atomic oder ein kostenloses Paket von Comodo. Unterstützte Formate: zip, tar.gz, tgz, tar.bz2, conf.

  5. Wenn der ausgewählte Regelsatz automatisch aktualisiert werden soll, klicken Sie das Kontrollkästchen Regelsätze aktualisieren an und wählen Sie den Aktualisierungszeitraum aus.

  6. Wählen Sie die vordefinierten Parameter aus oder geben Sie Ihre eigenen ModSecurity-Anweisungen an. Sie können die folgenden vordefinierten Parameter auswählen:

    • Schnell, wenn der URI der HTTP-Abfrage und Teile der Header analysiert werden sollen. Dieser Modus verbraucht am wenigsten CPU.

    • Ausgewogen, wenn der URI und die Header der HTTP-Abfrage sowie die POST-Daten der Abfrage analysiert werden sollen. Dieser Modus bietet eine gute Balance zwischen Qualität und Leistung.

    • Gründlich, wenn die vollständigen Header der HTTP-Abfrage, die POST-Daten der Abfrage und der Body-Content der HTTP-Antwort analysiert werden sollen. Dieser Modus verbraucht die meisten CPU-Ressourcen, ist aber für jene Websites zu empfehlen, für die besondere Sicherheitsmaßnahmen erforderlich sind. Ein Beispiel sind Online-Shops mit Kreditkarte als mögliche Zahlungsmethode.

      Bemerkung

      Für eine optimale Leistung benötigt die Web Application Firewall einen lokalen DNS-Server, bei dem das Caching von Abfragen aktiviert ist. Sonst kann es passieren, dass Ihre Websites bei eingeschalteter Web Application Firewall langsam laden.

      image-configuration

Protokolldateien (Linux)

ModSecurity verwendet im Fall von Linux zwei Speicherorte für Protokolle:

  • Das ModSecurity-Auditprotokoll (unter /var/log/modsec_audit.log) ist sehr detailliert und wird vom gesamten Plesk Server verwendet. Sobald ModSecurity erkennt, dass ein Ereignis eingetreten ist, wird ein Eintrag in der Auditprotokolldatei generiert. Wenn Sie das ModSecurity-Auditprotokoll einsehen wollen, gehen Sie zu Tools & Einstellungen > Web Application Firewall (ModSecurity) und klicken Sie im Abschnitt ModSecurity-Auditprotokoll auf den Link Protokollarchiv. Hier können Sie die ModSecurity-Protokolldateien und das Datum der letzten Änderung einsehen sowie die Protokolldateien herunterladen.
  • Das Apache Fehlerprotokoll für eine Domain (befindlich in /var/www/vhosts/DOMAIN.TLD/logs/error_log) enthält nur kurze Informationen über Website-Fehler. Sie können das Fehlerprotokoll für eine bestimmte Website im Kunden-Panel einsehen. Gehen Sie dazu zu Websites & Domains > <Domainname> > Protokolle und wählen Sie auf der rechten Seite nur Apache-Fehler und nginx-Fehler anstatt Alle Protokolle aus.

Protokolldateien (Windows)

Unter Windows sind ModSecurity-Auditprotokolle domainspezifisch und unter %plesk_dir%ModSecurity\vhosts\<domain's GUID>\logs zu finden. %plesk_dir% steht für das standardmäßige Installationsverzeichnis für Plesk.

Regeln deaktivieren

Eine Website funktioniert möglicherweise nicht mehr wie erwartet, wenn Sie den Modus der Web Application Firewall von Aus oder Nur Erkennung zu Ein ändern. Fehlercodes wie 403, 404 oder 500 sind dann im Fehlerprotokoll der Website finden und erscheinen wiederum nicht mehr, wenn Sie den Modus der Web Application Firewall zurück in Nur Erkennung oder Aus ändern. In diesem Fall sollten Sie das ModSecurity-Auditprotokoll analysieren, um herauszufinden, was genau passiert. Sie können zu strenge Sicherheitsregeln ausschalten oder die Website anpassen.

So finden Sie heraus, warum eine HTTP-Anforderung für eine Website nicht abgeschlossen werden konnte:

  1. Öffnen Sie die Protokolldatei für die Website.

    In Plesk für Linux können Sie das Protokoll in der Benutzeroberfläche von Plesk aufrufen. Gehen Sie zu Tools & Einstellungen > Web Application Firewall (ModSecurity) und klicken Sie auf den Link ModSecurity-Protokolldatei, um das Auditprotokoll herunterzuladen und es in einem neuen Browserfenster zu öffnen.

  2. Verwenden Sie die Suche (Strg+F in den meisten Webbrowsern), um Ereignisse in Verbindung mit der Website (dem Domainnamen) zu finden, die die Probleme verursacht haben. Suchen Sie zum Beispiel nach ihre_domain.tld. Der Browser wird Einträge markieren wie HOST: ihre_domain.tld. Suchen Sie drei Zeilen über dem markierten Eintrag eine Zeichenfolge wie --eece5138-B--. Die acht Zeichen zwischen den Bindestrichen (in unserem Beispiel eece5138) sind die ID des Ereignisses, das von der HTTP-Anforderung ausgelöst wurde.

  3. Suchen Sie nach weiteren Einträgen mit derselben Ereignis-ID. Halten Sie Ausschau nach einem Eintrag mit einem H nach der Ereignis-ID (in unserem Beispiel: eece5138-H--). Dieser Eintrag enthält die ID und Beschreibung der Sicherheitsregel, die während der Überprüfung der HTTP-Anfrage ausgelöst wurde. Die ID der Sicherheitsregel ist ein ganzzahliger Wert, der in Anführungszeichen und zusammen mit dem Präfix id in eckige Klammern gesetzt ist (zum Beispiel [id "340003"] oder [id "913102"]).

  4. Suchen Sie eine Sicherheitsregel-ID im Ereignis, indem Sie eine Teilzeichenfolge wie [id "3 verwenden. Sie können diese ID einsetzen, wenn Sie Regeln deaktivieren.

So deaktivieren Sie Regeln:

  1. Gehen Sie zu Tools & Einstellungen > Web Application Firewall (ModSecurity).
  2. Wählen Sie im Abschnitt Sicherheitsregeln ausschalten die Sicherheitsregel nach ID (z. B. 340003), Kennzeichnung (z. B. CVE-2011-4898) oder regulären Ausdruck (z. B. XSS) aus und klicken Sie auf OK.