MFA mit TOTP selbst hosten — der Self-Hosted-Standard ohne Cloud-Zwang

12. Mai 2026 · Sat-iTec Systemhaus GmbH · 7 Min. Lesezeit

Microsoft 365 MFA macht Sie cloud-abhängig. Duo Security kostet 3-9 €/User/Monat. RSA SecurID braucht Hardware-Tokens. Es gibt eine vierte Option: TOTP nach RFC 6238 selbst implementieren — kompatibel mit allen Standard-Apps, gratis, BSI-konform.

Was TOTP eigentlich ist

Time-based One-Time Password (TOTP) ist seit 2011 als RFC 6238 standardisiert. Es funktioniert so:

  1. Server und Authenticator-App teilen ein gemeinsames Secret (32-stelliger Base32-String).
  2. Beide berechnen einmal pro 30 Sekunden den gleichen 6-stelligen Code aus HMAC-SHA1(Secret, UnixTime / 30).
  3. Der Benutzer tippt den 6-stelligen Code in der Login-Maske ein.
  4. Server prüft: stimmt der Code überein? Wenn ja, einlassen.

Der Witz: Das Secret muss nur einmal beim Setup geteilt werden (per QR-Code). Danach läuft alles offline. Keine Cloud-Anrufe, keine SMS, keine Roaming-Gebühren — die Authenticator-App und der Server brauchen nicht einmal Internet.

Welche Apps unterstützen TOTP nativ

Praktisch jede moderne Authenticator-App:

Alle implementieren denselben RFC 6238 — ein Secret funktioniert in jeder dieser Apps gleichermaßen.

Was Sie für die Self-Hosted-Implementation brauchen

Drei Bausteine genügen für eine produktionsreife TOTP-MFA:

1. Secret-Generierung

Beim ersten Setup pro User generieren Sie ein 32-stelliges Base32-Secret:

# Go-Beispiel:
import "github.com/pquerna/otp/totp"

key, err := totp.Generate(totp.GenerateOpts{
    Issuer:      "ITscanner",
    AccountName: user.Email,
    SecretSize:  32,
})
if err != nil { return err }

// key.Secret() ist das Base32-Secret, in der DB speichern
// key.URL() ist die otpauth://-URL fuer QR-Code-Anzeige

2. QR-Code-Anzeige

Der otpauth-URL kommt in einen QR-Code (z. B. mit der Go-Library github.com/skip2/go-qrcode). Der User scannt das mit seiner Authenticator-App, und das Secret ist beidseitig gespeichert.

3. Code-Verifikation beim Login

valid := totp.Validate(userInput, key.Secret())
if !valid {
    return errors.New("MFA-Code ungueltig")
}
// User ist authentifiziert

Das war's. 3 Funktionen, keine externen Services, keine API-Calls.

Brute-Force-Schutz nach BSI ORP.4

TOTP-Codes haben nur 6 Stellen — das sind 1.000.000 mögliche Werte. Pro 30-Sekunden-Fenster könnte ein Angreifer theoretisch 1 Mio Versuche fahren. BSI ORP.4 verlangt deshalb:

Implementation in ITscanner (vereinfacht):

// Pseudo-Code aus internal/auth/lockout.go
const MAX_ATTEMPTS = 5
const LOCKOUT_MINUTES = 15

func (s *AuthService) Login(username, password, totpCode string) (string, error) {
    if s.IsLocked(username) {
        return "", errors.New("Account gesperrt - 15min warten")
    }
    if !s.VerifyPassword(username, password) {
        s.RecordFailedAttempt(username)
        return "", errors.New("Falsche Anmeldedaten")
    }
    if !s.VerifyTOTP(username, totpCode) {
        s.RecordFailedAttempt(username)
        return "", errors.New("MFA-Code ungueltig")
    }
    s.ClearAttempts(username)
    return s.IssueSession(username), nil
}

Backup-Codes für den verlorenen Phone-Fall

Was passiert, wenn der User sein Handy verliert? Klassische TOTP-Implementations lassen Backup-Codes zu — 10 einmalig nutzbare Codes, die beim Setup angezeigt werden.

Diese Codes müssen:

Wenn alle 10 Backup-Codes verbraucht sind, muss der Admin den User-Account zurücksetzen (neuer TOTP-Secret, neue Backup-Codes).

MFA-Pflicht — ja oder nein?

BSI ORP.4 verlangt MFA für privilegierte Konten — Admin-Logins, Service-Accounts mit weitreichenden Rechten, Konten mit Zugriff auf sensible Daten.

Für normale User-Konten ist MFA empfohlen, aber nicht zwingend. Praktisch sollten Sie das aber so machen:

ITscanner-Setup: MFA in 60 Sekunden

So aktivieren Sie MFA für Ihren Admin-Account in ITscanner:

  1. Im Tab „Einstellungen → MFA / Authentifizierung" auf „MFA aktivieren" klicken.
  2. QR-Code mit Microsoft / Google Authenticator scannen.
  3. Den 6-stelligen Code zur Verifikation eintippen.
  4. Die 10 Backup-Codes ausdrucken oder im Passwortmanager speichern.

Beim nächsten Login fragt ITscanner zusätzlich zum Passwort den TOTP-Code ab. Logout-Zeit: 15 Minuten Inaktivität (konfigurierbar).

ITscanner jetzt 7 Tage testen — Flat-Rate 49,50 €/Jahr

Vollständige Funktionen, keine Asset-Limits, keine Cloud, keine Kreditkarte. Aktivieren in 5 Minuten.

Kostenlos herunterladen   Vergleich mit Docusnap & Lansweeper →

Verwandte Beiträge