PunktDe Kontakt LogoKontakt
Schließen
Einfach Suchbegriff eingeben und Enter drücken
Abbrechen

Multi-Faktor-Authentifizierung in TYPO3 v11

Multi-Faktor-Authentifizierung in TYPO3 v11

Mit der TYPO3 Version 11 hat TYPO3 einige neue Sicherheitsfeatures mit an Board, wie z.B. seit v11.1 eine Multi-Faktor-Authentifizierung (MFA). Mit nur wenigen Griffen kann eine Multi-Faktor-Authentifizierung integriert werden. 

Des Weiteren können TYPO3-Entwickler eigene MFA-Provider entwickeln (MFA API) oder neben den in TYPO3 v11.1 mitgelieferten MFA-Providern weitere im TYPO3 Extension Repository (TER) finden.

In diesem Artikel liegt der Fokus auf der Administration der in v11.1 mitgelieferten MFA-Provider: Time-based one-time password und Recovery codes.

Einen MFA-Provider aktivieren

Time-based one-time password (Einmal-Passwort) und Recovery codes sind sogenannte MFA-Provider, die eine Möglichkeit bieten sich gegenüber dem System zu authentisieren. Es können außerdem mehrere MFA-Provider parallel aktiv sein und das für jeden BE-Benutzer individuell.

Damit auch Backend-Benutzer, die nicht TYPO3-Admin sind MFA-Provider verwenden können, muss ein TYPO3-Admin diese MFA-Provider in einer entsprechenden BE-Gruppe zulassen, die den relevanten BE-Benutzern zugewiesen wird:

Allowed multi-factor authentication providers

Benutzereinstellungen

Ein MFA-Provider wird im Modul Benutzereinstellungen administriert. Auch hier sollte der TYPO3-Administrator sicherstellen, dass dieses Modul dem BE-Benutzer zur Verfügung steht.

Im Tab Account security befindet sich die neue Option Multi-factor authentification, die je nach MFA-Status einen Button für das Einrichten oder einen Button für das Verwalten der MFA-Provider anbietet:

MFA enabled
Benutzereinstellungen

Setup

Der MFA-Provider Time-based one-time password verlangt beim Login einen sechsstelligen Code, der nur 30 Sekunden gültig ist. Hierbei wird eine OTP-Anwendung (One-Time Password) benötigt, wie z.B. der Google Authenticator oder 1Password, die diesen sechsstelligen Code anzeigt.

Der Recovery codes MFA-Provider ist als Fallback gedacht, falls der Standard-Provider, wie in diesem Fall der Time-based one-time password MFA-Provider in irgendeiner Form nicht verwendet werden kann (z.B. Smartphone oder OTP-Anwendung nicht funktionsfähig).

MFA Overview

Sollte der BE-Benutzer folgendes Bild sehen, hat er keine Berechtigung durch einen TYPO3-Administrator erhalten einen MFA-Provider zu aktivieren (siehe auch "Einen MFA-Provider aktivieren"):

Bei der Einrichtung des Time-based one-time password MFA-Providers wird eine OTP-Anwendung, wie z.B. der bereits erwähnte Google Authenticator benötigt, mit dem der QR-Code gescannt wird und daraufhin der sechsstellige Code zur Bestätigung im Feld Enter the generated six-digit code eingetragen wird:

Set up time-based one-time password

Beispielsweise sieht das im Google Authenticator so aus, dass der TYPO3 Sitename (TYPO3 v11) und der BE-Benutzer (user) in Klammern auftaucht:

Google Auth Example

Nach Beendigung der Einrichtung erscheint wieder die MFA-Übersicht und Du kannst weitere MFA-Provider aktivieren oder bereits aktive anpassen oder deaktivieren:

MFA Overview success

Nun aktivieren wir noch als Fallback den Recovery codes MFA-Provider. Hierbei werden achtstellige Codes generiert, die an einem sicheren Ort aufbewahrt werden sollten. Das Speichern der Recovery codes kann ein paar Sekunden dauern, da hier eine zusätzliche Verschlüsselung stattfindet - also nicht wundern, wenn es nicht sofort beim Speichern weitergeht:

