lunes, 16 de enero de 2017

Script para migrar usuarios del sistema (Ubuntu 12.04) a servidor RADIUS (Freeradius/Daloradius)



En esta entrega voy a compartir un script que permite migrar los usuarios Linux (Ubuntu 12.04) a un servidor Freeradius.
Este escenario se aplica al caso que tengamos autentificando un servicio como por ejemplo el RAS con usuarios del sistema y necesitamos pasar la autentificación a RADIUS. Como se podrá observar este script tiene por objetivo que el proceso de migración sea trasparente para el usuario remoto que va a autentificarse.
Suponemos que tenemos instalado freeradius con soporte para mySQL, además de Daloradius para administración gráfica.
Previamente debemos copiar el archivo /etc/shadow desde el servidor RAS al servidor freeradius en la misma carpeta donde ejecutaremos el script y lo renombraremos como shadow.txt. Este archivo contiene los usuarios y password encriptados del sistema Linux; aprovecharemos el atributo radius Crypt-Password para insertar el password encriptado del usuario en la BBDD mysql de freeradius. Si no queremos importar determinado usuario sencillamente eliminamos la línea que lo contiene en el fichero shadow.txt, después de copiado.

EL script

#!/bin/sh
# Este script lee usuarios del fichero shadow y los inserta en la bd
# de freeradius/Daloradius.
# fichero q contendra las sentencias SQL
filebase="sql-insert-users.txt"
# Eliminanmos el fichero si existiera previamente
rm -f $filebase
# Creamos el fichero
touch $filebase
users=$(cat shadow.txt)
for u in $users
do
# Tomamos la primera columna q contienes el username
usuario=`echo $u|cut -d: -f1`
# Tomamos la segunda columna q contiene el password, el separador entre columnas es :
pass=`echo $u|cut -d: -f2`
echo "Creando usuario -> usuario=$usuario passw=$pass"
echo "INSERT INTO radcheck (username,attribute,op,value) VALUES ('$usuario','Crypt-Password','==','$pass');" >> $filebase
# la tabla userinfo es agregada por Daloradius al squema de freeradius, si no usamos Daloradius 
# comentar la sgte linea
echo "INSERT INTO userinfo (username) VALUES ('$usuario');" >> $filebase
done
# user y pass de mysql con derecheros a insertar en la tabla radcheck y/o userinfo en la BD radius
mysql --user=root --password=passroot radius < $filebase