Vous êtes sur la page 1sur 49

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX

Retour dexprience sur la mise en place dun 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 dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.1/14

Le serveur VPN (POPTop)


POPTop est un serveur qui implmente le protocole pptpd (Point to Point Tunneling Protocol). Il encapsule des paquets PPP dans du GRE (Generic Routine Encapsulation)

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.2/14

Le serveur VPN (POPTop)


POPTop est un serveur qui implmente le protocole pptpd (Point to Point Tunneling Protocol). Il encapsule des paquets PPP dans du GRE (Generic Routine Encapsulation) POPTop ne gre ni lencryptage du tunnel, ni lauthentication.

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.2/14

Le serveur VPN (POPTop)


POPTop est un serveur qui implmente le protocole pptpd (Point to Point Tunneling Protocol). Il encapsule des paquets PPP dans du GRE (Generic Routine Encapsulation) POPTop ne gre ni lencryptage du tunnel, ni lauthentication. POPTop sappuie sur PPP. PPP implmente plusieurs protocoles dauthentication dont MSchap(Microsoft compatible authentication and encryption) v1 et v2, PAP (Password authentication protocol) ,CHAP etc...

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.2/14

Le serveur VPN (POPTop)


POPTop est un serveur qui implmente le protocole pptpd (Point to Point Tunneling Protocol). Il encapsule des paquets PPP dans du GRE (Generic Routine Encapsulation) POPTop ne gre ni lencryptage du tunnel, ni lauthentication. POPTop sappuie sur PPP. PPP implmente plusieurs protocoles dauthentication dont MSchap(Microsoft compatible authentication and encryption) v1 et v2, PAP (Password authentication protocol) ,CHAP etc... La seule faon, ma connaissance, de crer un canal crypt est dutiliser le protocole mppe qui ncessite de compiler le module ppp_mppe dans le noyau Linux du serveur et dans les noyaux des clients Linux!

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.2/14

PPPd
Avec PPPD lauthentication par dfaut se fait par chier (/etc/ppp/pap-secrets ou chap-secret). Ce qui rend la gestion des utilisateurs pnible pour ne pas dire impossible par exemple dans le cas de changement de mot de passe. Pour remdier ce problme on a pens radius (en plus a fait trs Pro ;-) Comme on est radin et quon veut (un peu) comprendre, on se tourne vers le libre (FreeRadius ou GNURadius)

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.3/14

FreeRadius
Radius = Remote Authentication in Dial-In User Service .

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.4/14

FreeRadius
Radius = Remote Authentication in Dial-In User Service . Radius ne VA PAS ENCRYPTER le tunnel

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.4/14

FreeRadius
Radius = Remote Authentication in Dial-In User Service . Radius ne VA PAS ENCRYPTER le tunnel Radius va se charger : ( de lauthentication, des autorisations, des informations de sessions).

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.4/14

FreeRadius
Radius = Remote Authentication in Dial-In User Service . Radius ne VA PAS ENCRYPTER le tunnel Radius va se charger : ( de lauthentication, des autorisations, des informations de sessions). Attention , pour quun serveur VPN de type POPTop puisse correspondre avec un serveur Radius IL FAUT RECOMPILER PPPd an davoir le module radius.so

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.4/14

FreeRadius
Radius = Remote Authentication in Dial-In User Service . Radius ne VA PAS ENCRYPTER le tunnel Radius va se charger : ( de lauthentication, des autorisations, des informations de sessions). Attention , pour quun serveur VPN de type POPTop puisse correspondre avec un serveur Radius IL FAUT RECOMPILER PPPd an davoir le module radius.so On installe freeradius par rpm ou tar.gz , pas de problme particulier.

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.4/14

Authentication
Par le Systme
- Le nom et le mot de passe de lutilisateur sont ceux du systme (UNIX), Freeradius utilise /etc/passwd et/ou NIS. Cest la cong par dfaut de FreeRadius

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.5/14

Authentication
Par le Systme
- Le nom et le mot de passe de lutilisateur sont ceux du systme (UNIX), Freeradius utilise /etc/passwd et/ou NIS. Cest la cong par dfaut de FreeRadius

En Interne
Le nom et le mot de passe de lutilisateur sont stocks dans les chiers de cong de radius

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.5/14

Authentication
Par le Systme
- Le nom et le mot de passe de lutilisateur sont ceux du systme (UNIX), Freeradius utilise /etc/passwd et/ou NIS. Cest la cong par dfaut de FreeRadius

En Interne
Le nom et le mot de passe de lutilisateur sont stocks dans les chiers de cong de radius

Par Base de donne


(MySQL,Oracle,PostgreSQL,LDAP) les informations de lutilisateur sont stocks dans une base de donne, attention la communication Radius<->SQL nest pas encryte.

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.5/14

