.

Drupal-Sicherheitsmodule und Best Practices für Ihre Website

Die Sicherheit der Lösungen, die wir bereitstellen, ist ein sehr wichtiger Faktor für uns. Aufgrund dessen und der Tatsache, dass Drupal das sicherste CMS ist, präsentieren wir in diesem Artikel eine Liste von Empfehlungen, die die Sicherheit Ihrer Drupal-Website auf ein noch höheres Niveau heben.

Drupal-Sicherheit. Warum ist es gut, auf dem Laufenden zu bleiben?

Ihre Anwendung ist weniger anfällig für die Ausnutzung bekannter Schwachstellen. Das ist es. Aber es bedeutet noch viel mehr.

Wie ich schon zuvor erwähnt habe – das Aktualisieren von Modulen und Bibliotheken ist eine der einfacheren Methoden, um die Sicherheit unserer Anwendung zu verbessern. Die Drupal-Community, unterstützt von dem speziellen Drupal Security Team, überwacht ständig die Benutzerberichte über potenzielle Sicherheitsfehler und bietet den Modulautoren Hilfe bei deren Lösung an. Das Ergebnis dieser Maßnahmen sind Modul-Updates, die Sicherheits-Patches einführen.

Konfiguration des Anmeldepanels

Ein falsch konfiguriertes Anmeldepanel kann Informationen über das Vorhandensein eines Benutzers in der Datenbank anhand des im Formular angegebenen Logins liefern. Wenn die Informationen, die das Panel zurückgibt, unterschiedlich sind, je nachdem, ob der Angreifer einen falschen oder korrekten Login angegeben hat, haben wir es mit einem Brute-Force-Angriffsvektor zu tun. Auf diese Weise kann der Angreifer zuerst die Logins erhalten und sich dann mit Brute-Force an die Passwörter machen.

Drupal-Module zur Erhöhung der Website-Sicherheit

Drupal verfügt über mehrere Module, die die Sicherheit verbessern können. Ihre Konfiguration erfordert kein umfangreiches technisches Wissen und nimmt nicht so viel Zeit in Anspruch wie andere Methoden zur Sicherung einer Website. Wir stellen im Folgenden einige Werkzeuge dieser Art vor.

Drupal Password Policy

Das Password Policy Modul ermöglicht es, Einschränkungen für Benutzerpasswörter durch die Definition von Passwort-Richtlinien durchzusetzen. Es kann durch eine Reihe von Anforderungen definiert werden, die erfüllt sein müssen, bevor eine Passwortänderung eines Benutzers akzeptiert wird. Jede Einschränkung hat einen Parameter, der die Mindestanzahl wichtiger Bedingungen festlegt, die erfüllt werden müssen, um die Anforderung zu erfüllen.

Angenommen, wir sind auf Großbuchstaben (mit Parameter 2) sowie auf Zahlen (mit Parameter 4) beschränkt. Dies bedeutet, dass ein Benutzerpasswort mindestens zwei Großbuchstaben und mindestens vier Zahlen enthalten muss, um akzeptiert zu werden.

Das Modul implementiert auch die Funktion „ablaufendes Passwort“: Der Benutzer wird gezwungen, sein Passwort zu ändern und wird optional blockiert, wenn das alte Passwort abläuft.

Drupal Password Policy erlaubt Administratoren, bestimmte Benutzer oder gesamte Rollen dazu zu zwingen, ihr Passwort bei der nächsten Anmeldung zu ändern. Die Aufforderung zur Passwortänderung wird zusammen mit dem entsprechenden Formular als Popup angezeigt, anstatt den Benutzer auf die typische Seite user/{user_id}/edit umzuleiten.

Drupal Security Review

Das Security Review Modul automatisiert die Prüfung vieler leicht zu machender Fehler, die dazu führen, dass die Website unsicher ist. Dieses Drupal-Modul ist intuitiv und sehr einfach zu nutzen. Der schnell erstellte Bericht ist leserlich und zeigt klar an, was verbessert werden muss. Das Modul nimmt keine automatischen Änderungen an Ihrer Seite vor. Die Ergebnisse des Berichts sollten analysiert und – in ausgewählten Fällen – entsprechende Korrekturen vorgenommen werden. Nicht alle Empfehlungen werden akzeptabel sein. Alles hängt von den einzigartigen Faktoren Ihrer Website ab.

