Autenticación WiFi con Radius en un entorno OpenWrt y Ubuntu Server

Esta es una guía para configurar un servidor Radius en Ubuntu Server y configurar un router OpenWRT como punto de acceso WPA2 Enterprise para autenticar a los usuarios en el servidor.

¿Por qué usar WPA2/WPA3-Enterprise con RADIUS?

  • Seguridad Mejorada: Cada usuario tiene su propia contraseña. Si una cuenta se ve comprometida, solo afecta a ese usuario y puede ser revocada fácilmente sin cambiar la contraseña para todos.
  • Gestión Centralizada: Todas las cuentas de usuario se gestionan en un único lugar (el servidor RADIUS).
  • Escalabilidad: Fácil de añadir o quitar usuarios.
  • Roaming: Permite transiciones más fluidas entre puntos de acceso en redes más grandes (aunque no lo cubriremos en detalle aquí).

Prerrequisitos

  • Un servidor con Ubuntu Server instalado (usaremos 24.04 LTS como ejemplo, pero los pasos son similares para otras versiones).
  • Un router compatible con OpenWrt, con acceso a su interfaz web (LuCI) o línea de comandos (SSH).
  • Conocimientos básicos de redes IP y línea de comandos de Linux.
  • Ambos dispositivos (Servidor Ubuntu y Router OpenWrt) conectados a la misma red local (LAN).

Paso 1: Configurar el Servidor Ubuntu

1.1 Actualizar el Sistema

Como siempre, empezamos asegurándonos de que nuestro sistema está al día:

sudo apt update && sudo apt upgrade -y

1.2 Configurar una IP Estática (Netplan)

Nuestro servidor RADIUS necesita una dirección IP fija para que el router OpenWrt siempre sepa dónde encontrarlo. Usaremos Netplan, el gestor de red estándar en Ubuntu Server.

Primero, identifica el nombre de tu interfaz de red:

ip a

Busca tu interfaz principal (suele empezar por enp o eth, por ejemplo enp0s3).

Ahora, edita el archivo de configuración de Netplan. El nombre puede variar, pero suele estar en /etc/netplan/.

sudo nano /etc/netplan/50-cloud-init.yaml # O el nombre de tu archivo .yaml

Modifica el archivo para que se parezca a esto, adaptando los valores a tu red:

network:
  version: 2
  ethernets:
    enp0s3: # <-- ¡Reemplaza con tu interfaz de red!
      dhcp4: no # Desactivamos DHCP para esta interfaz
      addresses:
        - 10.10.1.1/24 # <-- ¡Elige una IP estática libre en tu red LAN!
      routes:
        - to: default
          via: 10.10.1.254 # <-- IP de tu router OpenWrt (o tu gateway principal)
      nameservers:
          addresses: [8.8.8.8, 1.1.1.1] # <-- Servidores DNS (puedes usar los de Google, Cloudflare, o tu router)
#  wifis: {} # Si tienes sección wifi y no la usas, puedes comentarla o borrarla

Explicación:

  • dhcp4: no: Indicamos que no queremos obtener IP por DHCP en esta interfaz.
  • addresses: Definimos la IP estática (ej. 10.10.1.1) y la máscara de subred (/24). Asegúrate de que esta IP esté en el mismo rango que la LAN de tu router OpenWrt y que no esté ya en uso.
  • routes: Definimos la puerta de enlace (gateway). Esta debe ser la dirección IP de tu router OpenWrt (su IP LAN, por defecto 192.168.1.1 en OpenWrt, ¡ajústala!). Esto le da conexión a internet al servidor a través del router.
  • nameservers: Especificamos los servidores DNS para resolver nombres de dominio.

Guarda los cambios (CTRL + O, Enter) y sal del editor (CTRL + X).

Aplica la nueva configuración de red:

sudo netplan apply

Verifica que la IP se ha asignado correctamente:

ip a show enp0s3 # Reemplaza enp0s3 por tu interfaz

Deberías ver la IP estática que configuraste. Comprueba también la conectividad a internet:

ping google.com

