This is an old revision of the document!
Un furnizor de servicii (precum un ISP) folosește credențialele unui utilizator pentru a asigura autentificarea în mai multe situații: PPPoE, VPN, switch-uri, Network Access Server etc. În această situație este util un server centralizat pentru autentificare. Un protocol care furnizează AAA (Authentication, Authorization, and Accounting) este RADIUS. RADIUS este un protocol client-server folosit pentru gestiunea accesului la resursele unui furnizor de servicii.
Un server de PPPoE poate folosi ca backend pentru autentificare un server de RADIUS. În cele ce urmează vom instala și configura un server de RADIUS și vom configura PPPoE să folosească acest server de RADIUS pentru autentificare.
Înainte de a configura serverul de RADIUS și suportul PPPoE prin RADIUS, vom dezactiva configurările anterioare. Vom dezactiva conexiunea PPPoE de pe stația red
:
root@red:~# poff rl-dsl-provider
și vom opri serverul de PPPoE pe stația host
:
root@host:~# ps -ef | grep pppoe-server root 21893 1 0 17:06 ? 00:00:00 pppoe-server -C isp -L 192.168.0.1 -p /etc/ppp/ipaddress_pool -I br0 -O /etc/ppp/options root@host:~# kill 21893
Apoi vom urma pașii1):
Instalăm serverul de RADIUS (pachetul freeradius
) pe stația host
:
root@host:~# apt-get install freeradius
Adăugăm intrări pentru credențialele de conectare PPP în fișierul /etc/radius/users
. Putem adăuga intrările la sfârșitul fisierului:
red Cleartext-Password := "red" Service-Type = Framed-User, Framed-Protocol = PPP, Framed-Compression = Van-Jacobsen-TCP-IP green Cleartext-Password := "green" Service-Type = Framed-User, Framed-Protocol = PPP, Framed-Compression = Van-Jacobsen-TCP-IP blue Cleartext-Password := "blue" Service-Type = Framed-User, Framed-Protocol = PPP, Framed-Compression = Van-Jacobsen-TCP-IP extra Cleartext-Password := "extra" Service-Type = Framed-User, Framed-Protocol = PPP, Framed-Compression = Van-Jacobsen-TCP-IP
Cele patru perechi de credențiale (username și parolă) sunt cele pe care le configuram până acum direct în serverul PPPoE.
După configurare repornim serverul PPPoE:
root@host:~# /etc/init.d/freeradius restart
Pentru a testa configurarea, folosim utilitarul radtest
:
root@host:~# radtest red red 127.0.0.1 0 testing123 Sending Access-Request of id 21 to 127.0.0.1 port 1812 User-Name = "red" User-Password = "red" NAS-IP-Address = 127.0.0.1 NAS-Port = 0 rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=21, length=38 Service-Type = Framed-User Framed-Protocol = PPP Framed-Compression = Van-Jacobson-TCP-IP root@host:~# radtest green green 127.0.0.1 0 testing123 [...] root@host:~# radtest blue blue 127.0.0.1 0 testing123 [...] root@host:~# radtest extra extra 127.0.0.1 0 testing123 [...]
Pentru ca un alt serviciu să poată folosi serviciul de RADIUS este nevoie de configurarea unui client RADIUS care va interedia comunicarea cu serverul. Pentru aceasta vom instala clientul de RADIUS:
root@host:~# apt-get install radiusclient1
Configurația implicită a acestuia este suficientă în fișierul /etc/radiusclient/radiusclient.conf
, dar trebuie precizat serverul de RADIUS la care se va conecta în fișierul /etc/radiusclient/servers
. Pentru aceasta adăugăm linia cu cheia implicită a serverului:
root@host:~# cat /etc/radiusclient/servers [...] 127.0.0.1 testing123
Testăm configurația clientului de RADIUS folosind comanda radlogin
:
root@host:~# radlogin ($Id: radlogin.c,v 1.3 1997/12/29 23:07:25 lf Exp $) ----------------------------------------------------- Linux 3.2.0-53-generic-pae (host) (port 0) ----------------------------------------------------- login: red Password: RADIUS: Authentication OK Starting. RADIUS_FRAMED_COMPRESSION = Van-Jacobson-TCP-IP RADIUS_FRAMED_PROTOCOL = PPP RADIUS_SERVICE_TYPE = Framed-User RADIUS_USER_NAME = red
Având configurat clientul de RADIUS putem să configurăm serverul de PPPoE să folosească suportul de RADIUS. Pentru această adăugăm cele două linii de mai jos în fișierul /etc/ppp/options
:
plugin radius.so plugin radattr.so
Întrucât este posibil să întâlnim probleme de configurare, este recomandat să activăm mesajele de debug în server prin decomentarea liniei ce conține șirul debug
în fișierul /etc/ppp/options
:
debug
Apoi comentăm credențialele CHAP (vom folosi acum autentificarea prin RADIUS):
root@host:~# cat /etc/ppp/chap-secrets # Secrets for authentication using CHAP # client server secret IP addresses #red * red * #green * greeen * #blue * blue * #extra * extra *
După configurarea suportului RADIUS pornim serverul de PPPoE:
root@host:~# pppoe-server -C isp -L 192.168.0.1 -p /etc/ppp/ipaddress_pool -I br0 -O /etc/ppp/options root@host:~# ps -ef | grep pppoe root 29492 1 0 19:11 ? 00:00:00 pppoe-server -C isp -L 192.168.0.1 -p /etc/ppp/ipaddress_pool -I br0 -O /etc/ppp/options
După aceasta putem porni conexiuni PPPoE pe stațiile client PPPoE. Mai jos am pornit conexiunea pe stația red
:
root@red:~# pon dsl-provider Plugin rp-pppoe.so loaded. root@red:~# plog Dec 31 17:15:02 red pppd[680]: Exit. Dec 31 17:15:16 red pppd[733]: Plugin rp-pppoe.so loaded. Dec 31 17:15:16 red pppd[735]: pppd 2.4.5 started by root, uid 0 Dec 31 17:15:16 red pppd[735]: PPP session is 2 Dec 31 17:15:16 red pppd[735]: Connected to 3e:5a:9f:d4:3a:6a via interface eth0 Dec 31 17:15:16 red pppd[735]: Using interface ppp0 Dec 31 17:15:16 red pppd[735]: Connect: ppp0 <--> eth0 Dec 31 17:15:16 red pppd[735]: peer from calling number 3E:5A:9F:D4:3A:6A authorized Dec 31 17:15:16 red pppd[735]: local IP address 192.168.0.3 Dec 31 17:15:16 red pppd[735]: remote IP address 192.168.0.1
Cu opțiunea de debug activată putem urmări fișierele jurnal cu informații de conectare:
root@host:~# tail /var/log/syslog [...] Dec 30 19:15:16 host pppd[29773]: rcvd [IPCP ConfAck id=0x1 <addr 192.168.0.1>] Dec 30 19:15:16 host pppd[29773]: rcvd [IPCP ConfReq id=0x2 <addr 0.0.0.0>] Dec 30 19:15:16 host pppd[29773]: sent [IPCP ConfNak id=0x2 <addr 192.168.0.3>] Dec 30 19:15:16 host pppd[29773]: rcvd [IPCP ConfReq id=0x3 <addr 192.168.0.3>] Dec 30 19:15:16 host pppd[29773]: sent [IPCP ConfAck id=0x3 <addr 192.168.0.3>] Dec 30 19:15:16 host pppd[29773]: local IP address 192.168.0.1 Dec 30 19:15:16 host pppd[29773]: remote IP address 192.168.0.3
Folosirea RADIUS permite centralizarea informațiilor de autentificare. Aceste informații pot fi folosite atât de serverul de PPPoE cât și de alte servicii precum servere VPN, Network Access Servers, switch-uri. Mai sus am explicitat configurația pentru serverul de PPPoE, permițând clienților de PPPoE să se autentifice și să primească adresă IP prin credențiale stocate de serverul de RADIUS.