RADIUS-Server: Hashing des Passworts vor der Überprüfung

RADIUS-Server: Hashing des Passworts vor der Überprüfung

Ich muss einen RADIUS-Server zur Authentifizierung mit einem Captive Portal von pfSense einrichten. Leider werden alle Passwörter in der RADIUS-Datenbank mit einem bestimmten Algorithmus gehasht. Ich verwende eine MySQL-Datenbank.

Da die Benutzer ihre Passwörter im Klartext an den RADIUS-Server übermitteln, frage ich mich, ob ich das übermittelte Passwort auf dem RADIUS-Server hashen und anschließend die Existenz des Benutzernamens und des gehashten Passworts überprüfen kann.

Wenn es vermeidbar ist, möchte ich das Passwort nicht clientseitig hashen. Das Captive Portal von pfSense ist derzeit die einzige Anwendung, die den RADIUS-Server verwendet. Wenn ich meine Infrastruktur jedoch erweitern möchte, müsste ich den Hashing-Algorithmus auf jedem Client implementieren.

Gibt es generell eine Möglichkeit den RADIUS-Server auf diese Weise zu modifizieren? Vielleicht durch Modifizierung des Cores? Leider weiß ich nicht in welcher Datei die übermittelten Daten in der Datenbank nachgeschlagen werden.

Hat jemand einen Tipp für mich, wo ich unbedingt suchen muss?

(Ich verwende Ubuntu Server 12.04 x86, Freeradius, Freeradius-MySQL)

Antwort1

Wenn Sie alternativ ein externes PHP-Skript verwenden möchten, können Sie Folgendes in „authorize“ einfügen:

authorize {
    update {
        Tmp-String-0 := `/usr/bin/php5 -f /path/to/cpauth.php '%{User-Name}' '%{User-Password}'`
    }

    if (Tmp-String-0 == 'Accept') {
        update control {
            Auth-type := Accept
        }
    }
    else {
        reject
    }
}

Geben Sie dann „Akzeptieren“ oder „Ablehnen“ als Echo aus.

Antwort2

Konfigurieren Sie eine Instanz des rlm_sql-Moduls.

Fügen Sie eine Abfrage hinzu, authorize {}um das gehashte Passwort abzurufen.

update control {
    <password-attribute> := "%{sql:SELECT password FROM foo_table WHERE user=%{User-Name}}"
}

Das Kennwortattribut kann eines der folgenden sein: Klartext-Passwort, MD5-Passwort, SMD5-Passwort, Krypto-Passwort, SHA2-Passwort, SHA-Passwort, SSHA-Passwort, LM-Passwort, NT-Passwort.

Rufen Sie dann das papModul auf. Das Pap-Modul sollte den Auth-Typ auf setzen papund den Wert des Benutzerkennworts hashen, damit er mit dem für den Wert des Kennwortattributs verwendeten Schema übereinstimmt, und sie vergleichen.

verwandte Informationen