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

  1. Diagrama de Red: El diagrama muestra direcciones IP de ejemplo.
  2. 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

  1. Diagrama de Red: El diagrama muestra direcciones IP de ejemplo.
  2. 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