Free radius

981
-1

Published on

,,

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
981
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
72
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Free radius

  1. 1. Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuXRetour d’expérience sur la mise en place d’un serveur FreeRadius Dominique CARON Ing´ nieur de Recherche CNRS e Administrateur Syst` me UNIX, Universit´ MONTPELLIER II e e Powered By ’Puissance du Poing’ Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.1/14
  2. 2. Le serveur VPN (POPTop) POPTop est un serveur qui implémente le protocole pptpd   (Point to Point Tunneling Protocol). Il encapsule des paquets PPP dans du GRE (Generic Routine Encapsulation) Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.2/14
  3. 3. Le serveur VPN (POPTop) POPTop est un serveur qui implémente le protocole pptpd   (Point to Point Tunneling Protocol). Il encapsule des paquets PPP dans du GRE (Generic Routine Encapsulation) POPTop ne gère ni l’encryptage du tunnel, ni   l’authentification. Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.2/14
  4. 4. Le serveur VPN (POPTop) POPTop est un serveur qui implémente le protocole pptpd   (Point to Point Tunneling Protocol). Il encapsule des paquets PPP dans du GRE (Generic Routine Encapsulation) POPTop ne gère ni l’encryptage du tunnel, ni   l’authentification. POPTop s’appuie sur PPP. PPP implémente plusieurs   protocoles d’authentification dont MSchap(Microsoft compatible authentication and encryption) v1 et v2, PAP (Password authentication protocol) ,CHAP etc... Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.2/14
  5. 5. Le serveur VPN (POPTop) POPTop est un serveur qui implémente le protocole pptpd   (Point to Point Tunneling Protocol). Il encapsule des paquets PPP dans du GRE (Generic Routine Encapsulation) POPTop ne gère ni l’encryptage du tunnel, ni   l’authentification. POPTop s’appuie sur PPP. PPP implémente plusieurs   protocoles d’authentification dont MSchap(Microsoft compatible authentication and encryption) v1 et v2, PAP (Password authentication protocol) ,CHAP etc... La seule façon, à ma connaissance, de créer un canal crypté   est d’utiliser le protocole mppe qui nécessite de compiler le module ppp_mppe dans le noyau Linux du serveur et dans les noyaux des clients Linux! Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.2/14
  6. 6. PPPd Avec PPPD l’authentification par défaut se fait   par fichier (/etc/ppp/pap-secrets ou chap-secret). Ce qui rend la gestion des utilisateurs pénible   pour ne pas dire impossible par exemple dans le cas de changement de mot de passe. Pour remédier à ce problème on a pensé à radius   (en plus ça fait très Pro ;-) Comme on est radin et qu’on veut (un peu)   comprendre, on se tourne vers le libre (FreeRadius ou GNURadius) Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.3/14
  7. 7. FreeRadius Radius = Remote Authentification in Dial-In   User Service . Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.4/14
  8. 8. FreeRadius Radius = Remote Authentification in Dial-In   User Service . Radius ne VA PAS ENCRYPTER le tunnel   Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.4/14
  9. 9. FreeRadius Radius = Remote Authentification in Dial-In   User Service . Radius ne VA PAS ENCRYPTER le tunnel   Radius va se charger : ( de l’authentification, des   autorisations, des informations de sessions). Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.4/14
  10. 10. FreeRadius Radius = Remote Authentification in Dial-In   User Service . Radius ne VA PAS ENCRYPTER le tunnel   Radius va se charger : ( de l’authentification, des   autorisations, des informations de sessions). Attention , pour qu’un serveur VPN de type   POPTop puisse correspondre avec un serveur Radius IL FAUT RECOMPILER PPPd afin d’avoir le module radius.so Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.4/14
  11. 11. FreeRadius Radius = Remote Authentification in Dial-In   User Service . Radius ne VA PAS ENCRYPTER le tunnel   Radius va se charger : ( de l’authentification, des   autorisations, des informations de sessions). Attention , pour qu’un serveur VPN de type   POPTop puisse correspondre avec un serveur Radius IL FAUT RECOMPILER PPPd afin d’avoir le module radius.so On installe freeradius par rpm ou tar.gz , pas de   problème particulier. Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.4/14
  12. 12. Authentification Par le Système   - Le nom et le mot de passe de l’utilisateur sont ceux du système (UNIX), Freeradius utilise /etc/passwd et/ou NIS. C’est la config par défaut de FreeRadius Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.5/14
  13. 13. Authentification Par le Système   - Le nom et le mot de passe de l’utilisateur sont ceux du système (UNIX), Freeradius utilise /etc/passwd et/ou NIS. C’est la config par défaut de FreeRadius En Interne   Le nom et le mot de passe de l’utilisateur sont stockés dans les fichiers de config de radius Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.5/14
  14. 14. Authentification Par le Système   - Le nom et le mot de passe de l’utilisateur sont ceux du système (UNIX), Freeradius utilise /etc/passwd et/ou NIS. C’est la config par défaut de FreeRadius En Interne   Le nom et le mot de passe de l’utilisateur sont stockés dans les fichiers de config de radius Par Base de donnée   (MySQL,Oracle,PostgreSQL,LDAP) les informations de l’utilisateur sont stockés dans une base de donnée, attention la communication Radius<->SQL n’est pas encrytée. Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.5/14
  15. 15. Authentification Par le Système   - Le nom et le mot de passe de l’utilisateur sont ceux du système (UNIX), Freeradius utilise /etc/passwd et/ou NIS. C’est la config par défaut de FreeRadius En Interne   Le nom et le mot de passe de l’utilisateur sont stockés dans les fichiers de config de radius Par Base de donnée   (MySQL,Oracle,PostgreSQL,LDAP) les informations de l’utilisateur sont stockés dans une base de donnée, attention la communication Radius<->SQL n’est pas encrytée. PAM (Pluggable Authentication Service) c’est   selon la config de PAM queserveur Radius faire l’authentification – p.5/14 Mise en place d’un va se pour authentification sur une serveur VPN sous LinuX
  16. 16. Schéma des encryptagesServeur SQL INTERNET Client VPNServeur FreeRadius Routeur/Firewall Serveur VPN Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.6/14
  17. 17. Schéma des encryptagesServeur SQL INTERNET Client VPNServeur FreeRadius Canal encrypté ou non Routeur/Firewall Serveur VPN Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.6/14
  18. 18. Schéma des encryptages Serveur SQL INTERNET Client VPN Serveur FreeRadius Canal encrypté ou non Routeur/FirewallCanal encrypté Serveur VPN Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.6/14
  19. 19. Schéma des encryptages Serveur SQL Canal non encrypté INTERNET Client VPN Serveur FreeRadius Canal encrypté ou non Routeur/FirewallCanal encrypté Serveur VPN Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.6/14
  20. 20. Configuration de FreeRadiusIl est clair que les fichiers de configurations ne sont pas trèsconviviaux. Cela peut effrayer au début. Mais ils sont vraimentbien commentés. Aïe Aïe , ca se Corse.   # ls /usr/local/freeradius-1.0.1/etc/raddb/ Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.7/14
  21. 21. Configuration de FreeRadiusIl est clair que les fichiers de configurations ne sont pas trèsconviviaux. Cela peut effrayer au début. Mais ils sont vraimentbien commentés. Aïe Aïe , ca se Corse.   # ls /usr/local/freeradius-1.0.1/etc/raddb/ acct users experimental.conf oraclesql.conf snmp.conf attrs hints postgresql.conf sql.conf certs/ huntgroups preproxy users users clients ldap.attrmap proxy.conf x99.conf clients.conf mssql.conf radiusd.conf x99passwd.sample dictionary naslist eap.conf naspasswd realms Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.7/14
  22. 22. Configuration de FreeRadiusIl est clair que les fichiers de configurations ne sont pas trèsconviviaux. Cela peut effrayer au début. Mais ils sont vraimentbien commentés. Aïe Aïe , ca se Corse.   # ls /usr/local/freeradius-1.0.1/etc/raddb/ acct users experimental.conf oraclesql.conf snmp.conf attrs hints postgresql.conf sql.conf certs/ huntgroups preproxy users users clients ldap.attrmap proxy.conf x99.conf clients.conf mssql.conf radiusd.conf x99passwd.sample dictionary naslist eap.conf naspasswd realms radiusd.conf: fichier principal de configuration du serveur   Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.7/14
  23. 23. Configuration de FreeRadiusIl est clair que les fichiers de configurations ne sont pas trèsconviviaux. Cela peut effrayer au début. Mais ils sont vraimentbien commentés. Aïe Aïe , ca se Corse.   # ls /usr/local/freeradius-1.0.1/etc/raddb/ acct users experimental.conf oraclesql.conf snmp.conf attrs hints postgresql.conf sql.conf certs/ huntgroups preproxy users users clients ldap.attrmap proxy.conf x99.conf clients.conf mssql.conf radiusd.conf x99passwd.sample dictionary naslist eap.conf naspasswd realms radiusd.conf: fichier principal de configuration du serveur   clients.conf: fichier de configuration des clients (type , No IP..)   Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.7/14
  24. 24. Configuration de FreeRadiusIl est clair que les fichiers de configurations ne sont pas trèsconviviaux. Cela peut effrayer au début. Mais ils sont vraimentbien commentés. Aïe Aïe , ca se Corse.   # ls /usr/local/freeradius-1.0.1/etc/raddb/ acct users experimental.conf oraclesql.conf snmp.conf attrs hints postgresql.conf sql.conf certs/ huntgroups preproxy users users clients ldap.attrmap proxy.conf x99.conf clients.conf mssql.conf radiusd.conf x99passwd.sample dictionary naslist eap.conf naspasswd realms radiusd.conf: fichier principal de configuration du serveur   clients.conf: fichier de configuration des clients (type , No IP..)   sql.conf: fichier de config pour accès au serveur MySQL.   Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.7/14
  25. 25. Configuration de FreeRadiusIl est clair que les fichiers de configurations ne sont pas trèsconviviaux. Cela peut effrayer au début. Mais ils sont vraimentbien commentés. Aïe Aïe , ca se Corse.   # ls /usr/local/freeradius-1.0.1/etc/raddb/ acct users experimental.conf oraclesql.conf snmp.conf attrs hints postgresql.conf sql.conf certs/ huntgroups preproxy users users clients ldap.attrmap proxy.conf x99.conf clients.conf mssql.conf radiusd.conf x99passwd.sample dictionary naslist eap.conf naspasswd realms radiusd.conf: fichier principal de configuration du serveur   clients.conf: fichier de configuration des clients (type , No IP..)   sql.conf: fichier de config pour accès au serveur MySQL.   users: fichier de configuration si pas de contrôle par SGBD.   Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.7/14
  26. 26. clients.confC’est le seul fichier à modifier si vous désirez faireune authentification System (username et mot de passeUNIX) Syntaxe très simple .   client host.domainname ¡ secret = motdepasseradius shortname = alias nastype = other ¢ Autant de fois qu’il y a de clients. Chaque client peut avoir un mot de passe différent. Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.8/14
  27. 27. clients.confC’est le seul fichier à modifier si vous désirez faireune authentification System (username et mot de passeUNIX) Syntaxe très simple .   client host.domainname ¡ secret = motdepasseradius shortname = alias nastype = other ¢ Autant de fois qu’il y a de clients. Chaque client peut avoir un mot de passe différent. host.domainname peut être remplacé par Adresse IP   Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.8/14
  28. 28. clients.confC’est le seul fichier à modifier si vous désirez faireune authentification System (username et mot de passeUNIX) Syntaxe très simple .   client host.domainname ¡ secret = motdepasseradius shortname = alias nastype = other ¢ Autant de fois qu’il y a de clients. Chaque client peut avoir un mot de passe différent. host.domainname peut être remplacé par Adresse IP   les type NAS connu par Freeradius:   cisco, computone, livingston, max40xx, multitech, netserver, pathras, patton, portslave, tc, usrhiper,other Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.8/14
  29. 29. users Ce fichier permet de connaître les directives c’est   à dire la méthode d’authentification et les autorisations à appliquer à chaque utilisateur si on ne désire pas utiliser de base de données . Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.9/14
  30. 30. users Ce fichier permet de connaître les directives c’est   à dire la méthode d’authentification et les autorisations à appliquer à chaque utilisateur si on ne désire pas utiliser de base de données . Chaque entrée de ce fichier commence par le nom   d’un utilisateur, l’entrée DEFAULT concerne tous les utilisateurs. Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.9/14
  31. 31. users Ce fichier permet de connaître les directives c’est   à dire la méthode d’authentification et les autorisations à appliquer à chaque utilisateur si on ne désire pas utiliser de base de données . Chaque entrée de ce fichier commence par le nom   d’un utilisateur, l’entrée DEFAULT concerne tous les utilisateurs. L’attribut Auth-Type permet de définir le(s)   type(s) d’authentification permis. Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.9/14
  32. 32. users Ce fichier permet de connaître les directives c’est   à dire la méthode d’authentification et les autorisations à appliquer à chaque utilisateur si on ne désire pas utiliser de base de données . Chaque entrée de ce fichier commence par le nom   d’un utilisateur, l’entrée DEFAULT concerne tous les utilisateurs. L’attribut Auth-Type permet de définir le(s)   type(s) d’authentification permis. L’attribut Fall-Through (yes or no) permet de dire   à radius si il doit continuer dans le fichier pour le cas ou l’authentification aurait échouée. Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.9/14
  33. 33. users Ce fichier permet de connaître les directives c’est   à dire la méthode d’authentification et les autorisations à appliquer à chaque utilisateur si on ne désire pas utiliser de base de données . Chaque entrée de ce fichier commence par le nom   d’un utilisateur, l’entrée DEFAULT concerne tous les utilisateurs. L’attribut Auth-Type permet de définir le(s)   type(s) d’authentification permis. L’attribut Fall-Through (yes or no) permet de dire   à radius si il doit continuer dans le fichier pour le cas ou l’authentification aurait échouée. CONSEIL :Ne touchez pas a ce fichier ;-) `   Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.9/14
  34. 34. sql.conf Ce fichier n’est utilisé que si vous désirez utiliser un   serveur MySQL pour la gestion des utilisateurs. Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.10/14
  35. 35. sql.conf Ce fichier n’est utilisé que si vous désirez utiliser un   serveur MySQL pour la gestion des utilisateurs. Vérifier dans radius.conf, à la section module, la ligne:   $INCLUDE $ confdir /sql.conf ¡ ¢ Ainsi que dans la section authorize que sql soit bien décommenté. Vous pouvez mettre file en commentaire dans la section authorize pour ne permettre que ce type d’authorisation. Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.10/14
  36. 36. sql.conf Ce fichier n’est utilisé que si vous désirez utiliser un   serveur MySQL pour la gestion des utilisateurs. Vérifier dans radius.conf, à la section module, la ligne:   $INCLUDE $ confdir /sql.conf ¡ ¢ Ainsi que dans la section authorize que sql soit bien décommenté. Vous pouvez mettre file en commentaire dans la section authorize pour ne permettre que ce type d’authorisation. Attributs OBLIGATOIRES.   server = ”localhost” # MySQL server login = ”radius” # MySQL username password = ”xxxxxxx” # MySQL user password radius db = ”Radius” # MySQL radius database Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.10/14
  37. 37. radiusd.conf Il est divisé en sections (Security, proxy, thread   pool,modules, authorize, authenticate et accounting), Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.11/14
  38. 38. radiusd.conf Il est divisé en sections (Security, proxy, thread   pool,modules, authorize, authenticate et accounting), La section security permet de protéger le serveur contre   quelques attaques DoS notamment. Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.11/14
  39. 39. radiusd.conf Il est divisé en sections (Security, proxy, thread   pool,modules, authorize, authenticate et accounting), La section security permet de protéger le serveur contre   quelques attaques DoS notamment. La section proxy permet de configurer les paramètres   relatifs à la communication avec d’autres serveurs RADIUS. Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.11/14
  40. 40. radiusd.conf Il est divisé en sections (Security, proxy, thread   pool,modules, authorize, authenticate et accounting), La section security permet de protéger le serveur contre   quelques attaques DoS notamment. La section proxy permet de configurer les paramètres   relatifs à la communication avec d’autres serveurs RADIUS. La section thread pool permet de configurer le nombre de   serveurs qui traitent les requêtes et le nombre de processus lancés. Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.11/14
  41. 41. radiusd.conf Il est divisé en sections (Security, proxy, thread   pool,modules, authorize, authenticate et accounting), La section security permet de protéger le serveur contre   quelques attaques DoS notamment. La section proxy permet de configurer les paramètres   relatifs à la communication avec d’autres serveurs RADIUS. La section thread pool permet de configurer le nombre de   serveurs qui traitent les requêtes et le nombre de processus lancés. La section modules.C’est l’une des plus importantes. Elle   permet d’activer et de configurer les méthodes d’authentification. Cette section est la plus longue. Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.11/14
  42. 42. radiusd.conf (2) La section authorize spécifie l’ordre et les méthodes   d’authentification dans lequel le serveur doit vérifier les identités des utilisateurs désireux de s’authentifier. Par défaut, c’est seulement par le fichier users que l’on peut vérifier les utilisateurs. Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.12/14
  43. 43. radiusd.conf (2) La section authorize spécifie l’ordre et les méthodes   d’authentification dans lequel le serveur doit vérifier les identités des utilisateurs désireux de s’authentifier. Par défaut, c’est seulement par le fichier users que l’on peut vérifier les utilisateurs. La section authenticate précise quels modules sont   disponibles pour l’authentification. Ne pas confondre avec la section précédente. Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.12/14
  44. 44. radiusd.conf (2) La section authorize spécifie l’ordre et les méthodes   d’authentification dans lequel le serveur doit vérifier les identités des utilisateurs désireux de s’authentifier. Par défaut, c’est seulement par le fichier users que l’on peut vérifier les utilisateurs. La section authenticate précise quels modules sont   disponibles pour l’authentification. Ne pas confondre avec la section précédente. La section accounting spécifie la manière dont les logs   vont être enregistrés Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.12/14
  45. 45. Tester RadiusFreeradius est fourni avec quelques utilitaires de test. check-radiusd-config permet de tester le fichier de config du   serveur Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.13/14
  46. 46. Tester RadiusFreeradius est fourni avec quelques utilitaires de test. check-radiusd-config permet de tester le fichier de config du   serveur radtest   % radtest caron noel32 localhost 1812 SicRetKey Sending Access-Request of id 228 to 127.0.0.1:1812 User-Name = ”caron” User-Password = ”noel32” NAS-IP-Address = perseus NAS-Port = 1812 rad recv: Access-Accept packet from host 127.0.0.1:1812, id=228, length=20 Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.13/14
  47. 47. Tester RadiusFreeradius est fourni avec quelques utilitaires de test. check-radiusd-config permet de tester le fichier de config du   serveur radtest   % radtest caron noel32 localhost 1812 SicRetKey Sending Access-Request of id 228 to 127.0.0.1:1812 User-Name = ”caron” User-Password = ”noel32” NAS-IP-Address = perseus NAS-Port = 1812 rad recv: Access-Accept packet from host 127.0.0.1:1812, id=228, length=20 Au début, démarrer le démon radiusd avec l’option -X   Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.13/14
  48. 48. Tester RadiusFreeradius est fourni avec quelques utilitaires de test. check-radiusd-config permet de tester le fichier de config du   serveur radtest   % radtest caron noel32 localhost 1812 SicRetKey Sending Access-Request of id 228 to 127.0.0.1:1812 User-Name = ”caron” User-Password = ”noel32” NAS-IP-Address = perseus NAS-Port = 1812 rad recv: Access-Accept packet from host 127.0.0.1:1812, id=228, length=20 Au début, démarrer le démon radiusd avec l’option -X   PPPd compilé avec le module radius.so, fournit un utilitaire   radlogin pour tester le client Radius. Mise en place d’un serveur Radius pour authentification sur une serveur VPN sous LinuX – p.13/14
  49. 49. (mes) Conclusions Mis à part le fait que la communication entre le serveur   Radius et son client soit encryptée, un serveur radius n’est pas autre chose qu’un serveur de type NIS ou LDAP (avec quelques spécificité d’informations propres aux NAS). La mise en place d’un serveur Radius n’implique pas que la   communication sera sécurisée de bout en bout (une attaque sur le serveur SQL mal protégé donne au pirate tous les MdP de tous les utilisateurs. C’est grâce au passage par MySQL que la gestion des   utilisateurs peut être plus aisée, mais utiliser le fichier /etc/ppp/chap-secrets ne semble pas moins sécurisé que par un serveur Radius ... En réalité je ne comprends pas très très bien l’intérêt d’un   serveur radius :-(, si ceplace d’un serveur Radiusobligation pour gérér lesp.14/14 Mise en n’est son pour authentification sur une serveur VPN sous LinuX –

×