Forma 3: Instalacion de Freeradius + API Freeradius en Linux
Integración de Freeradius
Para instalar y usar freeradius necesitamos 3 componentes, una base de datos (mysql), Freeradius (Servicio) y Wisphub API Freeradius (Webservice).
Wisphub API Freeradius es un sistema que nos permite actualizar la información como datos de acceso de nuestros usuarios en el proyecto de freeradius, de forma sencilla funciona como intermediario entre wisphub y freeradius para realizar operaciones. Para poder utilizar esta función es importante seguir una serie de pasos, de igual manera es importante cumplir con ciertos requisitos, a continuación se detallan los pasos a seguir para poder usar esta función.
Requisitos:
- Servidor con sistema operativo Ubuntu 22
- Al menos 4GB de RAM
Instalar en un servidor
Configurar Dispositivo Linux
Si no le es posible configurar su Mikrotik por limitaciones, puede optar por utilizar algún dispositivo con sistema operativo Linux, a continuación le mostramos un ejemplo de como realizar la configuración en Ubuntu, tenga presente que esto es unicamente para poder configurar el dispositivo.
Actualizamos nuestro sistema
sudo apt update
Nota: Aplica el siguiente comando solo si el servidor es nuevo y no tiene nada instalado. Si ya tienes un servidor existente, omite este comando.
sudo apt upgrade
Instalamos Docker
sudo snap install docker
Verificamos la versión de Docker
docker --version
Instalar todos los servicios en el mismo servidor (Base de datos, Freeradius, Webservice)
Si deseas instalar todos los servicios es mejor hacerlo desde el docker compose, una vez teniendo docker y docker compose y depues de haber configurado docker para iniciarse con el equipo en caso de reiniciarse realizamos lo siguiente:
En un directorio vacio, crear 2 archivos, uno llamado .env y otro llamado docker-compose.yml
Creamos un directorio
mkdir freeradius
cd freeradius
Creamos un archivo .env y pegamos el contenido siguiente:
nano .env
Contenido del .env, puedes modificar los valores segun tu conveniencia:
SECRET_KEY='django-insecure-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
DEBUG=1
ALLOWED_HOSTS=127.0.0.1,*
# DATABASE
DB_NAME='radius'
DB_USER='radius'
DB_PASSWORD='radpass'
DB_HOST='mysql'
DB_PORT=3306
# DOCKER DB VARS
MYSQL_ROOT_PASSWORD=${DB_PASSWORD}
MYSQL_DATABASE=${DB_NAME}
MYSQL_USER=${DB_USER}
MYSQL_PASSWORD=${DB_PASSWORD}
# FREERADIUS VARS
DB_PASS=${DB_PASSWORD}
# RADIUS_KEY=testing123
# RAD_CLIENTS=10.0.0.0/24
# RAD_DEBUG=no
Creamos un archivo docker-compose.yml y pegamos el contenido siguiente:
nano docker-compose.yml
Contenido del archivo docker-compose.yml
version: '3'
volumes:
db_data: {}
services:
mysql:
image: "soportewisphub/wisphub_database_freeradius:V100"
restart: always
ports:
- 8145:3306
volumes:
- db_data:/var/lib/mysql
env_file:
- ./.env
freeradius:
image: "2stacks/freeradius"
ports:
- "1812:1812/udp"
- "1813:1813/udp"
env_file:
- ./.env
depends_on:
- mysql
links:
- mysql
restart: always
api:
image: "soportewisphub/wisphub_api_freeradius:V100"
command: ./compose/commands/up.sh
restart: always
ports:
- "8146:8146"
depends_on:
- mysql
env_file:
- ./.env
Ejecutar los contenedores
docker compose up -d
Acceder al contenedor y generar API Key de conexion
Debido a la redireccion de puertos podemos acceder con la direccion IP de nuestro servidor de la siguiente manera [IP]:8146/admin, con el usuario y contraseña por defecto.
User: admin
Pass: password
Una vez dentro nos diriginos a la seccion de API Keys:
Al dar clic en API keys, una vez dentro de la seccion, damos clic en agregar API Key:
Agregamos los datos necesarios:
Nombre: Un nombre para identificar el API Key
Expires: Podemos dar clic a los botones de today y now y depues reemplazar el año para colocar una fecha futura, esta será la fecha de expiración, puede ser algunos años hacia adelante.
Luego de guardar podremos visualizar el API Key, es importante guardarlo en un lugar seguro, ya que solo podra visualizarse una vez, y no sera posible volver a verlo.
Escenarios de Instalación
Forma 3.1 - Instalación en la nube
- Diagrama de Red: El diagrama muestra direcciones IP de ejemplo.
- Formulario: En el formulario, sustituye las IPs de ejemplo del diagrama con las IPs reales que usarás en tu red.
Forma 3.2 - Instalación en red privada
- Diagrama de Red: El diagrama muestra direcciones IP de ejemplo.
- Formulario: En el formulario, sustituye las IPs de ejemplo del diagrama con las IPs reales que usarás en tu red.
Para este escenario usa el siguiente script en el router (Nas) crear una redirección de puertos hacia el API Freeradius y de este modo pueda ser accesible por wisphub ya sea por IP Publica del Router o la VPN WispHub. sustituye las IPs de ejemplo del diagrama con las IPs reales que usarás en tu red
/ip firewall nat add action=dst-nat chain=dstnat dst-port=8146 protocol=tcp to-addresses={ip_api_freeradius} to-ports=8146
/ip route rule add action=lookup-only-in-table dst-address=10.134.0.0/16 src-address={ip_privada_freeradius}/32 table=wisphub
Ejemplo:
/ip firewall nat add action=dst-nat chain=dstnat dst-port=8146 protocol=tcp to-addresses=192.168.100.254 to-ports=8146
/ip route rule add action=lookup-only-in-table dst-address=10.134.0.0/16 src-address=192.168.100.254/32 table=wisphub
17 de Mayo de 2024 a las 17:56 - Visitas: 728