Zwei-Faktor-Authentisierung für CiviCRM

Was ist Zwei-Faktor-Authentisierung?

Vereinfacht gesagt geht es bei der Zwei-Faktor-Authentifizierung darum, ein weiteres Schloss an der Login-Tür eines zugangsbeschränkten Systems anzubringen, so dass dieses auch dann sicher(er) ist, wenn der erste Schlüssel, nämlich das Passwort, in fremde Hände gerät. Das kann nämlich schneller geschehen, als man denkt. Um nur einige Beispiele zu nennen: Jemand hat sich zum E-Mail-Postfach Zugang verschafft und setzt das Passwort zurück, der eigene PC ist mit einer Schadsoftware infiziert und diese „liest“ das Passwort bei der Eingabe mit, statt im Passwortmanager wurde das Passwort aus Unwissenheit oder „versehentlich“ unverschlüsselt im Browser gespeichert und es wird dort ausgelesen usw. usf. In allen diesen Fällen verhindert nun eine zweite Authentisierung – der „zweite Faktor“ – trotzdem den missbräuchlichen Login. Viele kennen dies bereits vom Onlinebanking, wo Banken oft beim ersten Login auf einem neuen Browser zusätzlich zum Passwort eine Authentisierung mittels SMS-TAN, Banking-App oder – datenschutzfreundlicher – mit einem TAN-Generator für die Bankkarte verlangen. In ähnlicher Weise ist es auch möglich, den Zugang zu CiviCRM mit einem weiteren Faktor abzusichern.
Einen niedrigschwelligen allgemeinen Überblick zur 2-Faktor-Authentisierung gibt auch dieser Artikel des BSI.

Wie funktioniert das mit CiviCRM?

Da CiviCRM für den Login die Nutzer*innenverwaltung des Content-Management-Systems nutzt, ist die einfachste Lösung der Einsatz eines geeigneten WordPress-Plugins bzw. Drupal-Moduls.
Achtung: Die Auswahl einer guten Erweiterung ist nicht zu unterschätzen! Denn der erhoffte Sicherheitsgewinn kann auch schnell ins Gegenteil umschlagen, wenn eine unseriöse oder nicht mehr gewartete Erweiterung genutzt wird und diese dann selbst zum Einfallstor werden kann. Gleiches gilt für die Einrichtung: Oft ist diese leicht zu bewältigen, kann je nach eingesetzter Technik aber auch Fallstricke haben und muss in jedem Falle mit größter Sorgfalt erfolgen. Einige Tipps für entsprechende Erweiterungen findest Du z.B. hier im Discourse in diesem Beitrag. Es empfiehlt sich zudem Erweiterungen prinzipiell nicht auf dem Live-System auszuprobieren und vor der Einrichtung Backups anzufertigen, zumal manche 2FA-Erweiterungen über „Schutzmechanismen“ verfügen, die ein einfaches Deinstallieren verhindern sollen.

Beispiel: TOTP-Authentisierung mit dem WordPress-Plugin WP2FA

Einrichtung des Plugins

Jede Erweiterung bringt eigene Funktionen und Besonderheiten bei der Einrichtung mit. Im Falle der kostenfreien Basisversion des Plugins WP2FA für WordPress führt ein Einrichtungsassistent nach der Installation des Plugins über das normale WordPress-Pluginverzeichnis durch die Konfiguration.
Entscheidend ist dabei die Auswahl der Authentifizierungsmethode gleich im zweiten Schritt:

In ihrer kostenlosen Version bietet dieses Plugin zwei Methoden an: Die Authentisierung über einen TOTP-Code (dazu gleich mehr) und durch einen Einmalcode per E-Mail (HOTP).
So verführerisch praktisch es erscheinen mag: Für fast alle Anwendungsfälle ist von der Verwendung per E-Mail verschickter Eimalcodes als zweiten Faktor abzusehen. Ein voller zweiter Faktor liegt nämlich dann normalerweise nicht vor, da die E-Mails oft auf dem gleichen Endgerät abgerufen werden bzw. den gleichen Kommunikationskanal nutzen (wie im Falle des Passwort-Zurücksetzens).
Anders ist es bei den TOTP-Codes: Hierbei handelt es sich um ein Standardverfahren, das abhängig von einem hinterlegten geheimen Schlüssel und der Uhrzeit ein Einmalkennwort generiert. Der hinterlegte Schlüssel ermöglicht es, diese Erzeugung auf eine separate Anwendung auf einem bestimmten Endgerät zu beschränken.
Klingt kompliziert? Ist es in der Praxis nicht: Die häufigste Umsetzung dieser Methode sieht nämlich einfach so aus, dass man auf einem Smartphone – also einem vom Rechner mit Civi-Login getrennten Endgerät – eine App installiert. Diese App tauscht in unserem Falle mit dem Plugin WP2FA einmalig einen geheimen Schlüssel aus und hinterlegt ihn in der App. In der Zukunft kann ich die App aufrufen und einen passenden Einmalcode generieren und ihn beim Login eingeben. Ohne mein persönliches Handy kommt also niemand unbefugtes mehr mit meinem Login ins CiviCRM. Wie das genau aussieht, schauen wir uns gleich an. Zunächst vervollständigen wir die Grundkonfiguration.

