prérequis: installation minimal de Debian Jessie fonctionnel.
https://wiki.freeradius.org/building/Debian-and-Ubuntu
wget https://github.com/FreeRADIUS/freeradius-server/archive/v3.0.13.zip unzip v3.0.13.zip cd freeradius-server-3.0.13/
sudo apt-get install devscripts quilt fakeroot debian/rules clean sudo mk-build-deps -ir debian/control dpkg-buildpackage -rfakeroot -b -uc
dpkg -i *
Si pb de dépendance, apt-get -f install (ou les installer puis relancer dpkg -i)
fichier “radius.conf” principal de configuration de free radius. fichier “users” pour la configuration des utilisateurs autorisés (via le fichier) fichier “sql” pour la connection à la bse de donnée (et utilisation des utilisateurs via la BD) fichier “eap” pour la configuration de EAP et des certificats fichier “clients.conf” pour la configuration des NAS (bornes Wifi) autorités à contacter le Radius.
(Ne pas en tenir compte si on utilise la base de donnée.) Dans /etc/freeradius/users ET /etc/freeradius/mods-config/files/authorize, ajouter sur la 1ere ligne du fichier
userToto Cleartext-Password := "P@ssword"
Arreter freeRADIUS
service freeradius stop
dans une autre session SSH relancer en mode debug
freeradius -X
dans la session principale lancer
radtest userToto P@ssword localhost 0 testing123
Pour le test avec 'radtest', il faut que dans le fichier hosts on ait pour 127.0.0.1 le nom DNS qui apparait dans la console (en plus de localhost)
exemple
127.0.0.1 localhost mv-t37b-rad
si on a dans la console root@mv-t37b-rad:~#
apt-get install mysql-server mysql-client
mysql -u root -p CREATE DATABASE radius; exit
mysql -u root -p radius </etc/freeradius/mods-config/sql/main/mysql/schema.sql
éditer /etc/freeradius/mods-config/sql/main/mysql/setup.sql et modifier les informations nécessaires: PASSWORD('radpass')
puis
mysql -uroot -p radius </etc/freeradius/mods-config/sql/main/mysql/setup.sql
La base de donnée est prête. Il faut maintenant configurer freeRADIUS pour l'utiliser.
Editer /etc/freeradius/mods-available/sql pour modifier
driver = "rlm_sql_mysql" ... dialect = "mysql" # Connection info: # server = "localhost" port = 3306 login = "radius" password = "_P@ssword_"
le password est celui qui a été mis dans /etc/freeradius/mods-config/sql/main/mysql/setup.sql
Pour activer le mode sql, il faut créer un lien symbolic
cd /etc/freeradius/mods-enabled ln -s ../mods-available/sql sql
Dans la version 3 de freeRADIUS il est inutile de modifier le fchier /etc/freeradius/sites-available/default pour décommenter la ligne contenant ‘sql’ dans les sections authorize {} accounting {} session {}
le signe “ - ” verifie si sql est dans mods-enabled pour e charger sinon il ne fait rien.
Pour le test il faut au moins un utilisateur dans la base
mysql> insert into radcheck Value('3','userTestBD','Cleartext-Password',':=','P@ssword'); mysql> select * from radcheck; +----+------------+--------------------+----+----------+ | id | username | attribute | op | value | +----+------------+--------------------+----+----------+ | 3 | userTestBD | Cleartext-Password | := | P@ssword | +----+------------+--------------------+----+----------+ 1 rows in set (0.00 sec)
vi /etc/freeradius/radiusd.conf rechercher et décommenter “$INCLUDE sql.conf”
Un client NAS est une machine, un réseau ou tout équipement qui ont besoin d'utiliser freeRADIUS. Pour faire un test nous allons juste ajouter une machine. (ON NE PASSE PAS par ce fichier si on utilise daloRadius qui le gère via la base de donnée)
Le NAS client est en général le controleur WiFi. C'est l'équipement qui demande la vérification de l'identité d'un utilisateur au serveur Radius.
vi /etc/freeradius/clients.conf
client nom_clientNAS { ipaddr = ip_ou_réseau secret = mdppour ce NAS nastype = other
}
Pour 'nastype' on peut avoir par exemple “cisco” pour un controller cisco ou “other” pour une machine, voir la liste complète dans le fichier clients.conf
client wifiZeus { ipaddr = 192.168.56.0/24 secret = zeus@2017 nastype = other }
remarque: Si on veut gérer les NAS via la base de donnée sans daloRadius, il faut modifier le fichier /etc/freeradius/mods-available/sql et activer “read_clients = yes”
Il existe beaucoup plus d'option (voir la section localhost de clients.conf)
Pour tester la connexion avecWindows on peut utiliser “ntradping”, il faut changer le port et passer sur le “1812” par défaut et etre sure que la machine Windows accède bien au serveur (contrôler le pare-feu).
Il est préférable de se mettre en mod débug (freeradius -X) sur le serveur pour le controle.
plus d'infos: http://reseaux85.fr/index.php?title=FreeRADIUS_-_Serveur_RADIUS_Libre
FreeRadius et TLS1.2
FreeRADIUS 3 is the current supported stable release and you should be thinking about upgrading to it if you have not already. SSLv2 and SSLv3 are not supported by FreeRADIUS 3, only TLS 1.0, TLS 1.1, and TLS 1.2.
For FreeRADIUS to require stronger cipher suites, add this to the EAP-TLS configuration in the “eap” configuration file. Alternatively, specify a colon-separated list of specific cipher suites.
cipher_list = "HIGH"
/etc/freeradiusmods-available/eap Thank you. That steered me in the right direction. Here are the entries to make in the TLS section of eap:
disable_tlsv1_0 = no disable_tlsv1_1 = yes disable_tlsv1_2 = yes
http://wiki.freeradius.org/guide/WPA%20HOWTO#step-2-configure-freeradius
Le certificat SSL est utilisé généralement pour les authentifications WPA en Wifi. Les fichiers nécessaires pour générer les certificats SSL pour freeRADIUS sont dans /etc/freeradius/certs.
Pour la configuration on va modifier 3 fichiers: /etc/freeradius/mods-available/eap, /etc/freeradius/clients et /etc/freeradius/users
Le fichier “clients” permet de déclarer un NAS donc le controleur Wifi, déjà vu plus haut.
Le fichier “users” permet d'ajouter les utilisateurs, déjà vu plus haut aussi. INUTILE de le modifier car on utilise les certificats, sauf si on veut faire les 2.
Il reste donc à modifie le fichier eap. Ce qui nous intéresse est la partie TLS qu'il faut ajuster à notre besoin. Il va servir à déchiffrer les certificats que le serveur aura signé.
tls-config tls-common { #private_key_password = whatever private_key_password = radiusZeus@2017
freeRADIUS (v2 et +) fournit les outils pour générer les certificats http://wiki.freeradius.org/config/Certificates
Pour repartir à zéro avec les certificats il faut supprimer les existants dans /etc/freeradius/certs avec
rm -f *.pem *.der *.csr *.crt *.key *.p12 serial* index.txt*
OpenSSL sert de générateur de certificat, donc l'installer (apt-get install openssl) !!! Pour générer un certificat il faut un fichier de configuration pour openSSL, qui est openssl.cnf (/etc/ssl/openssl.cnf).
Si on utilise les outils de freeRADIUS, il fournit un fichier de configuration qui reprend la meme chose: ca.cnf
exemple de contenu
[ req_distinguished_name ] countryName = Country Name (2 letter code) countryName_default = FR countryName_min = 2 countryName_max = 2 stateOrProvinceName = State or Province Name (full name) stateOrProvinceName_default = Rhone-Alpes localityName = Locality Name (eg, city) localityName_default = Grenoble 0.organizationName = Organization Name (eg, company) 0.organizationName_default = Beemoon and Co # we can do this but it is not needed normally :-) #1.organizationName = Second Organization Name (eg, company) #1.organizationName_default = World Wide Web Pty Ltd organizationalUnitName = Organizational Unit Name (eg, section) organizationalUnitName_default = Beemoon and Co commonName = Common Name (e.g. server FQDN or YOUR name) commonName_max = 64 emailAddress = Email Address emailAddress_default = contact@beemoon.fr emailAddress_max = 64
Pour lire un certificat
openssl x509 -text -noout -in ca.pem
ATTENTION bien mettre le bon password dans /etc/freeradius/mods-enabled/eap pour déchiffrer le certif CA root
Là cela ne concerne plus le serveur freeRADIUS mais directement le matériel concerné. Les informations à donner seront
http://wiki.frozenkiwi.net/index.php/Certificats_OpenSSL
http://www.batard.eu/2010/11/maitriser-les-certificats-avec-openssl/
http://jeyg.info/des-certificats-signes-par-votre-autorite-de-certification-avec-openssl/
CA Root ou certificat racine: c'est le certificat qui identifie une autorité de certification, on peut les récupérer par exemple ici https://www.kinamo.fr/fr/support/faq/telecharger-les-certificats-ssl-root-et-intermediaires
certificat utilisateur ou machine: c'est le certificat qui identifie une machine (cliente ou serveur) signé avec la clé privée du CA.
chaque machine possède une clé privé et une clé publique, c'est un fichier *.key et *.pub
le certificat, en plus des informations d'identification (nom, organisme, mail,…), contient la clé publique de la machine à qui appartient le certificat.
le certificat est signé,authentifié par l'autorité CA avec sa clé privé.
Pour avoir un certificat il faut fournit au CA:
- des informations d'identification
- une clé publique
Ces informations sont rassemblés dans un fichier CSR (Certificate Signing Request) qui sera utilisé pour généré le certificat.
La clé publique contenue dans le certificat servira à crypter les données qu'on souhaite transmettre au propriétaire du certificat.
Ces données cryptées ne peuvent être lue/décryptée qu'avec la clé privée du proprétaire du certificat.
le propriétaire du certificat peut crypter des données avec sa clé privée. Les données ainsi cryptées peuvent etre décryptées pas la clé publique. Donc par tout le monde!
Un message crypté avec une clé privée PEUT être décrypté qu'avec la clé publique. On sait de qui cela vient.
Un message crypté avec une clé publique NE PEUT être décrypté qu'avec la clé privée. On garantie l'intégité du contenu, pas de modification ou lecture entre la transmission.
PEM et DER c'est la même chose SAUF l'encodage. Le DER est pour les Windows et navigateurs web.
P12 est la version binaire avec la clé privé et certificat publique.
Un certificat racine ou root CA permet de certifié l'entité (organisme) qui délivre les certificats.
Pour un serveur auto-signé, il aura un certificat root CA (fichier ca.pem) en tant qu'entité délivreur de certificat et un certificat en tant que client (fichier server.pem)
Pour une machine client, il aura un certificat client (fichier client.pem et client.der pour les Windows)
Le certificat du serveur devra être présent sur toutes les machines clients qui utilisera des certificats signés par cette entités. Il permet d'authentifier le serveur sur lequel on se connecte.
Si on signe les certificats (c'est le cas pour nous) le certificat racine (ca.pem) devra aussi être sur le client.
qui devra etre installé sur chaque machine cliente utilisant EAP-TLS, PEAP, ou EAP-TTLS. Le script de freeRadius ('bootstrap') intègrera “xpentensions” et tout ce qui va-bien. ATTENTION de na pas générer plusieurs fois le root CA. Par défaut TOUS les certificats freeRADIUS sont dans /etc/freeradius/certs
Si freeRADIUS est configure pour fonctionner avec OpenSSL la commande “freeradius -X” générera automatiquement le root CA mais qu'une seule fois (il y a un controle dans le script)
éditer le ca.cnf pour modifier les informations spécifiques
faire un “make ca” cela va créer un certificat PEM et les clés publiques et privées avec les informations de paramétrage.
exactement pareil que pour le certificat racine!
vi server.cnf
faire make server cela va créer un certificat PEM et les clés publiques et privées avec les informations de paramétrage.
exactement pareil que pour le certificat serveur!
vi client.cnf
faire make client cela va créer un certificat PEM et les clés publiques et privées avec les informations de paramétrage. Un fichier “ca.der” sera créé et devra être installé sur toutes les machines client Windows.
note:
Le fichier CSR (Certificate Signing Request) est une demande de certificat qui devra etre fournir à l'autorité de certification pour que ce dernier nous renvoie un certificat PEM.
http://reseaux85.fr/index.php?title=FreeRADIUS_-_Serveur_RADIUS_Libre#Certificats_SSL
vi /etc/ssl/openssl.cnf
On génère dans un premier temps le certificat racine du serveur à l'aide du fichier complété précédemment
openssl req -new -x509 -newkey rsa:4096 -days 3650 -keyout ./private/cakey.pem -out cacert.pem -config /etc/ssl/openssl.cnf
Conversion du certificat pour Windows PEAP/MSCHAP
Pour notre utilisation il faut convertir le certificat dans un format intelligible pour Microsoft Windows
openssl x509 -in cacert.pem -inform PEM -out cacert.der -outform DER
On génère maintenant le certificat pour le serveur RADIUS, on répond aux questions par Entrée puisque renseignés dans le fichier openssl.cnf openssl req -new -nodes -out reqserver.pem -keyout private/server.key -config /etc/ssl/openssl.cnf
Signature du certificat par l’autorité de certification
openssl ca -out server.pem -config /etc/ssl/openssl.cnf -infiles reqserver.pem
Recreation des liens dans le dossier certs de RADIUS
cd /etc/freeradius/certs/ rm server.pem rm server.key rm ca.pem ln -s /etc/ssl/server.pem server.pem ln -s /etc/ssl/private/server.key server.key ln -s /etc/ssl/cacert.pem ca.pem
Modification dans /etc/freeradius/eap.conf
Ligne 11 dans le fichier /etc/freeradius/eap.conf** :
private_key_password = Password1234
Fin de la configuration SSL et test de connexion
On arrête FreeRADIUS et on voit si on obtient une connexion correcte en mode debug
service freeradius stop freeradius -X
apt-get update
apt-get upgrade
apt-get install apache2
apt-get install php5-common libapache2-mod-php5 php5-mysql
apt-get install php-pear php5-gd php-db
DaloRadius
wget https://downloads.sourceforge.net/project/daloradius/daloradius/daloradius0.9-9/daloradius-0.9-9.tar.gz?r=&ts=1488971812&use_mirror=netcologne
mv daloradius-0.9-9.tar.gz?r= daloradius-0.9-9.tar.gz
tar zxvf daloradius-0.9-9.tar.gz
rm -f daloradius-0.9-9.tar.gz
mysql -u radius -p radius < daloradius-0.9-9/contrib/db/fr2-mysql-daloradius-and-freeradius.sql
(ATTENTION ici le pwd est celui du user radius)
vi daloradius-0.9-9/library/daloradius.conf.php
Modifier username, password et db name.
$configValues['DALORADIUS_VERSION'] = '0.9-9';
• $configValues['FREERADIUS_VERSION'] = '2';
• $configValues['CONFIG_DB_ENGINE'] = 'mysql';
• $configValues['CONFIG_DB_HOST'] = 'localhost';
• $configValues['CONFIG_DB_USER'] = 'radius';
• $configValues['CONFIG_DB_PASS'] = 'radius_pwd';
• $configValues['CONFIG_DB_NAME'] = 'radius';
déplacer daloradius dans le répertoire www
mv daloradius-0.9-9 /var/www/daloradius
chown -R www-data:www-data /var/www/daloradius
modifier le /etc/apache/sites-enabled/000-default pour DocumentRoot
service apache2 stop
service apache2 start
avec votre navigateur web pointer sur http://ip-address-or-hostname/daloradius
Username: administrator
Password: radius
Pour les log
usermod -a -G adm www-data
touch /var/log/daloradius.log
chmod 755 /var/log/freeradius
chown www-data:www-data /var/log/daloradius.log
chmod 666 /var/log/syslog
chmod 644 /var/log/dmesg
Pour activer la gestion des NAS via la base de donnée (via daloRadius)
il faut décommenter dans /etc/freeradius/mods-available/sql
read_clients = yes
relancer freeradius.
Suite à plusieurs tests, il est possible qu'on ne puisse plus réinstaller freeRadius par quelque moyen que ce soit !!!! C'est du à la présence même après un apt-get remove des fichiers liés à freeRadius!!!