Differences

This shows you the differences between two versions of the page.

Link to this comparison view

rl:labs:12:contents:07 [2014/01/09 09:42]
razvan.deaconescu [07. [BONUS - 10p] Autentificare prin RADIUS pentru server de PPPoE]
— (current)
Line 1: Line 1:
-==== 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'':<​code bash> 
-root@red:~# poff rl-dsl-provider 
-</​code>​ 
-și vom opri serverul de PPPoE pe stația ''​host'':<​code bash> 
-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 
-</​code>​ 
- 
-Apoi vom urma pașii((detalii despre configurarea PPPoE cu suport RADIUS se găsesc [[http://​blog.webdir.bg/​linux-pppoe-server-with-radius-suuport/​|aici]])):​ 
-  - instalare server de RADIUS 
-  - configurare și testare server de RADIUS 
-  - configurare client de RADIUS 
-  - configurare server de PPPoE cu suport RADIUS 
-  - pornire server de PPPoE 
-  - crearea de conexiuni PPPoE pe noua configurație 
- 
-Instalăm serverul de RADIUS (pachetul ''​freeradius''​) pe stația ''​host'':<​code bash> 
-root@host:​~#​ apt-get install freeradius 
-</​code>​ 
- 
-Adăugăm intrări pentru credențialele de conectare PPP în fișierul ''/​etc/​freeradius/​users''​. Putem adăuga intrările la sfârșitul fisierului:<​code>​ 
-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 
-</​code>​ 
-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:<​code bash> 
-root@host:​~#​ /​etc/​init.d/​freeradius restart 
-</​code>​ 
- 
-Pentru a testa configurarea,​ folosim utilitarul ''​radtest'':<​code bash> 
-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 
-[...] 
-</​code>​ 
- 
-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:<​code bash> 
-root@host:​~#​ apt-get install radiusclient1 
-</​code>​ 
-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:<​code bash> 
-root@host:​~#​ cat /​etc/​radiusclient/​servers ​ 
-[...] 
-127.0.0.1 testing123 
-</​code>​ 
-Testăm configurația clientului de RADIUS folosind comanda ''​radlogin'':<​code bash> 
-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 
-</​code>​ 
- 
-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'':<​code>​ 
-plugin radius.so 
-plugin radattr.so 
-</​code>​ 
-Î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'':<​code>​ 
-debug 
-</​code>​ 
- 
-Apoi comentăm credențialele CHAP (vom folosi acum autentificarea prin RADIUS):<​code>​ 
-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 * 
-</​code>​ 
- 
-După configurarea suportului RADIUS, repornim serverul de PPPoE:<​code bash> 
-root@host:​~#​ pkill -f pppoe-server 
-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 
-</​code>​ 
- 
-După aceasta putem porni conexiuni PPPoE pe stațiile client PPPoE. Mai jos am pornit conexiunea pe stația ''​red'':<​code bash> 
-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 
-</​code>​ 
- 
-Cu opțiunea de debug activată putem urmări fișierele jurnal cu informații de conectare:<​code bash> 
-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 
-</​code>​ 
- 
-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. 
rl/labs/12/contents/07.1389253368.txt.gz · Last modified: 2014/01/09 09:42 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