Drupal Security Kit

Das Security Kit Modul bietet eine Vielzahl von sicherheitsverbessernden Optionen, die helfen, das Risiko der Ausnutzung verschiedener Schwachstellen in Ihrer Anwendung zu reduzieren. Das Modul verringert die Wahrscheinlichkeit der Nutzung vieler Arten von Angriffen, einschließlich:

  • Cross-Site-Scripting,
  • Cross-Site Request Forgery,
  • Clickjacking.

Die vollständige Beschreibung der Funktionalitäten finden Sie im oben verlinkten Artikel.

Security Kit ist eines der Drupal-Module, das zur Erhöhung der Website-Sicherheit beiträgt

Quelle: Drupal.org

Drupal Paranoia

Das Paranoia-Modul identifiziert die meisten Orte, an denen der Benutzer PHP-Code über die Drupal-Oberfläche ausführen kann, und blockiert diese dann. Dies mindert die potenzielle Bedrohung, die sich aus der Erlangung einer hochrangigen Autorisierung durch den Angreifer in Drupal ergibt.

Was macht das Modul?

  • Blockiert die Gewährung der Berechtigung Verwendung von PHP für Block-Sichtbarkeit.
  • Blockiert die Möglichkeit, Textformate zu erstellen, die den PHP-Filter verwenden.
  • Blockiert die Möglichkeit, das Benutzerkonto mit uid 1 zu bearbeiten.
  • Blockiert die Gewährung von Berechtigungen, die die Website-Sicherheit mindern könnten.
  • Blockiert die Deaktivierung dieses Moduls. Um es zu deaktivieren, müssen Sie die Datenbank bearbeiten.

Um dieses Modul vollständig zu nutzen, müssen Sie alle Entitäten, Felder und Blöcke identifizieren, die den Drupal PHP-Filter verwenden, und diese so ändern, dass sie ohne ihn funktionieren, und dann den Standard-PHP-Filter in admin/config/content/formats entfernen.

Wie erstellt man sicheren Code in Drupal?

Drupal verwendet Lösungen, die als sicher angesehen werden, wenn sie gemäß den Standards verwendet werden. Es gibt viele Regeln, die beim Erstellen eines sicheren Codes befolgt werden müssen. Wir präsentieren die wichtigsten davon im Folgenden.

Verwenden Sie Twig

Die Twig-Engine „auto-escape“ alle Variablen standardmäßig. Das bedeutet, dass alle von den Twig-Templates gerenderten Strings (z. B. alles zwischen {{ }}) automatisch von den Elementen bereinigt werden, die die Sicherheit Ihrer Anwendung gefährden könnten.

Wenn Sie Attribute rendern, stellen Sie sicher, dass Sie diese zwischen Anführungszeichen " oder Apostrophen ' einbetten. Zum Beispiel, class=”{{foo}}”, nicht class={{foo}}.

Platzhalter verwenden

Die Translation API bereinigt ebenfalls Strings. Verwenden Sie sie für die Strings, die Sie übersetzen möchten und später, zum Beispiel, auf der Frontend-Seite rendern.

In Drupal gibt es drei Arten von Platzhaltern in der Translation API:

@variable

Wir verwenden es, wenn wir einen String oder ein Objekt der MarkupInterface-Klasse für einen Platzhalter einsetzen wollen.

%variable

Wir verwenden es, wenn wir einen Wert zwischen den variable Tags einbetten wollen.

:variable

Wir verwenden es, wenn der Wert, den wir einsetzen möchten, die URL ist, die wir im href-Attribut einbetten möchten.

Weitere Informationen zu Platzhaltern finden Sie unter Drupal.org.

Lernen Sie die API und verwenden Sie sie

Drupal bietet viele Funktionen zum Bereinigen von Strings. Unter ihnen sind:

t(), Drupal::translation()->formatPlural()

Zusammen mit den oben beschriebenen Platzhaltern verwendet, ermöglicht es die Erstellung sicherer Strings, die bereit sind, übersetzt zu werden.

Html::escape()

Verwendet, um reinen Text zu bereinigen.

Xss::filterAdmin()

Verwenden Sie es, wenn Sie den Text bereinigen möchten, der von einem Admin eingegeben wurde, der die meisten HTML-Tags und -Attribute verwenden sollte.

UrlHelper::stripDangerousProtocols(), UrlHelper::filterBadProtocol()

