Giovedì, 09 Gennaio 2014 12:26

FreeRADIUS + MySql + daloRADIUS

Scritto da
Vota questo articolo
(0 Voti)

In questo articolo voglio parlare dell'installazione di un server radius (freeradius) gestibile tramite un'interfaccia via web estremamente bella ed elegante (daloRADIUS) che usi MySql per la gestione dei dati. Il tutto verrà installato in un bellissimo RaspberryPi Model B che verrà utilizzato per gestire l'autenticazione degli utenti che hanno accesso ad Internet attraverso uno ZyWall USG 100.

L'immagine seguente offre uno schema del tipo di comunicazione che voglio realizzare.

Schema autenticazione

Lo ZyWall USG ha la possibilità di bloccare l'accesso ad internet agli utenti fino a che questi non si autenticano tramite un captive portal. I dati degli utenti verranno quindi gestiti sul server RADIUS (ZyWall può utilizzare anche LDAP e ActiveDirectory).

Per prima cosa preparo la macchina base sul Raspberry PI. La distribuzione che ho scelto è la Raspbian. Una volta completata l'installazione, tramite aptitude, installo MySql Server, Apache2, PHP5, php5-db e freeRadius-mysql. Fatto questo si inizia con la configurazione di freeRadius per l'utilizzo di MySql (per la quale utilizzo l'articolo di Vincenzo Caruso).

Si inizia con il creare la base dati su MySql che verrà utilizzata dal freeRADIUS per la gestione dei dati: 

pi@raspberrypi ~ $ mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 38
Server version: 5.5.31-0+wheezy1 (Debian)
[...]
mysql> create database radius;
Query OK, 1 row affected (0.00 sec)
mysql> grant all on radius.* to 'freeradius'@'localhost' identified by 'radius';Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
mysql> exit
Bye
pi@raspberrypi ~ $ 

Si procede quindi creando la struttura sul db. Per fare ciò è preferibile essere amministratore perché lo schema si trova nella cartella protetta /etc/freeradius/sql/mysql:

pi@raspberrypi ~ $ sudo su
root@raspberrypi:/home/pi# cd /etc/freeradius/sql/mysql/
root@raspberrypi:/etc/freeradius/sql/mysql# mysql -u freeradius -p radius < schema.sql
Enter password: 
root@raspberrypi:/etc/freeradius/sql/mysql# vi nas.sql 
root@raspberrypi:/etc/freeradius/sql/mysql# mysql -u freeradius -p radius < nas.sql 
Enter password: 
root@raspberrypi:/etc/freeradius/sql/mysql# exit
exit
pi@raspberrypi ~ $ 

Alla richiesta di password da parte di MySql sarà necessario utilizzare quella fornita nella creazione dell'utente (grant precedente). La base dei dati è pronta. Configuriamo freeRADIUS in modo che sappia di dover usare MySql per la gestione dei dati.

Si modifica il file /etc/freeradius/sites-available/default:

pi@raspberrypi ~ $ sudo vi /etc/freeradius/sites-available/default

Il file presenta diverse sezioni. Dovremo decommentare la riga sql nelle sezioni authorize, session, post-auth, accounting:

authorize {
[...]
        #
        #  Look in an SQL database.  The schema of the database
        #  is meant to mirror the "users" file.
        #
        #  See "Authorization Queries" in sql.conf
        sql
[...]
}
[...]
session {
[...]

Salvare il tutto e chiudere.

Prossimo file da modificare /etc/freeradius/sql.conf, Questo file spiega a freeRADIUS come collegarsi a MySql. Qui sarà necessario configurare i parametri di connessione e abilitare la ricerca dei client sul db:

pi@raspberrypi ~ $ sudo vi /etc/freeradius/sql.conf
sql {
        database = "mysql"
        driver = "rlm_sql_${database}"

        server = "localhost"
        #port = 3306
        login = "freeradius"
        password = "radius"

        radius_db = "radius"
        [...]
        # Set to 'yes' to read radius clients from the database ('nas' table)
        # Clients will ONLY be read on server startup.  For performance
        # and security reasons, finding clients via SQL queries CANNOT
        # be done "live" while the server is running.
        #
        readclients = yes

        # Table to keep radius client info
        nas_table = "nas"

        [...]
}

Abbiamo quasi finito! Abbiamo detto a freeRADIUS che può usare MySql, gli abbiamo detto come può usarlo ora dobbiamo dirgli che deve farlo. Per fare ciò, apriamo il file /etc/freeradius/radiusd.conf:

pi@raspberrypi ~ $ sudo vi /etc/freeradius/radiusd.conf

E, decommentiamo la riga che serve ad includere il modulo sql:

       $INCLUDE sql.conf

Ultima modifica da fare, impedire a freeRADIUS di consultare altre fonti che non siano MySql. Per fare questo svuotiamo la configurazione dei client:

pi@raspberrypi ~ $ sudo mv /etc/freeradius/clients.conf /etc/freeradius/client.conf.old
pi@raspberrypi ~ $ sudo touch /etc/freeradius/clients.conf

Infine, riavviamo freeRADIUS:

pi@raspberrypi ~ $ sudo service freeradius restart
[ ok ] Stopping FreeRADIUS daemon: freeradius.
[ ok ] Starting FreeRADIUS daemon: freeradius.
pi@raspberrypi ~ $ 

Il server radius, a questo punto, dovrebbe essere attivo e funzionante. Per popolarlo con i dati, installiamo daloRADIUS. Scarichiamo l'ultima versione (nel mio caso la 0.9.9) da sourceforge e copiamo l'archivio sul raspberry pi.

Esplodiamo il tutto ed andiamo a spostare il contenuto della cartella in /var/www:

pi@raspberrypi ~ $ tar -xzf daloradius-0.9-9.tar.gz 
pi@raspberrypi ~ $ sudo rm -rf /var/www/*
pi@raspberrypi ~ $ sudo mv daloradius-0.9-9/* /var/www/
pi@raspberrypi ~ $ sudo chown -R www-data:www-data /var/www/
pi@raspberrypi ~ $ 

Dovremo installare, sulla base dati le informazioni relative a daloRADIUS. Per fare questo diamo il seguente comando:

pi@raspberrypi ~ $ mysql -u freeradius -p radius < /var/www/contrib/db/mysql-daloradius.sql 
Enter password: 
pi@raspberrypi ~ $ 

E configurare la connessione alla base dati di daloRADIUS:

pi@raspberrypi ~ $ sudo vi /var/www/library/daloradius.conf.php

Se tutto è andato a buon fine, aprendo il browser sull'indirizzo del raspberry pi, ci ritroveremo davanti all'interfaccia di gestione di daloRADIS. Usando il nome utente e password di default (administrator, radius) potremo accedere al pannello di gestione del sistema.

 Gestione daloRADIUS

Da qui possiamo aggiungere un nuovo utente andando in Management -> New User.

Nuovo utente su daloRADIUS

L'utente sarà ora visibile andando a vedere su Management->List Users. Prima di fare i test per assicurarci che il sistema funzioni, dovremo informare freeRADIUS di accettare le richieste di autenticazione fatte da se stesso. Per fare questo è necessario definire un NAS o Network Access Server. Per fare questo andiamo in Management->Nas e inseriamo il NAS locale:

 daloRADIUS - NAS Locale

Una volta salvato il NAS (ed ogni volte che se ne inserirà uno nuovo), sarà necessario riavviare il freeRADIUS affinché rilegga tale informazione.

pi@raspberrypi ~ $ sudo /etc/init.d/freeradius restart
[ ok ] Stopping FreeRADIUS daemon: freeradius.
[ ok ] Starting FreeRADIUS daemon: freeradius.
pi@raspberrypi ~ $ 

A questo punto possiamo provare a fare il test di autenticazione con il nostro utente di prova. Andiamo su dalRADIUS e scegliamo Management. Nel riquadro Edit User, inseriamo il nome dell'utente da testare, lo selezioniamo e, infine clicchiamo su Edit User:

daloRADIUS Modifica Utente

Nella videata che ci si presenta, clicchiamo su Test Connectivity e inseriamo i parametri corretti per il NAS:

daloRADIUS Test connettività

La porta del server RADIUS è la porta di default, la 1812. Una volta premuto su Perform Test, se tutto è andato a buon fine, la videata dovrebbe mostrare la seguente scritta:

daloRADIUS Test passato con successo

Se questo è il risultato, complimenti! Il server RADIUS funziona! In caso contrario, lasciate un commento: cercherò di rispondere il prima possibile!

Ora inizia la parte più semplice. Per prima cosa informiamo il nostro server RADIUS del fatto che lo ZyWall è autorizzato a richiedere l'autenticazione degli utenti. Per fare questo, in Management->NAS, inseriamo i dati dell'USG:

daloRADIUS ZyWall NAS

Dobbiamo ricordarci di riavviare il server RADIUS affinché le modifiche vengano memorizzate. A questo punto, non ci rimane che configurare lo ZyWall per utilizzare il server RADIUS per autenticare gli utenti.

Una volta entrati nell'interfaccia dello ZyWall, si va in Configuration -> Object -> AAA Server e si seleziona la tabella RADIUS. Qui si inseriranno i parametri del nostro server Radius:

Registrazione Server RADIUS

Il Server address, si inserirà l'indirizzo del Raspberry Pi. La porta di autenticazione di default è la 1812. Nel campo Key, inseriremo la password immessa nella configurazione del NAS (unoduetrequattrocinquesei).

Una volta salvato il server radius, il passo successivo sarà quello di aggiungerlo tra i metodi di autenticazione. Quindi in Configuration -> Object -> Auth Method, modifichiamo default e gli aggiungiamo il server RADIUS.

E questo è tutto!

 

Letto 25549 volte Ultima modifica il Venerdì, 07 Febbraio 2014 14:40

Lascia un commento

Assicurati di aver digitato tutte le informazioni richieste, evidenziate da un asterisco (*). Non è consentito codice HTML.

Login Form