22 Sicherheit ausbauen
Joomla! gilt bereits out-of-the-box als eines der sichersten Content-Management-Systeme. Weitere Sicherheitsmechanismen wie CAPTCHA-Abfragen, SSL-Verschlüsselung und Backend-Verschleierung konfigurieren Sie nachträglich per Hand.
Egal ob Spam-, Hacker- oder Lauschangriffe, am Thema Sicherheit kommen Sie mit Ihrer Website leider nicht vorbei. In Abschnitt 2.5.1, »Testumgebung von außen erreichbar machen«, hatten Sie sich schon mit Sicherheitsaspekten beschäftigt. Zum einen lesen Sie dort, wie Sie per phpMyAdmin individuelle Datenbankkonten erstellen, um den Datenbankzugriff von Joomla! auf die notwendigsten Rechte einzuschränken, eine mögliche Kundenanforderung im Enterprise-Bereich. Zum anderen bezieht sich der Abschnitt auf dieses Kapitel, mit dessen Hilfe Sie u. a. den Zugriff auf die Website oder das Backend durch eine zusätzliche HTTP-Passwortsperre einschränken. Ein praktischer Mechanismus, um von außen erreichbare Testsysteme vor öffentlichen Zugriffen zu schützen oder das Backend-Login vor Hackerangriffen zu verschleiern. Außerdem beschäftigen sich diese Seiten mit der Verschlüsselung von Datenübertragungen und vermitteln Ihnen Hintergrundwissen zur Passworterzeugung und Rechtevergabe des Dateisystems.
Vorab der sicherheitsrelevanteste Hinweis: Die Aktualität Ihrer Joomla!-Installation und aller Erweiterungen ist unverzichtbar. Sobald eine neue Version erscheint, ist es höchste Priorität, das Update auf einem Testsystem auszuprobieren, um sicherzustellen, dass die Website nach der Aktualisierung voll funktionsfähig ist. Wurde das geprüft, erzeugen Sie auf der Live-Website ein Backup und ziehen die Updates so schnell wie möglich nach. Während dies eine der wichtigsten Prämissen für Joomla! und Erweiterungen ist, gilt das auch für Templates. In der Regel greifen diese zwar nicht tief in sicherheitskritische Programmbereiche von Joomla! ein, doch insbesondere komplexe Template-Frameworks können ebenfalls Sicherheitslecks enthalten. Studieren Sie bei einem Update die Release Notes, und sichern Sie alle Dateien, die im Rahmen von Template-Overrides oder sonstigen Tweaks verändert wurden, um sie nach dem Aufspielen des Updates wieder in den Templateordner zu kopieren.
22.1 reCAPTCHA/NoCaptcha aktivieren
Ist Ihre Website einmal live und wurde von Google indexiert, dauert es nicht lange, bis Sie auch unerfreulichen Besuch erhalten. Spambots durchstöbern das Internet nicht nur nach verwundbaren Seiten, sondern auch nach Gästebuch- und Registrierungsformularen, um ihre Pharma- und Finanzierungswerbung zu platzieren. Davon bekommen Sie spätestens mit, wenn Registrierungs-Benutzernamen und -E-Mail-Adressen aus kryptischen Buchstaben- und Ziffernfolgen bestehen.
Joomla! enthält bereits ein gegen solche Spamversuche ankämpfendes Plugin, das die wichtigsten Formulare, z. B. die Benutzerregistrierung, um ein CAPTCHA ergänzt, einen Antispam-Mechanismus, dem Sie laufend im Internet beim Ausfüllen von Formularen begegnen. Vor dem Absenden-Button erscheint ein kleines Bild mit einem Text oder einer Zahl, die in ein Textfeld einzugeben ist; andernfalls lässt sich das Formular nicht abschicken. Spambots schaffen das nicht, denn sie sind nicht in der Lage, die Information im Bild zu entdecken, und so scheitern sie beim Absenden des Formulars. Bei modernen CAPTCHA-Varianten genügt übrigens auch schon ein einzelner echter Mausklick, um sich als Mensch zu identifizieren (siehe Abbildung 22.1).
Hintergrund: Was heißt Spam, und wofür steht CAPTCHA?
Monthy-Python-Fans wissen Bescheid: Das Wort Spam stammt aus einem Comedysketch der 70er-Jahre-Serie Monthy Python’s Flying Circus. Darin zitiert eine Gastwirtin aus dem Menü eines schäbigen britischen Cafés, in dem jedes Gericht Spam, gekochtes Dosenschweinefleisch (Frühstücksfleisch), enthält. Eines der vorgeschlagenen Gerichte ist »Spam, Spam, Spam, Spam, Spam, Spam, gebackene Bohnen, Spam, Spam, Spam and Spam«, was auffallende Ähnlichkeit mit dem Posteingang eines E-Mail-Kontos hat. Machen Sie eine kleine Joomla!-Pause, und schmunzeln Sie über den legendären Sketch auf YouTube: http://tinyurl.com/jh-spam-sketch.
Hinter dem Namen CAPTCHA verbirgt sich eine augenzwinkernde Referenz zum legendären Turing-Test, den Mathematiker Alan Turing 1950 erfand, um den Entwicklungsfortschritt künstlicher Intelligenz zu prüfen. Dabei soll sich ein Computer im Rahmen eines Dialogs als Mensch ausgeben. Der Test ist bestanden, wenn aus dem Dialog nicht ermittelt werden kann, dass es sich beim Gegenüber um eine Maschine handelte. So ist CAPTCHA die Abkürzung für Completely Automated Public Turing test to tell Computer and Humans Apart (deutsch: vollständig automatischer, öffentlicher Turing-Test, um Computer von Menschen auseinanderzuhalten).
Um CAPTCHAs auf Ihrer Website einzusetzen, müssen Sie ein Google-Konto besitzen und sich für den (kostenlosen) Dienst registrieren. Dabei erhalten Sie zwei Codes, über die Sie den CAPTCHA-Mechanismus von Joomla! aktivieren.
-
Besuchen Sie die Website http://www.google.com/recaptcha, klicken Sie oben rechts auf Get reCAPTCHA, und loggen Sie sich mit Ihrem Google-Konto ein. Befüllen Sie nun auf der Verwaltungsseite das Formular Neue Website registrieren:
-
Geben Sie unter Label eine Bezeichnung ein, z. B. den Namen Ihrer Website.
-
Tragen Sie unter Domains den Domain-Namen Ihrer Website ein ohne »http« oder »https«, beispielsweise für die Website zu diesem Handbuch: »joomla-handbuch.com«.
Klicken Sie auf den Button Registrieren, um Ihre CAPTCHA-Codes zu generieren.
-
-
Nun erscheint eine Seite mit Codes und Quelltexten wie in Abbildung 22.2. Wichtig ist der aufklappbare Bereich Schlüssel und die darin enthaltenen Felder Websiteschlüssel und Geheimer Schlüssel, die Sie gleich für die Joomla!-Konfiguration benötigen.
-
Öffnen Sie einen neuen Browsertab, und melden Sie sich im Backend Ihrer Joomla!-Website an. Aktivieren Sie dort den reCAPTCHA-Mechanismus über Komponenten • Plugins, indem Sie per Mausklick in der Spalte Status der Zeile Captcha - ReCAPTCHA das grüne Häkchen () setzen.
-
Wechseln Sie jetzt durch Anklicken der Captcha - ReCaptcha-Überschrift in die Konfiguration des Plugins. Hier wählen Sie aus der Dropdown-Liste Version entweder das alte reCAPTCHA (1.0) oder das neue, zu bevorzugende NoCaptcha (2.0).
-
Kopieren Sie die beiden Codeschlüssel Websiteschlüssel und Geheimer Schlüssel nacheinander per Zwischenablage von der Google-Seite in die Plugin-Konfiguration.
Über die Dropdown-Liste Aussehen lässt sich die Darstellung des reCAPTCHA/NoCaptcha leicht modifizieren. Experimentieren Sie später mit den Werten, um einen Stil zu finden, der am besten zum Design Ihrer Website passt. Speichern & Schliessen Sie die Plugin-Konfiguration.
-
Nach der CAPTCHA-Konfiguration weisen Sie Joomla! an, diese CAPTCHA-Methode auf Formulare wie die Benutzerregistrierung oder Passwort-vergessen-Seite anzuwenden. Diese Einstellung ist notwendig, da Sie anstelle des eingebauten Captcha-ReCAPTCHA auch andere CAPTCHA-Erweiterungen aus dem Joomla! Extensions Directory installieren könnten.
Wechseln Sie zur globalen Konfiguration System • Konfiguration • Reiter Site, wählen Sie aus der Dropdown-Liste Standard Captcha den Eintrag Captcha - ReCAPTCHA, und Speichern & Schliessen Sie das Formular.
Für einen schnellen Test im Frontend klicken Sie auf den Link Benutzername vergessen? oder Passwort vergessen? im Loginmodul. Zwischen Formularfeldern und Senden-Button erscheint nun das CAPTCHA, das bei Nichtbeachtung eine Fehlermeldung beim Absenden des Formulars produziert (siehe Abbildung 22.3).
Problemlösung: Bereits eingerichtetes CAPTCHA funktioniert nicht mehr
Falls Sie zu einem späteren Zeitpunkt in Ihren Formularen das CAPTCHA nicht mehr vorfinden, war das vielleicht unmittelbar nach einem Joomla!-Update. Auch Google aktualisiert den reCAPTCHA-Dienst von Zeit zu Zeit, sodass einmal erzeugte Schlüssel nicht mehr gültig sind, wodurch das CAPTCHA nicht mehr geladen wird.
Wiederholen Sie dann einfach den auf diesen Seiten beschriebenen Prozess, erzeugen Sie einen neuen Websiteschlüssel und Geheimen Schlüssel, und tragen Sie diese noch mal in die Plugin-Konfiguration ein.