El SysAdmin del 3er Mundo

todo lo que expliqué mientras nadie prestaba atención

daloradius y sus amigos

| Comments

En un tutorial anterior, examinábamos como funcionaba radius. Mencionábamos que Radius, podría funcional usando MySQL (y otros sql) como backendcore. Finalmente un cliente necesitó una solución de capa completa y he aquí; la prometida expansión del mencionado artículo.

"Así luce daloradius"

Claramente, no basta con que radius sea la mar de versátil, requerimos además; una herramienta lo suficientemente digna de manipular 500 o 1’000 usuarios y esa herramienta es daloradius.

Daloradius es una interfaz web, no solo linda, si no, lo suficientemente funcionar como para sacarle el jugo a freeradius. Permite además, hacer operaciones predefinidas muy buenas para cosas como hotspot, etc… Lo más especial en mi opinión es el sistema de contabilidad. Muy bueno para cuotas.

En fin, instalamos el software necesario.

“instalar las cosas”
1
2
3
 [root@radius ~]# yum update
 [root@radius ~]# yum install -y epel-release
 [root@radius ~]# yum install -y mariadb-server mariadb freeradius freeradius-mysql freeradius-utils

Primero y principioso, hay que configurar el servidor de MySQL, o sea, inicializarlo.

“instalar las cosas”
1
 mysql_secure_installation

Una vez que tenemos el servidor sql listo, procedemos a crear la base de datos.

1
mysql -uroot -p
“creando base de datos”
1
2
CREATE DATABASE radius;
GRANT ALL PRIVILEGES ON radius.* TO radius@localhost IDENTIFIED BY "secreto";

Lamentablemente freeradius no tiene un instalador. Así que hay que llenar la base de datos manualmente.

1
mysql -u root -p radius < /etc/raddb/mods-config/sql/main/mysql/schema.sql

Habilitamos el módulo de SQL para freeradius

1
ln -s /etc/raddb/mods-available/sql /etc/raddb/mods-enabled

Ahora vamos a editar una serie de parámetros de radius. Para ello nos dirigimos al directorio /etc/raddb/ ya que allí hay unos cuantos ficheros que modificaremos.

En el fichero radiusd.conf vamos a hacer unos cuantos cambios así que atentos.

Para empezar, localiza la sesión que carga los módulos, debe quedar así.

1
2
3
modules {
   $INCLUDE mods-enabled/
}

Como habrá notado, la estructura de los directorio de configuración de radius, se de un aire a la de apache en debian. La configuración como tal, se parece más a nginx.

Como vimos, radius es muy modular. Puede usar numerosos backendcores, entre ellos sql. En el fichero sites-available/default modificaremos ciertos parámetros para que TODO funcione contra SQL.

Localizaremos las sesiones, authorize, accounting, session, post-auth, Post-Auth-Type REJECT.

Más o menos el fichero luciría así:

“scope del default”
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
authorize {
   ...
   sql
   ...
}

accounting {
   ...
   sql
   ...
}

session {
   ...
   sql
   ...
}

post-auth {
   ...
   sql
   ...
}

Post-Auth-Type REJECT {
   ...
   sql
   ...
}

Ya dijimos que usaremos sql, así que tenemos que configurar la conexión a dicha base de datos. El fichero mods-available/sql contiene dicha configuración. A mi me quedó así:

“sql”
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
sql {
  
   driver = "rlm_sql_mysql"
  dialect = "mysql"
  server = "localhost"
  port = 3306
  login = "root"
  password = "secreto"

  radius_db = "radius"
  acct_table1 = "radacct"
  acct_table2 = "radacct"
  postauth_table = "radpostauth"
  authcheck_table = "radcheck"
  groupcheck_table = "radgroupcheck"
  authreply_table = "radreply"
  groupreply_table = "radgroupreply"
  usergroup_table = "radusergroup"
  delete_stale_sessions = yes

  pool {
      start = 5
      min = 4
      max = ${thread[pool].max_servers}
      spare = 3
      uses = 0
      lifetime = 0
      idle_timeout = 60
  }

  read_clients = yes
  client_table = "nas"
  $INCLUDE ${modconfdir}/${.:name}/main/${dialect}/queries.conf
}