Authentication
Par le Systme
- Le nom et le mot de passe de lutilisateur sont ceux du systme (UNIX), Freeradius utilise /etc/passwd et/ou NIS. Cest la cong par dfaut de FreeRadius

En Interne
Le nom et le mot de passe de lutilisateur sont stocks dans les chiers de cong de radius

Par Base de donne


(MySQL,Oracle,PostgreSQL,LDAP) les informations de lutilisateur sont stocks dans une base de donne, attention la communication Radius<->SQL nest pas encryte.

PAM (Pluggable Authentication Service) cest

selon la cong de PAM queserveur Radius faire lauthentication p.5/14 va se pour authentication sur une serveur VPN sous LinuX Mise en place dun

Schma des encryptages


Serveur SQL

INTERNET
Serveur FreeRadius

Client VPN

Routeur/Firewall

Serveur VPN

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.6/14

Schma des encryptages


Serveur SQL

INTERNET
Serveur FreeRadius

Client VPN

Canal encrypt ou non


Routeur/Firewall

Serveur VPN

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.6/14

Schma des encryptages


Serveur SQL

INTERNET
Serveur FreeRadius

Client VPN

Canal encrypt ou non Canal encrypt Serveur VPN


Routeur/Firewall

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.6/14

Schma des encryptages


Serveur SQL

Canal non encrypt

INTERNET
Serveur FreeRadius

Client VPN

Canal encrypt ou non Canal encrypt Serveur VPN


Routeur/Firewall

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.6/14

Conguration de FreeRadius
Il est clair que les chiers de congurations ne sont pas trs conviviaux. Cela peut effrayer au dbut. Mais ils sont vraiment bien comments. Ae Ae , ca se Corse.
# ls /usr/local/freeradius-1.0.1/etc/raddb/

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.7/14

Conguration de FreeRadius
Il est clair que les chiers de congurations ne sont pas trs conviviaux. Cela peut effrayer au dbut. Mais ils sont vraiment bien comments. Ae Ae , ca se Corse.
# ls /usr/local/freeradius-1.0.1/etc/raddb/ acct users attrs certs/ clients clients.conf dictionary experimental.conf oraclesql.conf hints postgresql.conf huntgroups preproxy users ldap.attrmap proxy.conf mssql.conf radiusd.conf naslist eap.conf snmp.conf sql.conf users x99.conf x99passwd.sample naspasswd realms

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.7/14

Conguration de FreeRadius
Il est clair que les chiers de congurations ne sont pas trs conviviaux. Cela peut effrayer au dbut. Mais ils sont vraiment bien comments. Ae Ae , ca se Corse.
# ls /usr/local/freeradius-1.0.1/etc/raddb/ acct users attrs certs/ clients clients.conf dictionary

experimental.conf oraclesql.conf hints postgresql.conf huntgroups preproxy users ldap.attrmap proxy.conf mssql.conf radiusd.conf naslist eap.conf

snmp.conf sql.conf users x99.conf x99passwd.sample naspasswd realms

radiusd.conf: chier principal de conguration du serveur

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.7/14

Conguration de FreeRadius
Il est clair que les chiers de congurations ne sont pas trs conviviaux. Cela peut effrayer au dbut. Mais ils sont vraiment bien comments. Ae Ae , ca se Corse.
# ls /usr/local/freeradius-1.0.1/etc/raddb/ acct users attrs certs/ clients clients.conf dictionary

experimental.conf oraclesql.conf hints postgresql.conf huntgroups preproxy users ldap.attrmap proxy.conf mssql.conf radiusd.conf naslist eap.conf

snmp.conf sql.conf users x99.conf x99passwd.sample naspasswd realms

radiusd.conf: chier principal de conguration du serveur clients.conf: chier de conguration des clients (type , No IP..)

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.7/14

Conguration de FreeRadius
Il est clair que les chiers de congurations ne sont pas trs conviviaux. Cela peut effrayer au dbut. Mais ils sont vraiment bien comments. Ae Ae , ca se Corse.
# ls /usr/local/freeradius-1.0.1/etc/raddb/ acct users attrs certs/ clients clients.conf dictionary

experimental.conf oraclesql.conf hints postgresql.conf huntgroups preproxy users ldap.attrmap proxy.conf mssql.conf radiusd.conf naslist eap.conf

snmp.conf sql.conf users x99.conf x99passwd.sample naspasswd realms

radiusd.conf: chier principal de conguration du serveur clients.conf: chier de conguration des clients (type , No IP..) sql.conf: chier de cong pour accs au serveur MySQL.

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.7/14