1.3 Instalar FreeRADIUS

Usaremos FreeRADIUS, el servidor RADIUS de código abierto más popular. Para este tutorial, instalaremos la versión 3.2 desde el repositorio oficial de NetworkRADIUS en Ubuntu 24.04 (Noble Numbat). Si usas otra versión de Ubuntu o prefieres la versión de los repositorios estándar, adapta los comandos.

Nota: Instalar desde los repositorios de Ubuntu (sudo apt install freeradius) es más sencillo pero puede proporcionar una versión más antigua. Los siguientes pasos usan el repositorio de NetworkRadius para obtener una versión específica (3.2).

  1. Añadir la clave PGP de NetworkRadius:sudo install -d -o root -g root -m 0755 /etc/apt/keyrings curl -s 'https://packages.networkradius.com/pgp/packages%40networkradius.com' | sudo tee /etc/apt/keyrings/packages.networkradius.com.asc > /dev/null
  2. Añadir preferencias de APT para priorizar el repositorio:printf 'Package: /freeradius/\nPin: origin "packages.networkradius.com"\nPin-Priority: 999\n' | sudo tee /etc/apt/preferences.d/networkradius > /dev/null
  3. Añadir el repositorio a las fuentes de APT:
    (Asegúrate de que noble coincide con tu versión de Ubuntu si no es 24.04)echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/packages.networkradius.com.asc] http://packages.networkradius.com/freeradius-3.2/ubuntu/noble noble main" | sudo tee /etc/apt/sources.list.d/networkradius.list > /dev/null
  4. Actualizar la base de datos de APT e instalar FreeRADIUS:sudo apt-get update sudo apt-get install freeradius freeradius-utils (Hemos añadido freeradius-utils que contiene herramientas útiles como radtest).

1.4 Configurar FreeRADIUS

1.4.1 Definir el Cliente RADIUS (Tu Router OpenWrt)

Tenemos que decirle a FreeRADIUS qué dispositivos (clientes NAS – Network Access Server) tienen permitido enviarle solicitudes de autenticación. En nuestro caso, es el router OpenWrt.

Edita el archivo clients.conf. La ruta puede variar ligeramente según la versión, a menudo está en /etc/freeradius/3.0/clients.conf o directamente en /etc/freeradius/clients.conf.

sudo nano /etc/freeradius/clients.conf # o /etc/freeradius/3.0/clients.conf

Añade al final del archivo un bloque como este:

client openwrt_router {
       ipaddr          = 10.10.1.254     # <-- ¡IP LAN de tu router OpenWrt!
       secret          = TuSecret0MuySegur0 # <-- ¡Elige una contraseña MUY segura!
       # shortname     = MiRouterPrincipal # Opcional: un alias
}

¡Importante!

  • ipaddr: Debe ser la dirección IP LAN de tu router OpenWrt (la misma que usaste como gateway en Netplan si el servidor se conecta directamente al router).
  • secret: Esta es la “contraseña compartida” entre el servidor RADIUS y el router. Debe ser larga, compleja y única. La necesitarás exactamente igual en la configuración de OpenWrt.

Guarda y cierra el archivo (CTRL + OCTRL + X).

1.4.2 Añadir Usuarios RADIUS

Ahora, definimos los usuarios y contraseñas que podrán conectarse a la red WiFi. Editaremos el archivo users.

sudo nano /etc/freeradius/users # o /etc/freeradius/3.0/mods-config/files/authorize

Nota: En versiones más recientes, la configuración de usuarios basada en archivos se gestiona a través del módulo files, y el archivo a editar podría ser /etc/freeradius/3.0/mods-config/files/authorize. Si /etc/freeradius/users no existe o está vacío/comentado, usa la ruta del módulo files.

Ve al final del archivo y añade tus usuarios. Para empezar, usaremos autenticación simple con contraseña en texto claro (PAP), aunque esto no es lo más seguro para producción.

# Usuario 1
juan    Cleartext-Password := "Contras3ñaDeJuan!"

# Usuario 2
ana     Cleartext-Password := "P@sswordDeAnaD1ficil"

