===== Installation de freeRADIUS v3 =====
//**prérequis: installation minimal de Debian Jessie fonctionnel.** //
[[https://wiki.freeradius.org/building/Debian-and-Ubuntu|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|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 =====
[[https://wiki.freeradius.org/guide/SQL-HOWTO-for-freeradius-3.x-on-Debian-Ubuntu|https://wiki.freeradius.org/guide/SQL-HOWTO-for-freeradius-3.x-on-Debian-Ubuntu]]
==== 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
éditer /etc/freeradius/mods-config/sql/main/mysql/setup.sql et modifier les informations nécessaires: PASSWORD('radpass')
puis
mysql -uroot -p radius
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 "[[https://www.novell.com/coolsolutions/tools/downloads/ntradping.zip|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|http://reseaux85.fr/index.php?title=FreeRADIUS_-_Serveur_RADIUS_Libre]]
===== freeRADIUS avec certificat =====
FreeRadius et TLS1.2
[[http://freeradius.org/version3.html|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/freeradius//mods-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|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|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://wiki.frozenkiwi.net/index.php/Certificats_OpenSSL]]
[[http://www.batard.eu/2010/11/maitriser-les-certificats-avec-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/|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|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 [[https://www.tbs-certificats.com/FAQ/fr/5.html#volet|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|http://reseaux85.fr/index.php?title=FreeRADIUS_-_Serveur_RADIUS_Libre#Certificats_SSL]]
([[:rt:procedure:certificatperdu|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/|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|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|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!!!