Installation de freeRADIUS v3

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)

Configuration de base de freeRADIUS

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.

https://wiki.freeradius.org/guide/Basic-configuration-HOWTO

Test basique (sans base de donné)

(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

En cas d'erreur vec le DNS

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:~#

freeRADIUS avec MySQL

Installation de MySQL (base d'authentification)

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.

Configurer freeRADIUS avec MySQL

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.

Test basique (avec la base de donnée)

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”

Ajouter un client NAS (Network Access Server).

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)

Test avec un NAS

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 avec certificat

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

Paramétrage de freeRADIUS

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

Génération des certificats SSL.

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

Paramétrage du contrôleur Wifi/AP

Là cela ne concerne plus le serveur freeRADIUS mais directement le matériel concerné. Les informations à donner seront

  • RADIUS Server IP Address: adresse IP du serveur RADIUS
  • RADIUS Port: le port est le 1812.
  • RADIUS Key: le secret mis dans la section du fichier clients.conf de FreeRADIUS.

Memo pour les certificats

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.

1- Créer un certificat racine (root CA)

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.

2- Créer un certificat Serveur,

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.

3- Créer un certificat pour chaque client,

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

(Pour récupérer un certificat perdu)

Pour un création manuel

vi /etc/ssl/openssl.cnf

Génération du certificat Racine/Root

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

Création du certificat pour le serveur RADIUS

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

daloRadius

https://poltakjefferson.wordpress.com/2014/01/07/install-freeradius-with-web-based-management-daloradius-on-centosrhel-debian-ubuntu/

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.

Problèmes rencontrés

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!!!

Dernière modification : le 2022/01/25