# Puedes añadir tantos como necesites
# nombre_usuario    Cleartext-Password := "su_contraseña"

¡ADVERTENCIA DE SEGURIDAD! Usar Cleartext-Password (PAP) envía la contraseña del usuario casi sin protección entre el cliente WiFi y el punto de acceso. Para entornos reales, deberías investigar métodos más seguros como EAP-TTLS o PEAP, que requieren configuración adicional (incluyendo certificados). Para esta guía inicial, usaremos Cleartext-Password pero ten en cuenta sus limitaciones.

Guarda y cierra el archivo (CTRL + OCTRL + X).

1.4.3 Reiniciar el Servicio FreeRADIUS

Para aplicar todos los cambios, reinicia el servicio FreeRADIUS:

sudo systemctl restart freeradius.service

Comprueba que el servicio esté corriendo sin errores:

sudo systemctl status freeradius.service

Deberías ver “active (running)”. Si hay errores, puedes intentar ejecutar FreeRADIUS en modo debug para ver mensajes más detallados:

sudo freeradius -X

(Presiona CTRL + C para detener el modo debug).

1.4.4 (Opcional pero recomendado) Configurar Firewall

Si tienes un firewall activado en tu servidor Ubuntu (como ufw), asegúrate de permitir las conexiones entrantes para RADIUS (puertos UDP 1812 para autenticación y 1813 para accounting):

sudo ufw allow 1812/udp
sudo ufw allow 1813/udp
# sudo ufw enable # Si no estaba activado
# sudo ufw reload # Para aplicar las reglas

Paso 2: Configurar el Router OpenWrt

Ahora configuraremos el router OpenWrt para que use nuestro servidor RADIUS.

2.1 Acceder a OpenWrt

Abre tu navegador web y ve a la dirección IP de tu router OpenWrt (por defecto 192.168.1.1, pero usa la IP que configuraste como gateway en el servidor Ubuntu). Inicia sesión con tus credenciales (usuario root sin contraseña por defecto, ¡deberías haberla cambiado!).

2.2 Instalar el Paquete wpad Completo

OpenWrt viene por defecto con una versión “mini” o “basic” de wpad (el paquete que maneja la autenticación WiFi) que no soporta WPA-Enterprise/RADIUS. Necesitamos instalar la versión completa.

  1. Ve a System > Software.
  2. Haz clic en el botón Update lists… y espera a que termine.
  3. En la pestaña Installed, busca wpad-basic (puede tener un sufijo como -mbedtls o -wolfssl). Si lo encuentras, haz clic en Remove para desinstalarlo.
  4. Ve a la pestaña Available.
  5. En el campo Filter, busca wpad (sin -basic).
  6. Busca el paquete llamado wpad o wpad-openssl (o wpad-wolfssl). La versión *-openssl suele ser la más compatible. Haz clic en Install junto a él.
  7. Confirma la instalación.

2.3 Reiniciar el Router

Después de cambiar un paquete tan fundamental como wpad, es muy recomendable reiniciar el router.
Ve a System > Reboot y haz clic en Perform reboot.

2.4 Configurar la Interfaz WiFi para WPA2/WPA3-Enterprise

