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

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

Accedemos por SSH a la instancia de ubuntu para empezar con los siguientes pasos


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

Para validar Radius
sudo systemctl status freeradius

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

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;

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;

¿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á

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

¿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.

Conéctate al servidor MySQL
(Se esta ingresando con el usuario ROOT)
sudo mysql
Deberías ver un prompt como:

(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:

Para salir escribe EXIT;

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

Valida ingresar con tu usuario creado con; sudo mysql -u TU_USUARIO -p

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;

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

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
}

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)

Si entramos a base de datos veremos las siguientes tablas
Sudo mysql
Use radius;
SHOW TABLES;

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

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