Set up recovery codes

Backend-Login mit MFA

Nach der Aktivierung der beiden MFA-Provider erscheint beim Backend-Login nach der üblichen Abfrage des Benutzernamen und Passworts die Abfrage des Einmal-Passworts (Time-based one-time password). Des Weiteren werden auch weitere MFA-Provider angezeigt, in unserem Fall der Recovery codes MFA-Provider:

Time-based one-time password
Recovery Codes

Sollten zu viele Versuche fehlgeschlagen sein, sich mit den entsprechenden Codes zu verifizieren, dann informiert TYPO3 den Benutzer mit einer entsprechenden Meldung:

provider temporarily locked

Eine Entsperrung eines MFA-Providers kann entweder ein TYPO3-Admin vornehmen, z.B. in dem er über das Backend-Benutzer Modul zum entsprechenden Benutzer wechselt und in den Benutzereinstellungen den MFA-Provider entsperrt oder der BE-Benutzer kann sich mit einem alternativen Provider (z.B. Recovery codes) einloggen und dann auch in den Benutzereinstellungen den gesperrten MFA-Provider entsperren (Unlock):

MFA entsperren

Es sei noch erwähnenswert, dass ein TYPO3-Administrator im BE-Benutzer-Datensatz (Tab-Reiter: Allgemein) aktivierte MFA-Provider löschen/deaktivieren kann (aber nicht entsperren):

MFA activation

Offizielle TYPO3-Dokumentation / weitere MFA-Provider

In der offiziellen TYPO3-Dokumentation https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ApiOverview/Authentication/MultiFactorAuthentication.html werden weitere Konfigurationsmöglichkeiten aufgezeigt, sowie eine Anleitung zur Registrierung eines eigenen MFA-Providers über die MFA API.

Im TYPO3 Extension Repository findet man mit dem Suchbegriff "mfa" weitere MFA-Provider: https://extensions.typo3.org/?L=0&id=1&tx_solr%5Bq%5D=mfa

Bonus: Rate Limiter

Wie eingangs erwähnt wurden in TYPO3 v11 neue Sicherheitsfeatures integriert und eine weiteres über das ich gestolpert bin ist der Rate Limiter (Symfony-Bibliothek). Beim Testen des neuen MFA-Features wurden von mir zu oft Benutzername und Passwort falsch in kurzer Zeit hintereinander eingegeben und ich erhielt folgende Meldung:

Durch ein Flush cache (Wartungsmodul / Maintenance) im TYPO3-Backend konnte ich diese Sperre wieder aufheben. Damit werden aber alle Login-Sperren aufgehoben - das nur als Randnotiz.

Das Backend-Login, sowie auch Frontend-Logins werden durch dieses Sicherheitsfeatures geschützt, sodass zu viele fehlgeschlagene Logins von der gleichen IP-Adresse eine Login-Sperre auslösen. Natürlich kann auch dieses Feature angepasst werden, sei es für das Backend- oder Frontend-Login. Ein Beispiel für das Backend-Login:

$GLOBALS['TYPO3_CONF_VARS'][BE][loginRateLimit] = 5;
$GLOBALS['TYPO3_CONF_VARS'][BE][loginRateLimitInterval] = '15 minutes';
$GLOBALS['TYPO3_CONF_VARS'][BE][loginRateLimitIpExcludeList] = '';

Autor: Martin Alker

Kommentare

Bisher wurden keine Kommentare eingereicht.

Weitere Beiträge

27. August 2021

Multi-Faktor-Authentifizierung in TYPO3 v11

Wir haben uns das neue Sicherheitsfeature von TYPO3 v11 genauer angeschaut mehr

13. August 2021

HTMLSanitizer in TYPO3

Wie man Probleme mit dem neuen Sanitizer beheben kann. mehr