Ist die Sicherheit in AEM ein Plattform- oder Implementierungsproblem?

Gepostet von: Andrey Pinchuk | Zertifizierter Senior AEM Entwickler

Stellen Sie sich die Situation vor: Sie schlafen ruhig und sehen Ihren dritten Traum, als plötzlich ein Telefon klingelt - ein unzufriedener Kunde beschwert sich, dass das gesamte System nicht verfügbar ist. Stimmen Sie zu, solche Ereignisse sind für das Leben des AEM-Entwicklers, des gesamten Teams und des Lösungsanbieters unangenehm. Es gibt nichts zu tun, einen frühen Aufstieg und die Suche nach einer Lösung.


Um zu verhindern, dass solche freudlosen Momente in Ihrem Berufsleben auftreten, erzähle ich Ihnen typische Sicherheitsprobleme und wie Sie sich besser gegen sie versichern können.



Ich werde mich an einen solchen Plan halten:


  1. Sicherheit auf Autorenebene;
  2. Sicherheit auf Veröffentlichungsstufe;
  3. Dispatcher-Sicherheit
  4. CSRF-Rahmenschutz;
  5. DDoS-Angriffe.


Grundlegende Sicherheitstipps für Adobe Experience Manager


Die Welt der AEM-Projekte wird noch besser, wenn jeder Entwickler ein gemeinsames Verständnis dafür hat, wie die Plattform im Allgemeinen vor Datenlecks geschützt werden kann. Nach dem folgenden Diagramm haben wir einen Autor, mehrere Verlage und zwei oder mehr Disponenten (die sogenannten Balancer). Tatsächlich sind diese drei Ebenen in Bezug auf den Datenschutz in erster Linie zu beachten. Dies sind die klassischen Arbeitsregeln, die in der AEM-Community auf der ganzen Welt allgemein anerkannt sind.




1. Verwenden Sie HTTPS . AEM entwickelt sich schnell weiter und bietet die Flexibilität, einen Autor für ein anderes, sichereres Protokoll zu erstellen. Es reicht aus, den Schlüssel „SSL-Assistent“ zu generieren, einen Pfad dazu zu erstellen und somit ein sichereres Protokoll zu verwenden. In Empfehlungen von Adobe ist dieser Schritt genau die erste Priorität in Bezug auf die Sicherheit.


2. Installieren Sie Pakete mit den neuesten Updates. Der Standardprozess des Entwicklers besteht darin, dass Sie bei der Arbeit an Komponenten und Diensten in Google nach Lösungen suchen müssen. Ziel dieses Schritts ist die regelmäßige Überwachung von Service Pack und Hot Fixes. Dann verschwinden viele Probleme, einschließlich der Datensicherheit. Obwohl dies kein Allheilmittel ist, ist es wichtig, das System auf dem neuesten Stand zu halten.




3. Ordentliche Seiten mit Fehlermeldungen erstellen. Wenn Sie zunächst eine Seite mit einer kurzen Beschreibung des Fehlers erstellen, stellt der Client sofort fest, dass der Fehler nicht funktioniert, während der Entwickler das Problem bereits löst. Es ist logisch, dass diese Informationen nicht an Ihnen weitergegeben werden, aber Sie vermeiden Panik seitens des Clients und der Tester sowie Verwirrung bei den Aufgaben.


4. Weigern Sie sich, ein Passwort festzulegen und melden Sie sich bei "admin-admin" an. Es wäre nicht lustig, aber das Problem mit schlechtem Login und Passwort ist selbst in AEM weit verbreitet. Infolgedessen erhalten wir aus Gründen der Geschwindigkeit oder anderer Überlegungen das anfälligste System. Wenn Sie feststellen, dass die primitiven Anmeldedaten festgelegt sind, versuchen Sie, das Team / die Vorgesetzten zu überzeugen und sie so schnell wie möglich in zuverlässigere zu ändern.


Sicherheit auf Autorenebene


Verwenden Sie zuerst vpn . Die Verwendung eines virtuellen geschützten Netzwerks ist die Arbeit eines sicheren privaten Netzwerks, um eine sichere Verbindung zwischen Ihnen und dem Server herzustellen. Dies ist ein einfaches und wichtiges Tool: Da Ihr Datenverkehr verschlüsselt wird, ist es unmöglich herauszufinden, von wo Sie Ihre Daten senden. Es stellt sich heraus, dass mit vPn niemand auf Ihre Instanz zugreifen kann.