Finalmente probamos la configuración de radius.

1
 radiusd -X

Ahora la guinda del pastel, el daloradius. Primero instalamos una dependencias requeridas.

1
2
yum install epel-release
yum install php-mysql php php-pear php-gd php-pear-DB

Los clásico, descargar e instalar daloradius.

1
2
3
4
5
 wget http://sourceforge.net/projects/daloradius/files/latest/download?source=files
 tar zxvf download?source=files
 mv daloradius-0.9-9/* /var/www/html/
 chown -R nginx:nginx /var/www/html/
 chmod -R o+rxw /vat/www/html/

En el presente tutorial, asumimos que ya tienes una LEMP instalada…

Otro que no tiene configuración es daloradius, así que debes setear los parámetros manualmente. El fichero de configuración se llama library/daloradius.conf.php. De los parámetros, los que más nos interesan son.

“library/daloradius.conf.php”
1
2
3
4
5
6
7
8
 $configValues['DALORADIUS_VERSION'] = '0.9-9';
 $configValues['FREERADIUS_VERSION'] = '3';
 $configValues['CONFIG_DB_ENGINE'] = 'mysql';
 $configValues['CONFIG_DB_HOST'] = 'localhost';
 $configValues['CONFIG_DB_USER'] = 'radius';
 $configValues['CONFIG_DB_PASS'] = 'secreto';
 $configValues['CONFIG_DB_NAME'] = 'radius';
 ...

Al igual que con freeradius, tenemos que inicializar la base de datos manualmente, ya que como mencioné, daloradius no tiene instalador. Ojo, que la línea es larga.

1
mysql -u root -p radius < /var/www/html/contrib/db/fr2-mysql-daloradius-and-freeradius.sql

El usuario del loguearte la primera vez es administrator y la contraseña radius.

Bueno, ahora puede empezar a crear usuarios…

Puedes configurar el squid para que se autentique mediante radius, la linea del autenticador queda más o menos así:

1
 /usr/lib64/squid/basic_radius_auth -h 127.0.0.1 -w testing123

En este presunto caso, el squid y el radius, están instalados en el mismo servidor. Pero si quieres que otro host se conecte, debes declararlo en el fichero /etc/raddb/clients.conf. De otra forma, todo el que pida autenticación; será deliberadamente denegada. Coloca la configuración encima de la del localhost.

“/etc/raddb/clients.conf”
1
2
3
4
5
6
7
client mi_servidor {
  ipaddr = 192.168.1.10/24
  secret = misecerto
}

client localhost {
   ...

Sucesivamente, puedes tener declarado cuantos host quieras y cada uno tiene parámetros individuales, por ejemplo, al host mi_servidor, se le cambió el secret.

Así sucesivamente puede configurar los AP, le declaramos la autenticación WPA2. Para que tenga una idea, esto sería una configuración de hostapd.

“/etc/hostapd/hostapd.conf”
1
2
3
4
5
6
7
8
9
10
11
12
13
ssid=MiAP
interface=wlp2s0
driver=nl80211
ieee8021x=1
hw_mode=g
channel=9
wpa=2
wpa_key_mgmt=WPA-EAP
rsn_pairwise=CCMP
auth_algs=1
auth_server_addr=127.0.0.1
auth_server_port=1812
auth_server_shared_secret=testing123

Por ejemplo, así quedaría un DDWRT, usando autenticación WPA2 contra radius.

"un ddwrt acoplado a un radius"

Si este artículo te resultó interesante, considere donar 0.003 BTC: 1LgL9cfT2StNk9gdedMJZseMnKJCEgQJdQ

Comments