This is an old revision of the document!


07. [BONUS - 10p] Autentificare prin RADIUS pentru server de PPPoE

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):

  1. instalare server de RADIUS
  2. configurare și testare server de RADIUS
  3. configurare client de RADIUS
  4. configurare server de PPPoE cu suport RADIUS
  5. pornire server de PPPoE
  6. crearea de conexiuni PPPoE pe noua configurație

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.

1) detalii despre configurarea PPPoE cu suport RADIUS se găsesc aici
rl/labs/12/contents/07.1389193650.txt.gz · Last modified: 2014/01/08 17:07 by razvan.deaconescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0