Zu den Grundfunktionen praktisch aller 2-Faktor-Erweiterungen gehört es, dass man sie auf bestimmte Nutzer*innenrollen oder einzelne Nutzer*innen beschränken kann. In aller Regel empfiehlt sich die Einrichtung für alle, da zwar Administrator*innen durch ihre Berechtigungen vielleicht mehr Schaden anrichten können, aber auch ein gekaperter Account mit Nur-Lesen-Berechtigung kann selbsterklärend zum Abfluss sensibelster Daten führen. Im Beispiel wählen wir daher:

Abschließend erhalten wir die Möglichkeit eine Übergangsfrist einzurichten. Innerhalb dieser Gnadenfrist können sich unsere Mitstreiter*innen mit dem Thema beschäftigen …

… und erhalten dann ab sofort beim Login eine Aufforderung ihren zweiten Faktor zu konfigurieren:

Mit Klick auf 2FA-Einstellungen jetzt einrichten startet auch für diese ein entsprechender Assistent, der durch den Prozess führt. Da wir uns für die TOTP-Authentisierung mit Hilfe einer App entschieden haben, widmen wir uns zunächst kurz dieser.

TOTP-App installieren (und meine Kolleg*innen dafür gewinnen)

Oben wurde der Authentifizierung mit TOTP aus Gründen der Sicherheit der Vorzug gegeben. Es gibt noch eine Reihe weiterer Vorteile, z.B. dass bei der Auswahl der „richtigen“ App ein denkbar datenschutzfreundliches Verfahren vorliegt. So geraten etwa keinerlei Metadaten oder gar biometrische Daten an Dritte. Gleichwohl hat das System auch Nachteile: Oft verfügen die Endnutzenden nicht über ein separates Diensthandy und damit stellt sich die Frage nach der Installation auf dem Privathandy. Es gibt durchaus auch Alternativen hierzu, etwa der Einsatz des TOTP-Verfahrens mit einem Hardware-Schlüssel wie z.B. dem YubiKey. Es gibt aber auch gute Argumente, warum für viele der Einsatz auf dem Privatgerät vertretbar scheint. Besonders schlagend: Es handelt sich bei TOTP keineswegs um ein Verfahren, dass man eigens und nur für die Civi-Nutzung einführt! Es ist im Gegenteil ein verbreiteter Standard und die ensprechende App können und sollten die Kolleg*innen auch für ihre eigenen sonstigen privaten und dienstlichen Webkonten nutzen. In einer für die Sicherheit im Web sensibleren Welt würde man nicht Gemurre und Bedenken erwarten, sondern die selbstverständliche Rückmeldung, dass man natürlich schon eine OTP-App hat und welche :wink: Das überzeugendste Argument an Zweifler*innen ist somit vermutlich der Hinweis, dass hier eine Funktion eingerichtet wird, die man auch selbst für weitere zu schützende Accounts nutzen kann.
Welche App ist nun also empfehlenswert? Die Platzhirsche sind wenig überraschend Google mit dem Google Authenticator und Microsoft mit der Microsoft Authenticator-App. Wenn etwa letztere im Kontext von MS Office365 bereits im Einsatz ist, kann sie auch hier verwendet werden. Ansonsten ebenfalls wenig überraschend hier auf dem Open-Source-Community-Portal: Wir raten aus grundsätzlichen Erwägungen von diesen ab und empfehlen Freie Software. Für Android wird etwa häufig der Aegis Authenticator empfohlen, für iOS Raivo OTP. Im Beispiel installieren wir Aegis, die sowohl über F-Droid als auch über den Google Play Store verfügbar ist.

Schlüsseltausch und Login mit der TOTP-App

Wie beabsichtigt erhalten wir nun also nach dem Login die Möglichkeit genau eine Authentisierungsmethode auszuwählen:

einrichtung_wizard5_wp2fa

Im nächsten Schritt wird der besagte geheime Schlüssel generiert und muss in die Handyapp übertragen werden. Das kann ich am einfachsten mit dem nun angezeigten QR-Code machen, sollte das nicht klappen, den Code aber auch abtippen.
Warnung: Diesen Code nirgends ablegen oder gar weitersenden!