Conguration de FreeRadius
Il est clair que les chiers de congurations ne sont pas trs conviviaux. Cela peut effrayer au dbut. Mais ils sont vraiment bien comments. Ae Ae , ca se Corse.
# ls /usr/local/freeradius-1.0.1/etc/raddb/ acct users attrs certs/ clients clients.conf dictionary

experimental.conf oraclesql.conf hints postgresql.conf huntgroups preproxy users ldap.attrmap proxy.conf mssql.conf radiusd.conf naslist eap.conf

snmp.conf sql.conf users x99.conf x99passwd.sample naspasswd realms

radiusd.conf: chier principal de conguration du serveur clients.conf: chier de conguration des clients (type , No IP..) sql.conf: chier de cong pour accs au serveur MySQL. users: chier de conguration si pas de contrle par SGBD.

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.7/14

clients.conf
Cest le seul chier modier si vous dsirez faire une authentication System (username et mot de passe UNIX) Syntaxe trs simple .

client host.domainname secret = motdepasseradius shortname = alias nastype = other


Autant de fois quil y a de clients. Chaque client peut avoir un mot de passe diffrent.

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.8/14

clients.conf
Cest le seul chier modier si vous dsirez faire une authentication System (username et mot de passe UNIX) Syntaxe trs simple .

client host.domainname secret = motdepasseradius shortname = alias nastype = other


Autant de fois quil y a de clients. Chaque client peut avoir un mot de passe diffrent. host.domainname peut tre remplac par Adresse IP

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.8/14

clients.conf
Cest le seul chier modier si vous dsirez faire une authentication System (username et mot de passe UNIX) Syntaxe trs simple .

client host.domainname secret = motdepasseradius shortname = alias nastype = other


Autant de fois quil y a de clients. Chaque client peut avoir un mot de passe diffrent. 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 dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.8/14

users
Ce chier permet de connatre les directives cest dire la mthode dauthentication et les autorisations appliquer chaque utilisateur si on ne dsire pas utiliser de base de donnes .

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.9/14

users
Ce chier permet de connatre les directives cest dire la mthode dauthentication et les autorisations appliquer chaque utilisateur si on ne dsire pas utiliser de base de donnes . Chaque entre de ce chier commence par le nom dun utilisateur, lentre DEFAULT concerne tous les utilisateurs.

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.9/14

users
Ce chier permet de connatre les directives cest dire la mthode dauthentication et les autorisations appliquer chaque utilisateur si on ne dsire pas utiliser de base de donnes . Chaque entre de ce chier commence par le nom dun utilisateur, lentre DEFAULT concerne tous les utilisateurs. Lattribut Auth-Type permet de dnir le(s) type(s) dauthentication permis.

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.9/14

users
Ce chier permet de connatre les directives cest dire la mthode dauthentication et les autorisations appliquer chaque utilisateur si on ne dsire pas utiliser de base de donnes . Chaque entre de ce chier commence par le nom dun utilisateur, lentre DEFAULT concerne tous les utilisateurs. Lattribut Auth-Type permet de dnir le(s) type(s) dauthentication permis. Lattribut Fall-Through (yes or no) permet de dire radius si il doit continuer dans le chier pour le cas ou lauthentication aurait choue.

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.9/14

