Test der Authentifizierung mit Challenge Response

Das RADIUS Challenge/Response Verfahren erleichtert dem Benutzer eine Zweifaktor-Authentifizierung. Der dadurch etwas komplizierter werdende Test wird hier beschrieben.

Einleitung

Gerade im Zusammenhang mit einer Zweifaktor-Authentifizierung ist die Nutzung des RADIUS Challenge/Response-Verfahrens nützlich. Der Nutzer muß z.B. bei Nutzung eines Einmalpaßwort-Generators (Token) sein statisches Paßwort und das Einmalpaßwort nicht mehr hintereinander in ein einziges Paßwortfeld schreiben. Stattdessen erfolgt eine (aus Benutzersicht) ganz normale Anmeldung mit Nutzername und Paßwort, anschließend wir der Nutzer separat zur Eingabe des Einmalpaßwortes aufgefordert.

Test

Der Test erfolgt mithilfe des Tools "radclient". Das ist ein generischer, kommandozeilenbasierter RADIUS-Client, welcher u.a. Bestandteil des FreeRADIUS-Paketes ist. Die Installation erfolgt unter Linux i.d.R. mit dem Paketmanager der jeweiligen Distribution.

Im ersten Schritt erfolgt die Authentifizierung mittels Username und Paßwort:

# echo "User-Name=mmustermann", "User-Password=1234" | \
  radclient -sx 10.10.10.10 auth secret

In diesem Beispiel meldet sich der Benutzer "mmustermann" mit seinem Paßwort "1234" am RADIUS-Server mit der IP-Adresse 10.10.10.10, das RADIUS-Secret zwischen dem Client, von welchem aus der Test erfolgt und dem RADIUS-Server lautet "secret". Bei einer erfolgreichen Authentifizierung wird folgendes ausgegeben:

Sent Access-Request Id 209 from 0.0.0.0:59512 to 10.10.10.101812 length 48
        User-Name = "mmustermann"
        User-Password = "1234"
        Cleartext-Password = "1234"
Received Access-Challenge Id 209 from 10.10.10.10:1812 to 0.0.0.0:0 length 59
        State = 0x3033353032313932353932353339323938353032
        Reply-Message = "Einmalpasswort:"
(0) -: Expected Access-Accept got Access-Challenge
Packet summary:
        Accepted      : 0
        Rejected      : 0
        Lost          : 0
        Passed filter : 0
        Failed filter : 1

Mit der Reply-Message (im Beispiel "Einmalpasswort:") wird der Nutzer zur Eingabe des 2. Faktors aufgefordert. Entscheidend ist der State (der Status), im Beispiel "0x3031353436323239373533313731313339383335". Dieser wird bei der Antwort (Response) als State angegeben:

echo "User-Name=mmustermann", "User-Password=567890", \
"State=0x3031353436323239373533313731313339383335" | \
radclient -sx 10.10.10.10 auth secret

Die Antwort sieht dann folgendermaßen aus:

Sent Access-Request Id 197 from 0.0.0.0:41665 to 10.10.10.10:1812 length 70
        User-Name = "mmustermann"
        User-Password = "567890"
        State = 0x3033353032313932353932353339323938353032
        Cleartext-Password = "567890"
Received Access-Accept Id 197 from 10.10.10.10:1812 to 0.0.0.0:0 length 48
        Reply-Message = "RADIUS access granted"
Packet summary:
        Accepted      : 1
        Rejected      : 0
        Lost          : 0
        Passed filter : 1
        Failed filter : 0

Entscheidend ist hier die Angabe "Accepted: 1" in der Zusammenfassung.