RADIUS-sever: contraseña hash antes de verificar

RADIUS-sever: contraseña hash antes de verificar

Tengo que configurar un servidor RADIUS para la autenticación con un portal cautivo de pfSense. Desafortunadamente, todas las contraseñas en la base de datos de RADIUS están codificadas con un algoritmo determinado. Utilizo una base de datos MySQL.

Dado que el usuario envía sus contraseñas en texto sin formato al servidor RADIUS, me pregunto si puedo codificar la contraseña enviada en el servidor RADIUS y verificar la existencia del nombre de usuario y la contraseña codificada posteriormente.

Si se puede evitar, no quiero codificar la contraseña en el lado del cliente. El portal cautivo de pfSense es actualmente la única aplicación que utiliza el servidor RADIUS. Pero si quiero ampliar mi infraestructura, tendría que implementar el algoritmo hash en cada cliente.

¿Existe en general la posibilidad de modificar el servidor RADIUS de esta manera? ¿Quizás modificando el núcleo? Lamentablemente, no sé en qué archivo se buscan los datos enviados en la base de datos.

¿Alguien tiene un consejo para mí donde tengo que buscar?

(Yo uso Ubuntu Server 12.04 x86, freeradius, freeradius-mysql)

Respuesta1

Alternativamente, si desea utilizar un script PHP externo, puede colocar lo siguiente en autorización:

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
    }
}

Luego repita "Aceptar" o "Rechazar".

Respuesta2

Configure una instancia del módulo rlm_sql.

Agregue una consulta para authorize {}recuperar la contraseña hash.

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

El atributo de contraseña puede ser uno de Texto sin cifrar-Contraseña MD5-Contraseña SMD5-Contraseña Cripta-Contraseña SHA2-Contraseña SHA-Contraseña SSHA-Contraseña LM-Contraseña NT-Contraseña.

Luego llame al papmódulo. El módulo pap debe establecer el tipo de autenticación papy codificará el valor de la contraseña del usuario para que coincida con el esquema utilizado para el valor del atributo de contraseña y los comparará.

información relacionada