users
Ce chier permet de connatre les directives cest dire la mthode dauthentication et les autorisations appliquer chaque utilisateur si on ne dsire pas utiliser de base de donnes . Chaque entre de ce chier commence par le nom dun utilisateur, lentre DEFAULT concerne tous les utilisateurs. Lattribut Auth-Type permet de dnir le(s) type(s) dauthentication permis. Lattribut Fall-Through (yes or no) permet de dire radius si il doit continuer dans le chier pour le cas ou lauthentication aurait choue. CONSEIL :Ne touchez pas a ce chier ;-) `

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.9/14

sql.conf
Ce chier nest utilis que si vous dsirez utiliser un serveur MySQL pour la gestion des utilisateurs.

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.10/14

sql.conf
Ce chier nest utilis que si vous dsirez utiliser un serveur MySQL pour la gestion des utilisateurs. Vrier dans radius.conf, la section module, la ligne:
$INCLUDE $ confdir /sql.conf

Ainsi que dans la section authorize que sql soit bien dcomment. Vous pouvez mettre le en commentaire dans la section authorize
pour ne permettre que ce type dauthorisation.

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.10/14

sql.conf
Ce chier nest utilis que si vous dsirez utiliser un serveur MySQL pour la gestion des utilisateurs. Vrier dans radius.conf, la section module, la ligne:
$INCLUDE $ confdir /sql.conf

Ainsi que dans la section authorize que sql soit bien dcomment. Vous pouvez mettre le en commentaire dans la section authorize
pour ne permettre que ce type dauthorisation.

Attributs OBLIGATOIRES. server = localhost # MySQL server login = radius # MySQL username password = xxxxxxx # MySQL user password radius db = Radius # MySQL radius database

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.10/14

radiusd.conf
Il est divis en sections (Security, proxy, thread pool,modules, authorize, authenticate et accounting),

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.11/14

radiusd.conf
Il est divis en sections (Security, proxy, thread pool,modules, authorize, authenticate et accounting), La section security permet de protger le serveur contre quelques attaques DoS notamment.

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.11/14

radiusd.conf
Il est divis en sections (Security, proxy, thread pool,modules, authorize, authenticate et accounting), La section security permet de protger le serveur contre quelques attaques DoS notamment. La section proxy permet de congurer les paramtres relatifs la communication avec dautres serveurs RADIUS.

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.11/14

radiusd.conf
Il est divis en sections (Security, proxy, thread pool,modules, authorize, authenticate et accounting), La section security permet de protger le serveur contre quelques attaques DoS notamment. La section proxy permet de congurer les paramtres relatifs la communication avec dautres serveurs RADIUS. La section thread pool permet de congurer le nombre de serveurs qui traitent les requtes et le nombre de processus lancs.

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.11/14

radiusd.conf
Il est divis en sections (Security, proxy, thread pool,modules, authorize, authenticate et accounting), La section security permet de protger le serveur contre quelques attaques DoS notamment. La section proxy permet de congurer les paramtres relatifs la communication avec dautres serveurs RADIUS. La section thread pool permet de congurer le nombre de serveurs qui traitent les requtes et le nombre de processus lancs. La section modules.Cest lune des plus importantes. Elle permet dactiver et de congurer les mthodes dauthentication. Cette section est la plus longue.

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.11/14

radiusd.conf (2)
La section authorize spcie lordre et les mthodes dauthentication dans lequel le serveur doit vrier les identits des utilisateurs dsireux de sauthentier. Par dfaut, cest seulement par le chier users que lon peut vrier les utilisateurs.

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.12/14

radiusd.conf (2)
La section authorize spcie lordre et les mthodes dauthentication dans lequel le serveur doit vrier les identits des utilisateurs dsireux de sauthentier. Par dfaut, cest seulement par le chier users que lon peut vrier les utilisateurs. La section authenticate prcise quels modules sont disponibles pour lauthentication. Ne pas confondre avec la section prcdente.

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.12/14

radiusd.conf (2)
La section authorize spcie lordre et les mthodes dauthentication dans lequel le serveur doit vrier les identits des utilisateurs dsireux de sauthentier. Par dfaut, cest seulement par le chier users que lon peut vrier les utilisateurs. La section authenticate prcise quels modules sont disponibles pour lauthentication. Ne pas confondre avec la section prcdente. La section accounting spcie la manire dont les logs vont tre enregistrs

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.12/14

Tester Radius
Freeradius est fourni avec quelques utilitaires de test. check-radiusd-cong permet de tester le chier de cong du serveur

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.13/14

Tester Radius
Freeradius est fourni avec quelques utilitaires de test. check-radiusd-cong permet de tester le chier de cong 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 dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.13/14

Tester Radius
Freeradius est fourni avec quelques utilitaires de test. check-radiusd-cong permet de tester le chier de cong 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 dbut, dmarrer le dmon radiusd avec loption -X

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.13/14

Tester Radius
Freeradius est fourni avec quelques utilitaires de test. check-radiusd-cong permet de tester le chier de cong 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 dbut, dmarrer le dmon radiusd avec loption -X PPPd compil avec le module radius.so, fournit un utilitaire radlogin pour tester le client Radius.

Mise en place dun serveur Radius pour authentication sur une serveur VPN sous LinuX p.13/14

(mes) Conclusions
Mis part le fait que la communication entre le serveur Radius et son client soit encrypte, un serveur radius nest pas autre chose quun serveur de type NIS ou LDAP (avec quelques spcicit dinformations propres aux NAS). La mise en place dun serveur Radius nimplique pas que la communication sera scurise de bout en bout (une attaque sur le serveur SQL mal protg donne au pirate tous les MdP de tous les utilisateurs. Cest grce au passage par MySQL que la gestion des utilisateurs peut tre plus aise, mais utiliser le chier /etc/ppp/chap-secrets ne semble pas moins scuris que par un serveur Radius ...

En ralit je ne comprends pas trs trs bien lintrt dun Mise en serveur radius :-(, si ceplace dun serveur Radiusobligation pour grr lesp.14/14 nest son pour authentication sur une serveur VPN sous LinuX

Vous aimerez peut-être aussi