03-09-2013, 21:42
1. Introduzione
Se si prevede di installare una rete wireless, è consigliabile configurarla in modo che possano accedervi solo gli utenti specificati.
[hide]
I metodi di protezione più comunemente adottati sono il sistema Wi-Fi_Protected_Access WPA e il sistema IEEE_802.11i WPA2. Questi due protocolli supportano sia l'autenticazione attraverso una chiave segreta condivisa (PSK = Pre Shared Key) e conosciuta da tutti i client della rete, sia l'autenticazione attraverso un server specifico. Wi-Fi Alliance ha introdotto i termini WPA(2)-Personal e WPA(2)-Enterprise per differenziare le due classi di sicurezza fornite dai prodotti. I WPA(2)-Personal utilizzeranno il metodo PSK a chiave condivisa mentre i WPA(2)-Enterprise utilizzeranno un server di autenticazione.
In questa guida vedremo la configurazione di un server Radius su Debian, per fornire ai protocolli WPA e WPA2 un server di autenticazione in grado di fornire una coppia di credenziali (nome utente / password) diverse per ogni utente della rete wireless.
2. Prerequisiti
* Debian Lenny/Squeeze/Wheezy o superiori
* Un ambiente LAMP: [[Installare un ambiente LAMP: Linux, Apache2, SSL, MySQL, PHP5]]
* ''(Solo se si intende utilizzare LDAP per archiviare le credenziali di accesso)'' Un database LDAP configurato e funzionante, come descritto ad esempio in queste guide:
** [[Samba_e_OpenLDAP:_creare_un_controller_di_dominio_NT4_con_Debian_Wheezy#Installazione_del_server_LDAP Wheezy]]
** [[Samba_e_OpenLDAP:_creare_un_controller_di_dominio_con_Debian_Squeeze#Installazione_del_server_LDAP Squeeze]]
* Uno o più Access Point che supportino il protocollo WPA(2) 802.1x
3. Riconfigurazione di OpenLDAP
Il server OpenLDAP va riconfigurato e modificato per potersi integrare con FreeRadius, l'implementazione Linux più comune di un server Radius.
<br/>
Occorre innanzitutto includere al file di configurazione di LDAP il file che contiene lo schema Radius:
I passaggi successivi sono diversi a seconda della versione di Debian che stiamo utilizzando.
Fino a Debian Lenny
Aggiungiamo al file <code>/etc/ldap/slapd.conf</code> la riga che definisce lo schema Radius:
Da Debian Squeeze in poi
La nuova versione di OpenLDAP presente nei [[repository]] Debian a partire da Squeeze supporta un nuovo metodo di configurazione dinamico, non più basato sul file di configurazione statico <code>/etc/ldap/slapd.conf</code>.<br/>
Creiamo il file <code>schema_convert.conf</code>:
e editiamolo in questa maniera:
Salviamo il file e creiamo una directory temporanea per gli output di slapcat:
e modifichiamo il file come segue:
Rimuoviamo le stringhe a fondo pagina:
Salviamo tutto e copiamolo in <code>/etc/ldap/schema</code>:
Infine importiamolo in OpenLDAP e riavviamo il [[demone]]:
4. Installazione di FreeRADIUS
Arrivati a questo punto possiamo installare FreeRADIUS, il demone che si occuperà di gestire le richieste di autenticazione:
Come si può vedere dai plugin installati, utilizzeremo un database MySQL per l'archiviazione degli utenti e delle password.
5. Configurazione di FreeRADIUS: Test locale
Iniziamo con qualcosa di semplice: creiamo un utente locale di test e verifichiamo che il demone faccia il suo dovere. Apriamo prima di tutto il file e cambiamo la chiave che serve per mettere in comunicazione il server Radius con i dispositivi di rete:
Quindi creiamo un utente locale aggiungendo le seguenti righe al file Riavviamo FreeRADIUS e controlliamone il funzionamento:
Ok, funziona tutto.
6. Autenticazione via MySQL
Apriamo il file di configurazione e decommentiamo la voce:
Poi apriamo il file <code>/etc/freeradius/sites-available/default</code> e cerchiamo al suo interno tutte le configurazioni seguenti, decommentando l'autenticazione <code>sql</code>:
Aggiungiamo un nuovo utente al file e stiamo attenti a commentare le seguenti righe, dato che non vogliamo che il nuovo utente si autentichi su <code>/etc/password</code>, ma solo su MySQL:
7. Configurazione del database MySQL
Archiviare gli utenti in un file può diventare poco comodo con il passare del tempo e può portare a cali di prestazione.
<br/>
Quindi creeremo un database MySQL apposito e lo utilizzeremo come archivio delle credenziali.
<br/>
Iniziamo con la creazione del database. FreeRADIUS ci mette a disposizione uno script SQL già pronto da utilizzare:
Creiamo un nuovo utente e diamogli i privilegi di accesso corretti sul database appena creato.
* Da [[shell]]:
* Da phpMyAdmin, inserendo un nuovo record nella tabella L'unica cosa che resta da fare è istruire FreeRADIUS su come connettersi al database appena predisposto. Apriamo il file e modifichiamo le linee seguenti con le corrette credenziali di accesso:
Aggiungiamo un nuovo utente di test:
Riavviamo FreeRADIUS e testiamo l'account:
Ok, anche l'autenticazione su SQL funziona.
8. Debug
Per effettuare operazioni di debug nel caso i client avessero difficoltà a connettersi alla rete wireless, può venire utile stoppare il servizio freeradius e riavviarlo in modalità di debug:
9. daloRadius, un'interfaccia grafica per FreeRadius
daloRadius è un'interfaccia grafica per facilitare l'inserimento e la gestione degli utenti Radius all'interno del database MySQL, che ci eviterà quindi di dover inserire a mano tramite query tutti i nostri utenti.
daloRadius ha alcuni requisiti, che provvediamo a soddisfare:
Quindi scarichiamo l'ultima versione dal sito del progetto: http://sourceforge.net/projects/daloradius/
Infine scompattiamo l'archivio scaricato, copiamolo nella nostra directory di Apache e impostiamo i permessi corretti:
L'ultimo passo che resta da compiere è aggiungere la tabella daloradius al nostro database MySQL e impostare i corretti parametri di connessione per la nuova applicazione:
impostando correttamente la variabile:
A questo punto possiamo collegarci all'interfaccia: http://127.0.0.1/daloradius , utilizzando per il primo ingresso le credenziali:
10. Conclusioni
A questo punto abbiamo un server Radius installato su Debian, in grado di gestire le richieste di autenticazione di tutti i dispositivi che supportano il protocollo di autenticazione Radius. Gli utenti saranno archiviati in un database MySQL; in ogni momento potranno essere aggiunti nuovi utenti tramite la shell mysql o tramite l'interfaccia phpMyAdmin.
Il passo successivo è decidere come configurare i nostri Access Point Wireless. In sostanza ci troviamo di fronte diverse possibili strade:
Fonte http://guide.debianizzati.org/index.php/...ver_Radius
Se si prevede di installare una rete wireless, è consigliabile configurarla in modo che possano accedervi solo gli utenti specificati.
[hide]
I metodi di protezione più comunemente adottati sono il sistema Wi-Fi_Protected_Access WPA e il sistema IEEE_802.11i WPA2. Questi due protocolli supportano sia l'autenticazione attraverso una chiave segreta condivisa (PSK = Pre Shared Key) e conosciuta da tutti i client della rete, sia l'autenticazione attraverso un server specifico. Wi-Fi Alliance ha introdotto i termini WPA(2)-Personal e WPA(2)-Enterprise per differenziare le due classi di sicurezza fornite dai prodotti. I WPA(2)-Personal utilizzeranno il metodo PSK a chiave condivisa mentre i WPA(2)-Enterprise utilizzeranno un server di autenticazione.
In questa guida vedremo la configurazione di un server Radius su Debian, per fornire ai protocolli WPA e WPA2 un server di autenticazione in grado di fornire una coppia di credenziali (nome utente / password) diverse per ogni utente della rete wireless.
2. Prerequisiti
* Debian Lenny/Squeeze/Wheezy o superiori
* Un ambiente LAMP: [[Installare un ambiente LAMP: Linux, Apache2, SSL, MySQL, PHP5]]
* ''(Solo se si intende utilizzare LDAP per archiviare le credenziali di accesso)'' Un database LDAP configurato e funzionante, come descritto ad esempio in queste guide:
** [[Samba_e_OpenLDAP:_creare_un_controller_di_dominio_NT4_con_Debian_Wheezy#Installazione_del_server_LDAP Wheezy]]
** [[Samba_e_OpenLDAP:_creare_un_controller_di_dominio_con_Debian_Squeeze#Installazione_del_server_LDAP Squeeze]]
* Uno o più Access Point che supportino il protocollo WPA(2) 802.1x
3. Riconfigurazione di OpenLDAP
Il server OpenLDAP va riconfigurato e modificato per potersi integrare con FreeRadius, l'implementazione Linux più comune di un server Radius.
<br/>
Occorre innanzitutto includere al file di configurazione di LDAP il file che contiene lo schema Radius:
Codice:
# cp /usr/share/doc/freeradius/examples/openldap.schema /usr/share/doc/freeradius/examples/
# /etc/init.d/openldap restart
Fino a Debian Lenny
Aggiungiamo al file <code>/etc/ldap/slapd.conf</code> la riga che definisce lo schema Radius:
Codice:
include /etc/ldap/schema/radius.schema
Da Debian Squeeze in poi
La nuova versione di OpenLDAP presente nei [[repository]] Debian a partire da Squeeze supporta un nuovo metodo di configurazione dinamico, non più basato sul file di configurazione statico <code>/etc/ldap/slapd.conf</code>.<br/>
Creiamo il file <code>schema_convert.conf</code>:
Codice:
# touch /tmp/schema_convert.conf
# nano /tmp/schema_convert.conf
Codice:
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/collective.schema
include /etc/ldap/schema/corba.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/duaconf.schema
include /etc/ldap/schema/dyngroup.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/java.schema
include /etc/ldap/schema/misc.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/openldap.schema
include /etc/ldap/schema/ppolicy.schema
include /etc/ldap/schema/samba.schema
Codice:
# mkdir /tmp/ldif_output
# slapcat -f schema_convert.conf -F /tmp/ldif_output -n0 -s "cn={10}openldap,cn=schema,cn=config" > /tmp/openldap.ldif
# nano /tmp/openldap.ldif
Codice:
dn: cn=openldap,cn=schema,cn=config
...
cn: openldap
Codice:
structuralObjectClass: olcSchemaConfig
entryUUID: b53b75ca-083f-102d-9fff-2f64fd123c95
creatorsName: cn=config
createTimestamp: 20080827045234Z
entryCSN: 20080827045234.341425Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20080827045234Z
Codice:
# cp /tmp/openldap.ldif /etc/ldap/schema
Codice:
# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/openldap.ldif
# /etc/init.d/slapd restart
4. Installazione di FreeRADIUS
Arrivati a questo punto possiamo installare FreeRADIUS, il demone che si occuperà di gestire le richieste di autenticazione:
Codice:
# apt-get install freeradius freeradius-common freeradius-krb5 freeradius-mysql freeradius-utils
5. Configurazione di FreeRADIUS: Test locale
Iniziamo con qualcosa di semplice: creiamo un utente locale di test e verifichiamo che il demone faccia il suo dovere. Apriamo prima di tutto il file
Codice:
/etc/freeradius/clients.conf
Codice:
# nano /etc/freeradius/clients.conf
Codice:
client localhost {
ipaddr = 127.0.0.1
secret = chiave_segreta
require_message_authenticator = no
nastype = other
}
Codice:
/etc/freeradius/users
Codice:
utentetest Cleartext-Password := "testpassword"
Codice:
# /etc/init.d/freeradius restart
# radtest utentetest testpassword 127.0.0.1 0 chiave_segreta
Sending Access-Request of id 186 to 127.0.0.1 port 1812
User-Name = "utentetest"
User-Password = "testpassword"
NAS-IP-Address = 127.0.0.1
NAS-Port = 0
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=186, length=20
6. Autenticazione via MySQL
Apriamo il file di configurazione
Codice:
/etc/freeradius/radiusd.conf
Codice:
$INCLUDE sql.conf
Codice:
bind_address = *
proxy_requests = no
#$INCLUDE ${confdir}/proxy.conf
# Sezione authorize{}
# See “Authorization Queries” in sql.conf
sql
# Sezione accounting{}
# See “Accounting queries” in sql.conf
sql
# Sezione session{}
# See “Simultaneous Use Checking Queries” in sql.conf
sql
# Sezione post-auth{}
# See “Authentication Logging Queries” in sql.conf
sql
Codice:
/etc/freeradius/users
Codice:
testsql User-Password == "passwordsql"
DEFAULT Auth-Type := sql
Fall-Through := 1
Codice:
#DEFAULT Auth-Type = System
# Fall-Through = 1
7. Configurazione del database MySQL
Archiviare gli utenti in un file può diventare poco comodo con il passare del tempo e può portare a cali di prestazione.
<br/>
Quindi creeremo un database MySQL apposito e lo utilizzeremo come archivio delle credenziali.
<br/>
Iniziamo con la creazione del database. FreeRADIUS ci mette a disposizione uno script SQL già pronto da utilizzare:
Codice:
# mysql -u root mysql -p
mysql> CREATE DATABASE radius;
mysql> quit
# mysql -u root radius -p < /etc/freeradius/sql/mysql/schema.sql
# mysql -u root -p radius < /etc/freeradius/sql/mysql/nas.sql
Codice:
radius@localhost
* Da [[shell]]:
Codice:
# mysql -u root -p
mysql> GRANT ALL PRIVILEGES ON radius.* TO 'radius'@'localhost' IDENTIFIED BY 'radiuspassword';
mysql> FLUSH PRIVILEGES;
mysql> quit;
Codice:
radcheck
Codice:
/etc/freeradius/sql.conf
Codice:
# Connect info
server = "localhost"
login = "radius"
password = "radiuspassword"
readclients = yes
Codice:
# mysql -u radius radius -p
mysql> INSERT INTO radcheck (UserName, Attribute, Value) VALUES ('testsql', 'Password', 'passwordsql');
mysql> quit
Codice:
# /etc/init.d/freeradius restart
# radtest testsql passwordsql 127.0.0.1 0 chiave_segreta
Sending Access-Request of id 48 to 127.0.0.1:1812
User-Name = "testsql"
User-Password = "passwordsql"
NAS-IP-Address = ford
NAS-Port = 0
rad_recv: Access-Accept packet from host 127.0.0.1:1812, id=48, length=20
8. Debug
Per effettuare operazioni di debug nel caso i client avessero difficoltà a connettersi alla rete wireless, può venire utile stoppare il servizio freeradius e riavviarlo in modalità di debug:
Codice:
# /etc/init.d/freeradius stop
# freeradius -X
9. daloRadius, un'interfaccia grafica per FreeRadius
daloRadius è un'interfaccia grafica per facilitare l'inserimento e la gestione degli utenti Radius all'interno del database MySQL, che ci eviterà quindi di dover inserire a mano tramite query tutti i nostri utenti.
daloRadius ha alcuni requisiti, che provvediamo a soddisfare:
Codice:
# apt-get install php5-gd php-pear php-db
Infine scompattiamo l'archivio scaricato, copiamolo nella nostra directory di Apache e impostiamo i permessi corretti:
Codice:
# tar xvfz daloradius-0.9-9.tar.gz
# mv daloradius-0.9-9 daloradius
# mv daloradius /var/www
# chown www-data:www-data /var/www/daloradius -R
# chmod 644 /var/www/daloradius/library/daloradius.conf.php
Codice:
# cd /var/www/daloradius/contrib/db
# mysql -u root -p radius < mysql-daloradius.sql
Codice:
# nano /var/www/daloradius/library/daloradius.conf.php
Codice:
$configValues['CONFIG_DB_PASS'] = 'thepassword';
Codice:
username: administrator
password: radius
10. Conclusioni
A questo punto abbiamo un server Radius installato su Debian, in grado di gestire le richieste di autenticazione di tutti i dispositivi che supportano il protocollo di autenticazione Radius. Gli utenti saranno archiviati in un database MySQL; in ogni momento potranno essere aggiunti nuovi utenti tramite la shell mysql o tramite l'interfaccia phpMyAdmin.
Il passo successivo è decidere come configurare i nostri Access Point Wireless. In sostanza ci troviamo di fronte diverse possibili strade:
- Impostare ogni Access Point per gestire le autenticazioni WPA/WPA2 Enterprise.
- L'Access Point rigirerà automaticamente al nostro server ogni richiesta di autenticazione sulla rete wireless; su ogni client comparirà una richiesta di inserimento di una coppia di credenziali (user/password). In questo caso nella configurazione dell'Access Point dovremo indicare:
- L'indirizzo IP del nostro server Radius
- La chiave segreta di connessione al server Radius
- L'indirizzo IP del nostro server Radius
- L'Access Point rigirerà automaticamente al nostro server ogni richiesta di autenticazione sulla rete wireless; su ogni client comparirà una richiesta di inserimento di una coppia di credenziali (user/password). In questo caso nella configurazione dell'Access Point dovremo indicare:
- Lasciare la rete wireless aperta e impostare un'autenticazione a livello di Proxy.
- Lasciare la rete wireless aperta e impostare un sistema Captive Portal per la gestione degli accessi e delle login.
Fonte http://guide.debianizzati.org/index.php/...ver_Radius