Nützlich für die URL-Überprüfung, kann zusammen mit SafeMarkup::format() verwendet werden.

Die Strings, die durch die Funktionen t(), Html::escape(), Xss::filter() oder Xss::filterAdmin() gelaufen sind, werden automatisch als sicher angesehen, ebenso wie die von der Renderer-Klasse erstellten Strings des Render-Array.

Text auch in JavaScript filtern

Serverseitiges Textfiltern wird als eine der besten Praktiken angesehen. Es gibt jedoch Fälle, in denen das Filtern auch auf der Clientseite erfolgt, um zusätzliche temporäre Filterungsmöglichkeiten bereitzustellen. Es ist nützlich, zum Beispiel beim Rendern der Elemente, die aktualisiert werden, während der Benutzer den Text eingibt (das heißt, es werden Änderungen am DOM-Baum eingeführt). Um Text in Drupal mit JavaScript zu filtern, sollten Sie die Funktion Drupal.checkPlain() verwenden. Diese Funktion bereinigt den Text, indem sie die schädlichen Elemente entfernt und schützt zum Beispiel vor einigen Clickjacking-Angriffsmethoden.

Verwenden Sie eine Abstraktionsschicht beim Arbeiten mit einer Datenbank

Wir empfehlen, niemals reine Werte in den Abfragen zu verwenden. Stattdessen sollten Sie Platzhalter verwenden.

Beispiel:

\Database::getConnection()->query('SELECT foo FROM {table} t WHERE t.name = ‘ . $_GET['user']);

Vs

\Database::getConnection()->query('SELECT foo FROM {table} t WHERE t.name = :name', [':name' => $_GET['user']]);

Im zweiten Fall wird anstatt des Werts aus dem user-Parameter direkt, dieser als :name-Platzhalterersatz bereitgestellt. Auf diese Weise wird Drupal, bevor dieser Wert in der endgültigen Abfrage verwendet wird, ihn von den Elementen, die eine SQL-Injection verursachen könnten, bereinigen.

Sicherheitsaudit

Der Prozess der "Härtung" einer Seite sollte mit einem umfassenden Sicherheitsaudit enden, das noch mehr potenzielle Bedrohungen auf Ihrer Seite aufdeckt.

Ein Sicherheitsaudit sollte Folgendes umfassen:

Review von Modulen und Bibliotheken. Dies bedeutet, die Versionen der installierten Drupal-Module zu überprüfen, die Patches, PHP-Bibliotheken und JavaScript zu überprüfen.

Konfigurationsüberprüfung. Im Rahmen dieser Aktivität führen wir Autorisierungsüberprüfungen für die Rollen, Views, routing.yml-Dateien in benutzerdefinierten Modulen, Textformate, Fehlerprotokollierung und Formulare durch.

Überprüfung des Repositories. Wir überprüfen die benutzerdefinierten Module und Themes, einschließlich Routing, benutzerdefinierte Formulare, SQL-Abfragen, Filtermechanismen und Dateiberechtigungen.

Identifizierung der Repository-Inhalte. Wir prüfen die Inhalte der settings.php und .env-Dateien. Wir führen auch eine Überprüfung der tief verborgenen Elemente durch. Dies basiert auf der Überprüfung des Repositorys, zum Beispiel nach SSL-Schlüsseln oder Datenbankkopien oder -dumps.

Die vollständige Beschreibung vieler der in der obigen Liste präsentierten Elemente finden Sie in den verlinkten Artikeln.

Drupal Sicherheitsmodule - Zusammenfassung

Je nach dem Stand Ihres Wissens und Fortschritts mit Drupal können Sie entsprechende Korrekturen in der Anwendung vornehmen, um sie sicherer zu machen. Die in diesem Artikel präsentierten Beispiele werden definitiv die Anzahl der Angriffsvektoren reduzieren und die Wahrscheinlichkeit ihrer Nutzung verringern. Wir empfehlen, die verfügbaren Optionen zu analysieren und möglicherweise die Änderungen oder neuen Elemente einzuführen, die das Risiko eines Angriffs auf Ihre Anwendung verringern. Wenn Sie Hilfe bei solchen Aktivitäten benötigen, kann unser Drupal- Support-Team ein Audit Ihrer Website-Sicherheit durchführen.

As part of Drupal support, we maintain existing websites and expand them with new functionalities