Dieser Ansatz eignet sich für Remote-Entwickler und alle, deren Arbeit an verschiedenen Standorten mit einer instabilen Internetverbindung ausgeführt wird.


Zweitens sollte Ihr "Autor" immer geschlossen sein, auch von Google . Sie können also ein Passwort abrufen und das System hacken: Nachlässig kann der Autor indiziert werden. Um Ihre Sicherheitsanfälligkeit in einer Suchmaschine zu überprüfen, geben Sie in deren Zeile Ihre Domain und Ihren Autor sowie den Pfad zu crx ein. Ja, Sie können Yandex oder Google kontaktieren, um eine solche Zeile im SERP zu löschen. Während das Problem behoben wird, ist das System jedoch bereits öffentlich verfügbar.




Drittens sollten Sie die Berechtigungen des Benutzers "admin" nicht unterschätzen , der am häufigsten die Möglichkeit hat, verfügbare Vorgänge auszuführen.


Dies ist besonders wichtig, wenn sich ein Mitarbeiter vom Unternehmen verabschiedet. In der Tat ist der Zugriff auf die Instanz für die meisten Unternehmen nicht persönlich, sondern über ein Administratorkonto. Es ist logischer, das Gegenteil zu tun und sich der spezifischen Änderungen eines bestimmten Autors im System bewusst zu sein.


In AEM 6.1 wurde ein neuer Ansatz eingeführt, mit dem Sie bestimmte Rechte für ein Bundle oder einen Benutzerdienst festlegen können. Es ist jedoch besser, ein persönliches Profil zu erstellen: Es ist für den Mitarbeiter angenehm und für das Unternehmen einfacher zu verfolgen, wer über welche Zugriffsebenen auf das System verfügt. Dieser Ansatz ist für Autoren- und Herausgeberebenen relevant.


Sicherheit veröffentlichen


In der Regel stellen sie erst nach langer Zeit im Projekt fest, dass sie den anonymen Benutzer nicht überprüft haben. Und während ein gewöhnlicher Benutzer möglicherweise Einschränkungen für Vorgänge hat, hat ein anonymer Benutzer - was häufig vorkommt - viel mehr Rechte, um Vorgänge auszuführen.




Der Apache Sling Referrer- Filter ist ein praktischer und effektiver Mechanismus, um Ihre Anwendung sicher zu machen. Wenn Sie beispielsweise Metriken an AEM senden, werden Informationen zum Senden von Daten im Posteingang angezeigt. Wenn Sie den Standardwert überschreiten, kann ein Drittanbieter-System diese Anforderung senden. Dies bedeutet, dass niemand eine Anfrage senden kann. Sie geben die Domäne in die Konfiguration ein, zum Zeitpunkt der Anforderung vergleicht sie sie mit den ursprünglich eingegebenen Daten, und wenn alles übereinstimmt, erfolgt die Integration.


Es wird sich herausstellen, dass der Filter flexibler konfiguriert werden kann: Sie können die Anforderung, die Methode und den Host angeben. Es gibt auch einen leeren Wert oder ein Sternchen für detailliertere Abfragen.




Sicherheit auf Dispatcher-Ebene


Entwickler sind in 10% der Fälle mit Streit konfrontiert. Dies ist also die Hauptkonfigurationsdatei, in der wir den Typ der URL festlegen (Verbieten / Zulassen).



Normalerweise erledigen Entwickler eine kleine Aufgabe, erstellen eine Regel und vergessen, dass dadurch eine Sicherheitsanfälligkeit entsteht. Damit niemand versucht, Ihre Instanz anzugreifen, müssen Sie die URL zum Zeitpunkt der Verfügbarkeit mit Selektoren überprüfen.


Über die Konfigurationsdatei können Sie die Verarbeitung von Headern festlegen. Denn je genauer Sie den Zack, die Methode usw. angeben, desto weniger wird eine solch detaillierte Einstellung definitiv etwas kaputt machen. Dies sind elementare Beispiele. Was ist, wenn es Hunderte solcher Regeln gibt und das Navigieren schwieriger ist?


Am einfachsten ist es, die Protokollierung zu aktivieren. Abhängig von der Version von Apache kann sich der Arbeitsmechanismus geringfügig ändern. Das System wird Ihnen jedoch sofort mitteilen, welche URL welche bestimmte Regel für Sie ausarbeitet und welche noch korrigiert werden muss.


