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