Una vez que el router haya reiniciado y puedas volver a acceder a LuCI:

  1. Ve a Network > Wireless.
  2. Busca la interfaz de radio (normalmente radio0 para 2.4GHz o radio1 para 5GHz) que quieres configurar con autenticación RADIUS. Encuentra el SSID (nombre de red) asociado a esa radio y haz clic en Edit.
  3. Se abrirá la configuración de esa red WiFi. Ve a la pestaña Wireless Security.
  4. En el desplegable Encryption, selecciona WPA2-EAP (o WPA3-EAP si tus dispositivos son compatibles y prefieres mayor seguridad, aunque WPA2-EAP es más universal). Si eliges WPA3-EAP, puede que necesites también instalar hostapd-utils.
  5. Aparecerán nuevas opciones para RADIUS:
    • RADIUS Authentication Server: Introduce la IP estática de tu servidor Ubuntu (ej. 10.10.1.1).
    • RADIUS Authentication Port: Déjalo en 1812 (a menos que lo hayas cambiado en FreeRADIUS).
    • RADIUS Authentication Secret: Introduce la misma contraseña secreta que pusiste en el archivo clients.conf de FreeRADIUS (ej. TuSecret0MuySegur0).
    • RADIUS Accounting Server: Introduce de nuevo la IP de tu servidor Ubuntu (ej. 10.10.1.1). Aunque no hemos configurado el accounting en detalle en FreeRADIUS, es buena práctica poner la IP.
    • RADIUS Accounting Port: Déjalo en 1813.
    • RADIUS Accounting Secret: Introduce la misma contraseña secreta de nuevo. (En configuraciones avanzadas, podrías usar secretos diferentes para autenticación y accounting).
    • RADIUS NAS ID (Opcional): Puedes poner un identificador para este punto de acceso, como AP-Salon.
  6. Revisa las demás configuraciones de la red WiFi (nombre SSID, modo, canal, etc.) si es necesario.
  7. Haz clic en Save.

2.5 Aplicar Cambios

Volverás a la pantalla de Network > Wireless. Es posible que veas un mensaje indicando “Unsaved changes”. Haz clic en Save & Apply en la esquina superior derecha o en la parte inferior.

La interfaz WiFi se reiniciará con la nueva configuración.

Paso 3: Conectar un Dispositivo Cliente

¡Es hora de probarlo! Coge tu smartphone, tablet o portátil:

  1. Busca redes WiFi y selecciona el SSID que acabas de configurar.
  2. El dispositivo te pedirá credenciales. El método exacto varía según el sistema operativo:
    • Método EAP: Selecciona PEAP si está disponible (aunque configuramos PAP en el servidor, PEAP suele ser el método de encapsulación por defecto en muchos clientes y FreeRADIUS a menudo lo negocia). Si PEAP no funciona, busca opciones como TTLS o, como último recurso si aparece, PAP (menos común).
    • Autenticación de Fase 2: Selecciona MSCHAPV2 (común con PEAP/TTLS) o déjalo en Automático/Ninguno si no estás seguro.
    • Certificado de CA: ¡MUY IMPORTANTE! Como no hemos configurado certificados en nuestro servidor RADIUS (la forma más segura), tu dispositivo se quejará de que no puede verificar la identidad del servidor. Tendrás que seleccionar “No validar”“Usar certificados del sistema” (y esperar que no valide estrictamente), o “Ninguno”.
      • 🚨 ADVERTENCIA DE SEGURIDAD CRÍTICA 🚨: Al no validar el certificado del servidor, eres vulnerable a ataques Man-in-the-Middle (MitM), donde alguien podría hacerse pasar por tu servidor RADIUS y robar tus credenciales. Para un entorno seguro, DEBES implementar certificados en FreeRADIUS y configurar tus clientes para que confíen en tu Autoridad Certificadora (CA). Esta guía simplificada omite este paso por brevedad, pero es ESENCIAL para la seguridad real.
    • Identidad / Nombre de usuario: Introduce el nombre de usuario de uno de los usuarios que creaste en el archivo users de FreeRADIUS (ej. juan).
    • Identidad anónima: Déjalo en blanco (se usa en PEAP/TTLS para ocultar la identidad real en la primera fase, pero no es necesario para nuestra configuración simple).
    • Contraseña: Introduce la contraseña correspondiente a ese usuario (ej. Contras3ñaDeJuan!).
  3. Haz clic en Conectar.

Si todo ha ido bien, tu dispositivo debería conectarse a la red WiFi e получить una dirección IP.

Puedes verificar los logs de FreeRADIUS en el servidor para ver intentos de conexión (exitosos o fallidos):

sudo tail -f /var/log/freeradius/radius.log

(La ruta del log puede variar).

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Click the images in this order: Furgoneta, Motocicleta, Coche policía

Furgoneta Helicóptero Motocicleta Deportivo Coche policía Bicicleta