Sie können in den Regeln auch Domänen angeben: Dies ist ein Verweis auf die Integration.
Sobald der Dispatcher für das Caching verwendet wird, werden Anforderungen um ein Vielfaches schneller ausgeführt: Sie müssen nirgendwo hingehen und nachsehen, und Sie können sie sofort an den Client senden. Außerdem verbessert diese Methode die Sicherheit Ihrer Anwendung erheblich.


Fälschung von Cross Site Request - gefälschte Anfrage.



Allgemeines CSRF-Prinzip: Angenommen, Sie verwenden Ihr Konto auf der Website der Bank. Nach der Autorisierung haben Sie eine Standardsitzung mit Cookies im Browser, Sie erhalten eine E-Mail und folgen dem Link zu einer verdächtigen Site. Darauf hat ein Angreifer ein Formular eingebettet, nach dessen Abschluss Ihre Daten an die Website der Bank gesendet werden.


Der Punkt liegt im HTTP-Protokoll. Ein Angreifer benötigt nicht viele Daten: Diese Anfrage ist ausreichend. Der Bankserver wird sehen: Eine Anfrage ist eingetroffen, es gibt Cookies und eine Sitzung, alles ist in Ordnung. So funktionieren typische Angriffe.


Was kann AEM geben, um die Fälschung von Abfragen zu verhindern?
Ein klassisches Beispiel für Schutz ist die Erzeugung eines "Geheimnisses" in einer Zeichenfolge. Wenn das Formular generiert wird, wird dieses geheime Token aus dem ausgeblendeten Feld hinzugefügt. Wenn Sie zur Website des Angreifers gehen, erkennt das System das Fehlen eines Tokens oder dessen Ungültigkeit und lehnt das Senden von Daten ab. Manchmal schützen sie sich selbst vor den Benutzern.


Jetzt haben Sie einen regulären Jack, in dem Sie kein verstecktes Feld hinzufügen können. In der Autorisierungsphase gibt der Server ein Cookie mit einem Namen mit SCRF an Sie zurück, überträgt es in den Header und sendet es an den Server. Sie haben also die Anfrage unterschrieben.


AEM erledigt alles für Sie: Es generiert Schlüssel, Token und überprüft die Formularübermittlung


Es gibt Fälle, in denen eine Anwendung in React geschrieben ist und es einen schwierigen Moment bei der Integration gibt. AEM hat diese Situation berücksichtigt: Gehen Sie einfach zu inpoint und unterschreiben Sie es zur Überprüfung. Geeignet bei Verwendung von nicht standardmäßigen Komponenten und Bibliotheken.



Was kann noch getan werden, um das System zu schützen:

  • Verantwortliche Bibliotheken. Es macht keinen Sinn, etwas hinzuzufügen, bis Sie etwas kaputt machen.
  • Auf der niedrigen Ebene können Sie alle "Geheimnisse" sehen. Dies ist eine Art Validierung Ihrer Daten.
  • Es ist ganz einfach: Es gibt eine fertige API und Sie sind bereits vor dieser Art von Angriff geschützt.


DDOS-Angriff - der zweitbeliebteste Angriff


Ziel ist es, die physischen Fähigkeiten des Servers zu erschöpfen. Auf einigen Hosts werden Millionen von Anfragen gestellt. Wenn sie unendlich viele werden, beginnt das System physisch nicht mehr damit umzugehen. In der Regel greifen sie aus mehreren Quellen mächtig an und verwenden ein VPN. 100% davon sind nicht versichert; aber lasst uns ihnen nicht helfen.



In welchen Fällen ist das System anfällig:

  • Konfigurieren Sie das System mit dem falschen Suffix.
  • Es gibt viele Anfragen nach Avs, die der Dispatcher in der Öffentlichkeit nicht weiterleiten kann.
  • Wenn es nicht verboten ist, eine unbegrenzte Anzahl von Inhaltsknoten anzuzeigen. Insbesondere der JSON-Renderer, der die Baumstruktur auf mehreren Ebenen überqueren kann.
  • localhost : 4502 / .json kann das gesamte Repository im JSON-Format sichern.


Um Ihre Arbeit an AEM sicherer zu machen, konzentrieren Sie sich auf die Funktionen bestimmter Benutzer.


Vergessen Sie nicht, die Adobe-Sicherheitscheckliste durchzugehen und alles mit Ihrem Projekt auf AEM stabil zu halten.

Source: https://habr.com/ru/post/de468231/


All Articles