Conceptos Básicos de FreeRADIUS y RADIUS
Nota
Comprender qué es RADIUS, cómo funciona el proceso de autenticación AAA, y por qué se usa FreeRADIUS en redes reales (empresas, ISPs, universidades, etc.).
¿Qué es RADIUS?
RADIUS (Remote Authentication Dial-In User Service) es un protocolo de red que se utiliza para verificar, autorizar y registrar el acceso de los usuarios a una red o servicio. Por ejemplo, cuando te conectas al WiFi de una empresa y te pide usuario y contraseña, el router envía esos datos al servidor RADIUS para validarlos.
¿Qué es FreeRADIUS?
FreeRADIUS es una implementación gratuita y de código abierto del protocolo RADIUS. Maneja autenticación, autorización y contabilidad (AAA) de los usuarios en una red. Es ampliamente usado, escalable y compatible con múltiples equipos de red como Mikrotik, Cisco o Ubiquiti.
¿Qué significa AAA?
RADIUS se basa en el modelo AAA: Autenticación, Autorización y Contabilidad.
• Autenticación: Verifica si el usuario es válido (¿quién eres?).
• Autorización: Define los permisos del usuario (¿qué puedes hacer?).
• Contabilidad: Registra la actividad o uso (¿qué hiciste?).
AUTENTICACION, La autenticación es el primer paso.
Su función es verificar la identidad del usuario: validar si el nombre de usuario y contraseña (u otro método) son correctos.
Ejemplo:
Cuando un empleado intenta conectarse al WiFi de la empresa, el router envía su usuario y contraseña al servidor FreeRADIUS.
FreeRADIUS los compara con su base de datos (archivo users, MySQL, LDAP, etc.) y decide si son válidos.
Protocolos comunes de autenticación:
PAP (Password Authentication Protocol): el más simple; envía la contraseña en texto plano (solo se recomienda con conexión segura).
CHAP (Challenge Handshake Authentication Protocol): usa cifrado con un desafío y una respuesta.
MS-CHAPv2: común en redes WiFi o VPN (más seguro).
EAP (Extensible Authentication Protocol): se usa para autenticación avanzada en WiFi empresarial (802.1X).
Resultado posible:
Access-Accept → usuario válido.
Access-Reject → credenciales incorrectas.
AUTORIZACION- Después de autenticar, FreeRADIUS decide qué permisos tiene el usuario o qué parámetros se aplicarán a su sesión.
Ejemplo:
El usuario "user1" se autentica correctamente. FreeRADIUS le asigna:
Velocidad máxima de 10 Mbps
Dirección IP 192.168.10.50
Tiempo máximo de sesión 1 hora
Esto se logra devolviendo atributos RADIUS al NAS (router o AP).
Algunos ejemplos de atributos comunes:
| Atributo |
Descripción |
Ejemplo |
| Framed-IP-Address |
IP asignada al usuario |
192.168.10.50 |
| Session-Timeout |
Tiempo máximo de sesión |
3600 segundos |
| Idle-Timeout |
Tiempo de inactividad antes de desconexión |
300 |
| Mikrotik-Rate-Limit |
Control de velocidad en Mikrotik |
10M/10M |
Estos parámetros pueden venir del archivo users, de una base de datos o del sistema de políticas del servidor.
CONTABILIDAD, Esta parte se llama Accounting en inglés, y su función es registrar toda la actividad de conexión del usuario.
Es muy útil para:
Llevar registros de auditoría.
Calcular tiempo de uso, consumo de datos o sesiones activas.
Controlar planes o cuotas de clientes.
El proceso se basa en tres tipos de mensajes que el NAS envía al servidor FreeRADIUS:
Tipo de mensaje |
Cuando se envía |
Qué contiene |
| Start |
Cuando el usuario inicia sesión |
Usuario, IP, hora de inicio, NAS. |
| Interim-Update |
Cada cierto tiempo (por ejemplo, cada 5 min) |
Tiempo de conexión, bytes enviados/recibidos. |
| Stop |
Cuando el usuario cierra sesión o se desconecta |
Hora final, total de datos, duración de sesión. |
¿Dónde se guarda esta información?
FreeRADIUS puede registrar los datos de contabilidad de varias formas:
- En un archivo de texto local:
Por defecto en /var/log/freeradius/radacct/
Cada NAS tiene su propia carpeta e historial. - En una base de datos (recomendado):
Tablas típicas: radacct, radcheck, radreply.
Se usa el módulo rlm_sql (por ejemplo con MySQL o PostgreSQL).
Permite consultar fácilmente sesiones, tiempos y estadísticas.
Ejemplo de registro en base de datos (tabla radacct):
| username |
acctstarttime |
acctstoptime |
acctsessiontime |
acctinputoctets |
acctoutputoctets |
| juan |
2025-11-10 09:00 |
2025-11-10 10:00 |
3600 |
12500000 |
8600000 |
|
|
|
|
|
|
|
|
Esto significa que el usuario juan estuvo conectado 1 hora y transfirió ~12.5 MB de bajada y ~8.6 MB de subida.
Nota
IMPORTANTE: El término “contabilidad” (Accounting) puede sonar a temas financieros, pero en el contexto de redes significa algo completamente distinto.
¿Por qué se le llama “contabilidad” en RADIUS?
El nombre “Accounting” proviene del verbo en inglés “to account”, que significa “registrar”, “dar cuenta” o “llevar un registro de algo”.
No tiene relación con contabilidad financiera o dinero, sino con llevar un registro detallado del uso de la red.
Contabilidad en RADIUS = registro del uso de los servicios de red.
Flujo básico de comunicación
1. El usuario intenta conectarse (por ejemplo, al WiFi).
2. El NAS (router o access point) envía la solicitud al servidor RADIUS.
3. FreeRADIUS valida las credenciales.
4. Si son correctas → Access-Accept. Si no → Access-Reject.
5. Si hay contabilidad, se registran tiempo, IP y consumo.
¿Qué es un NAS?
NAS significa Network Access Server. Es el dispositivo que envía solicitudes RADIUS al servidor. Puede ser un router, access point o servidor VPN. Cada NAS se identifica con una IP y una clave compartida (secret).
Comparación con otros protocolos
• RADIUS: Autenticación y control de acceso de red.
• TACACS+: Control administrativo, más usado en equipos Cisco.
• LDAP/AD: Base de datos de usuarios empresariales, sin contabilidad.
Ejemplos reales de uso
• WiFi corporativo: autentica empleados.
• ISP con PPPoE: controla usuarios y velocidad.
• VPN: valida empleados remotos.
• Hotspot: registra tiempo y datos usados.
Archivos principales en FreeRADIUS
/etc/freeradius/
── clients.conf → lista de routers autorizados
── users → usuarios y contraseñas locales
── mods-enabled/ → módulos activos (sql, ldap, eap)
── sites-enabled/ → servicios (default, inner-tunnel)
── radiusd.conf → configuración principal
Herramientas de prueba
Puedes probar autenticaciones locales con el comando:
radtest usuario contraseña 127.0.0.1 0 secret
Si todo está bien, responderá con Access-Accept.
Fuentes recomendadas
• YouTube: 'Qué es RADIUS, https://www.youtube.com/watch?v=HTwYtDxePLo'