Instalar y configurar FreeRadius en Amazon Lightsail con Mikrotik
Este manual detallará la instalación y configuración de FreeRadius en un servidor Linux en una instancia de amazon lightsail con una base de datos MySQL para el registro y autenticación de usuarios. Además, explicará cómo establecer la conexión entre un router MikroTik y FreeRadius. FreeRadius se utiliza para gestionar la autenticación y autorización de usuarios en redes, mientras que MySQL actúa como el almacén de datos para usuarios y atributos. La integración con MikroTik permitirá un control centralizado sobre el acceso a la red, proporcionando seguridad y administración eficientes. El manual guiará a través de cada paso, desde la instalación inicial hasta la configuración detallada de FreeRadius y la conexión con los routers MikroTik, permitiendo a los administradores tener un control más preciso y seguro sobre su infraestructura de red.
1 SE DEBE TENER CREADO UNA INSTANCIA EN AMAZON LIGHTSAIL
Archivo adjunto 4163
Nota
La instancia que se crea tiene que ser de 1GB ya que con 512 MB RAM en Lightsail, MySQL 8 suele morirse por OOM killer durante la instalación
Nota
Para este laboratorio se esta usando ubuntu 22.04 LTS
Verificamos que la instancia sea minimo de 1 GB
Archivo adjunto 4164
Accedemos por SSH a la instancia de ubuntu para empezar con los siguientes pasos
Archivo adjunto 4168
Archivo adjunto 4169
2 Instalación de requisitos previos.
En nuestro servidor linux (Ubuntu) asegúrate de tener acceso de administrador (root) en tu sistema. Abre una terminal y ejecuta los siguientes comandos para instalar los requisitos previos:
sudo apt-get update
sudo apt-get install freeradius freeradius-mysql mysql-server
en caso de que marque error se puede usar el siguiente comando
sudo apt install freeradius freeradius-sql-mysql mysql-server -y
con los siguientes comandos validas que estén correctamente instalados los servicios
Para validar SQL
sudo systemctl status mysql
Archivo adjunto 4165
Para validar Radius
sudo systemctl status freeradius
Archivo adjunto 4166
Nota
Si ambos muestran active (running), en tu entorno de FreeRADIUS + MySQL en Ubuntu 22.04 LTS (Amazon Lightsail) Esto indica que se instalaron los servicios y que existen
3 Instalacion de MySQL en Ubuntu
Sudo apt update
sudo apt install mysql-server
para revisar que se haya instalado correctamente el SQL puedes ejecutar este comando que te mostrara la versión instalada del SQL
mysql –version
Archivo adjunto 4167
En este ejemplo se instalo la versión 8.4.43
OPCIONAL
En caso de que se este intentando en Ubuntu 22 o mayor y no te permita con los comandos anteriores, se puede utilizar estos comando
sudo apt update && sudo apt upgrade -y
Esto asegura que todo esté al día antes de instalar MySQL.
A continuación, instale el paquete mysql-server:
sudo apt install mysql-server -y
4Ahora se aplica configura MYSQL
sudo mysql_secure_installation
Te preguntará si deseas usar el VALIDATE PASSWORD PLUGIN (puedes decir No si no lo necesitas).
Configura una contraseña para el usuario root de MySQL.
Responde Y (Yes) a las preguntas para eliminar usuarios anónimos y desactivar accesos remotos inseguros.
te aparece un mensaje como el siguiente;
Archivo adjunto 4170
Es para que asignes que tipo de contraseña le permitiras al SQL
0 baja 1 medio y 2 fuerte, en este caso colocamos 2
al colocar alguna de las opciones te aparece lo siguiente;
Archivo adjunto 4171
¿Deseas eliminar la base de datos de prueba y los permisos para acceder a ella?
Esto elimina la base de datos llamada test que MySQL crea por defecto y que no se necesita en producción.
Además mejora la seguridad, porque esa base de datos se puede usar sin autenticación en algunos entornos.
Presiona Y y luego Enter
Después te aparecerá
Archivo adjunto 4172
Te pregunta si quieres impedir que el usuario root de MySQL pueda conectarse de forma remota (desde otra computadora).
Si tu servidor MySQL solo se usará localmente (por ejemplo, desde la misma instancia o para aplicaciones en el mismo servidor)
Presiona Y y Enter.
Esto mejora la seguridad.
Si planeas conectarte remotamente como root (por ejemplo, desde tu computadora o una app externa que use root), presiona cualquier otra tecla (por ejemplo, Enter) para responder No.
En ese caso, asegúrate de tener configurado un firewall y usuarios con permisos limitados.
Después parecera
Archivo adjunto 4173
¿Deseas recargar las tablas de privilegios ahora?
Presiona y luego Enter
Esto hace que MySQL aplique inmediatamente todos los cambios de seguridad que configuraste (contraseña de root, eliminación del test DB, bloqueo remoto, etc.).
Nota
Listo! Ya se ha instaldo Mysql
Nota
NOTA: El orden de las preguntas pueden variar
Para verificar que esta corriendo y se instaldo correcto ejecuta los siguientes comnados
sudo systemctl status mysql
Si todo está bien, verás algo como: Active: active (running) Eso confirma que MySQL está corriendo.
Archivo adjunto 4174
Conéctate al servidor MySQL
(Se esta ingresando con el usuario ROOT)
sudo mysql
Deberías ver un prompt como:
Archivo adjunto 4175
(Opcional) Crea un usuario propio
Nota
Crea el usuario con una contraseña fuerte que cumpla la política (usa mayúsculas, minúsculas, número y símbolo):
CREATE USER 'usuario'@'localhost' IDENTIFIED BY 'tu_contraseña';
GRANT ALL PRIVILEGES ON *.* TO 'usuario'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Ejemplo:
Archivo adjunto 4176
Para salir escribe EXIT;
Archivo adjunto 4177
Habilitar arranque automático
Por si no lo está con;
sudo systemctl enable mysql
Esto hace que MYSQL se inicie al prender el servidor en automático
Archivo adjunto 4178
Valida ingresar con tu usuario creado con; sudo mysql -u TU_USUARIO -p
Archivo adjunto 4179
salimos con EXIT;
Para los siguientes pasos se realizan con el usuario root
Se ingresa con sudo mysql
5 CONFIGURACION DE MYSQL PARA RADIUS
crea una base de datos para FreeRadius:
CREATE DATABASE radius;
Crea un usuario y otorga los privilegios necesarios para la base de datos:
CREATE USER 'radius'@'localhost' IDENTIFIED BY 'Radius#123';
GRANT ALL PRIVILEGES ON radius.* TO 'radius'@'localhost';
FLUSH PRIVILEGES;
Nota
NOTA: En el comando anterior el usuario es radius y la contraseña es Radius#123, importante ya que se requerirá de esa información mas adelante
Sal de MySQL con exit;
exit;
6 Configurar FreeRadius con MySQL
Abre el archivo de configuración del módulo MySQL:
sudo nano /etc/freeradius/3.0/mods-available/sql
Nota
Te aparecerá un archivo, para mejor comprendimiento borrar todo lo que aparece y dejarlo como en el siguiente ejemplo, ya que si ese archivo esta incorrecto no funcionara el enlace adecuado
ARCHIVO ORIGINAL QUE HAY QUE BORRAR TODO ELCONTENIDO;
Archivo adjunto 4180
COMO DEBEMOS DE DEJAR EL ARCHIVO
Nota
NOTA; EN CONTRASEÑA DEBE IR LA CONTRASEÑA QUE TU CONFIGURASTE EN LOS PASOS ANTERIORES PARA EL USUARIO RADIUS
Archivo adjunto 4181
sql {
driver = "rlm_sql_mysql"
dialect = "mysql"
server = "localhost"
port = 3306
login = "radius"
password = "contrasena" # <- usa la clave REAL del usuario MySQL 'radius'
radius_db = "radius"
# Nombres de tablas que usa queries.conf
acct_table1 = "radacct"
acct_table2 = "radacct"
postauth_table = "radpostauth"
authcheck_table = "radcheck"
authreply_table = "radreply"
groupcheck_table = "radgroupcheck"
groupreply_table = "radgroupreply"
usergroup_table = "radusergroup"
# Leer grupos y NAS desde SQL
read_groups = yes
read_clients = yes
client_table = "nas"
group_attribute = "SQL-Group"
# Cargar TODAS las queries para MySQL
$INCLUDE ${modconfdir}/sql/main/${dialect}/queries.conf
}
https://foroisp.com/image/png;base64...AAAElFTkSuQmCC
Guarda y cierra el archivo.
ctrl + x
seguido de yes para guardar
7 Habilita el módulo SQL
Crea un enlace simbólico desde el archivo mysql al directorio mods-enabled para habilitar el módulo:
sudo ln -s /etc/freeradius/3.0/mods-available/sql /etc/freeradius/3.0/mods-enabled/
8 Configuración de esquema de base de datos
FreeRadius proporciona esquemas SQL para diferentes bases de datos. Este comando ejecuta las instrucciones SQL del archivo schema.sql en la base de datos MySQL "radius". Esto es esencial para configurar la base de datos de FreeRadius en MySQL, estableciendo las tablas y estructuras de datos requeridas para el funcionamiento correcto de FreeRadius con almacenamiento en MySQL.
Ejecuta el siguiente comando para crear las tablas necesarias en la base de datos:
sudo mysql -u radius -p radius < /etc/freeradius/3.0/mods-config/sql/main/mysql/schema.sql
En caso de que no te funcione el comsndo anterior puedes usar el siguiente:
sudo bash -c "mysql -u radius -p radius < /etc/freeradius/3.0/mods-config/sql/main/mysql/schema.sql"
Así el bash -c se ejecuta como root, y el archivo se leerá con permisos de root.
Te pedirá una contraseña y colocas la del usuario radius que en este ejemplo es el que colocamos en el paso 6 (Radius#123)
Archivo adjunto 4182
Si entramos a base de datos veremos las siguientes tablas
Sudo mysql
Use radius;
SHOW TABLES;
Archivo adjunto 4183
Salimos con exit;
9 Iniciar FreeRadius (salimos de mysql)
Reiniciar servicio
sudo systemctl restart freeradius
Verifica el estado del servicio
sudo service freeradius status
VERIFICAMOS Y EL ESTATUS DEBE ESTAR ACTIVO
Archivo adjunto 4184
Nota
¡Listo! Has instalado y configurado FreeRadius con una base de datos MySQL. Ahora puedes empezar a configurar los clientes NAS y los usuarios en la base de datos para autenticar a través de FreeRadius
Para continuar aprendiendo y ampliando tus capacidades, te recomiendo seguir el manual detallado sobre la creación de clientes, autenticación y limitación de ancho de banda a través del servicio PPPoE. Este tutorial específico te guiará en el proceso paso a paso. Puedes acceder al tutorial completo en este enlace: Agregar Mikrotik como cliente NAS al FreeRadius
C