Wir rufen nun die Aegis-App auf und fügen einen Eintrag mittels rotem „+“-Button unten rechts in der App hinzu und wählen QR-Code scannen. Der Eintrag sollte natürlich sinnvoll benannt und dann gespeichert werden.
Die App wird nun nach dem Aufrufen fortlaufend gültige Zugangscodes generieren und neben dem Eintrag anzeigen. Das wird auch gleich zur Bestätigung des Schlüsseltauschs gebraucht.
Abschließend folgt noch ein wichtiger Schritt: Es werden „Notfall-Codes“ erzeugt, mit denen auch bei Verlust des zweiten Faktors – etwa durch Diebstahl des Handys – ein Zugang wiederhergestellt werden kann. Diese Codes müssen natürlich besonders sicher verwahrt werden, etwa in einem verschlüsselten Speichermedium oder ausgedruckt an einem sicheren Ort. Die Codes können auch zu einem späteren Zeitpunkt erzeugt oder ersetzt werden. Um sich nicht auszusperren, sollte dieser Schritt dennoch möglichst nicht übersprungen werden.

Fertig! Von nun an wird nach dem Eingeben des Passworts als zweiter Schritt diese Aufforderung angezeigt. Nun heißt es App entsperren, Code eingeben – fertig!

Tipp: In den Plugin-Einstellungen kann man den hier in Englisch angezeigten Text durch einen deutschen ersetzen und in unserem Falle auch den Hinweis auf die E-Mail entfernen.

Brauche ich 2FA wirklich?

Grundsätzlich ist unbestritten, dass die 2-Faktor-Authentisierung einen erheblichen zusätzlichen Schutz für wichtige Zugänge wie im Falle von CiviCRM darstellt. Grundsätzlich gilt aber auch, dass bei IT-Sicherheit die Gesamtsituation entscheidend ist: Im Zweifel geht es immer um das schwächste Glied in der Kette. Ein zweiter Faktor als dickes weiteres Schloss am Haupttor nützt nämlich wenig, wenn etwa andererseits Sicherheitsupdates nicht regelmäßig eingespielt werden und die Hintertür weit offen steht. Entsprechend empfiehlt es sich das Thema in einen Gesamtcheck einzubauen. Es werden dann sehr wahrscheinlich eine Reihe von Maßnahmen ins Blickfeld geraten, wie z.B. Update- und Backupstrategien, die Einführung von Passwortsafes, der Umgang mit unsicheren Endgeräten wie Handys, Awareness für Phishing-Angriffe – und vermutlich auch die 2-Faktor-Authentisierung.
Auch wenn das so ist, hat diese Einleitung hoffentlich trotzdem veranschaulicht, dass im Falle von CiviCRM 2FA in vielen Fällen letztlich schnell und einfach einzurichten ist und darum ging es im Text. Selbstverständlich gibt es eine Reihe weiterführender spannender Themen in diesem Feld – von zentralen Authentifizierungsdiensten bis zum passwortfreien 2-Faktor-Login mit FIDO2. Auch hier sind Erfahrungen herzlich willkommen.

3 „Gefällt mir“

Lieber Andreas,

danke für Deinen ausführlichen und richtig guten Post hier. Ich will noch etwas aus fast persönlicher Erfahrung teilen. Sorry, wenn es etwas klugsch*-ig rüberkommt ,)
In CiviCRM sind halt personenbezogene Daten und ein verantwortungsvoller Umgang damit ist mir wichtig.

Ich denke der zweite Faktor gibt schon einen großen Gewinn. IT-Sicherheit muss man sich halt insgesamt wie ein Stück Käse vorstellen :wink: Irgendwo gibt es immer eine Lücke, sie ist nur noch nicht gefunden worden. Je mehr Scheiben man voreinander stellt, desto schwieriger wird es, durch alle Scheiben durch zu kommen.

Sollte jemand zum Beispiel keinen Passwortmanager nutzen, dann wird in den meisten Fällen wohl der Browser das Passwort für CiviCRM abgespeichert haben. Eine Ransomware stiehlt diese Passwörter zu 100%iger Sicherheit. Das heißt, im Falle eines Trojanerangriffs kann sich jemand Drittes ins CiviCRM einloggen. Das verhindert ein zweiter Faktor effektiv.

Und übrigens ist das Verwenden eines Passwortmanagers wie keepassXC oder bitwarden o.Ä. aus meiner Sicht Pflicht, wenn man mit CiviCRM arbeitet. Die Passwörter hier kann ein Trojaner nämlich nicht klauen, da sie auf jeden Fall verschlüsselt abgelegt sind und durch ein Master-Passwort geschützt sind.

Viele Grüße
Bene

3 „Gefällt mir“