Ïîääåðæêà RADIUS
Ïîääåðæêà RADIUS ïîÿâèëàñü â NeTAMS 3.3.0 (CURRENT) íà÷èíàÿ ñ íîìåðà áèëäà 2378 (8 àïðåëÿ 2005ã.)
×òî èìåííî ïîääåðæèâàåòñÿ
 NeTAMS ðåàëèçîâàíà ïîääåðæêà àâòîðèçàöèè äîñòóïà ê ðåñóðñàì âíåøíèé ñåðâåð-äîñòóïà
è ðàäèóñ-ñåðâåð, êîãäà ïîñëåäíèé îáðàùàåòñÿ çà ïàðîëåì è àòðèáóòàìè ê âíóòðåííèì ñòðóêòóðàì
netams ÷åðåç åãî Telnet API. Òàêæå âîçìîæíî èñïîëüçîâàíèå RADIUS-ñåðâåðà äëÿ êîíòðîëÿ äîñòóïà
ê ñòàòè÷åñêèì âåá-ñòðàíèöàì. Òàêèì îáðàçîì, ñ òî÷êè çðåíèÿ îðãàíèçàöèè ïðîâàéäåðñòâà NeTAMS ÿâëÿåòñÿ
áàçîé äàííûõ äëÿ ðàäèóñ-ñåðâåðà. Ïðîçðà÷íî ïîääåðæèâàþòñÿ ëþáûå ìåòîäû ïðîâåðêè ïàðîëåé
(PAP/CHAP/MS-CHAP/EAP), ò.ê. ýòî äåëî FreeRADIUS à íå NETAMS; ëþáîå ÷èñëî âíåøíèõ ñåðâåðîâ äîñòóïà.
Ïîääåðæèâàåòñÿ îòïðàâêà àêêàóíòèíãà (äàííûõ î òðàôèêå) â ñòîðîíó ðàäèóñ-ñåðâåðà ÷åðåç íîâûé òèï ñåðâèñà
storage... type radius (
äîêóìåíòàöèÿ).
Ñ âåðñèè 3.4.0 ïîÿâèëàñü ïîääåðæêà ïîëó÷åíèÿ àêêàóíòèíãà ðàäèóñ-ñåðâåðîì ñî ñòîðîíû NAS, ñ ïîñëåäóþùåé îáðàòîòêîé ÷åðåç data-source raw.
×òî íå ïîääåðæèâàåòñÿ
Íå ïîääåðæèâàåòñÿ êîíòðîëü äîñòóïà è ïðîâåðêà ïàðîëåé äëÿ ïîëüçîâàòåëåé NeTAMS ïîñðåäñòâîì ðàäèóñ-ñåðâåðà
(ò.å. ôóíêöèîíàëüíîñòü ðàäèóñ-êëèåíòà; ïî âñåé âèäèìîñòè ýòîãî è íå òðåáóåòñÿ).
Êàê ðàáîòàåò
Íîâûå ôóíêöèè ñîñðåäîòî÷åíû â:
- ïîääåðæêå àâòîðèçàöèè ÷åðåç telnet-èíòåðôåéñ è/èëè êîìàíäíóþ ñòðîêó
- ìîäóëå rlm_netams, ðàñøèðÿþùåãî ñåðâåð FreeRADIUS
- ïîääåðæêå àâòîðèçàöèè äîñòóïà ê HTML-ñòðàíèöàì ÷åðåç mod_auth_radius+íîâàÿ êîìàíäà ñåðâèñà html (îïöèîíàëüíî)
 êà÷åñòâå ñåðâåðà äîñòóïà, èñïîëüçóåìîãî â êà÷åñòâå êëèåíòà íîâîãî ìåõàíèçìà àâòîðèçàöèè,
ïðîâåðÿëèñü pppoe+ppp (FreeBSD 5.3) è Windows 2003 RRAS. Òàêèì îáðàçîì,
NeTAMS ìîæåò óñïåøíî
àâòîðèçîâûâàòü è êîíòðîëèðîâàòü òðàôèê dialup- è pppoe- è ïðî÷èõ êîììóòèðóåìûõ ñîåäèíåíèé, áåç íåîáõîäèìîñòè
äóáëèðîâàòü ëîãèíû/ïàðîëè/íàñòðîéêè â òåêñòîâûõ êîíôèãàõ è áàçàõ äàííûõ.
Ïîðÿäîê ðàáîòû ñ ñåðâåðîì äîñòóïà:
- Ïðè ïîñòóïëåíèè çàïðîñà íà ñîåäèíåíèå ñåðâåð äîñòóïà îñóùåñòâëÿåò ïðîâåðêó ïðàâ çâîíÿùåãî (ëîãèí/ïàðîëü)
ó ðàäèóñ-ñåðâåðà.
- Ðàäèóñ-ñåðâåð âûçûâàåò êîä ìîäóëÿ rlm_netams, êîòîðûé èçâëåêàåò òðåáóåìûå àòðèáóòû èç çàïðîñà
àóòåíòèôèêàöèè, ôîðìèðóåò ñîîáùåíèå, è ïåðåäàåò åãî ðàáîòàþùåìó äåìîíó NeTAMS ïîñðåäñòâîì Telnet API.
- Íà îñíîâàíèè ïîëó÷åííîãî çàïðîñà äåìîí NeTAMS ðàçðåøàåò èëè çàïðåùàåò äîñòóï. Åñëè äîñòóï ðàçðåøåí,
â ñòîðîíó rlm_netams (ò.å. ðàäèóñ-ñåðâåðà) ïåðåäàþòñÿ ðÿä àòðèáóòîâ, â ÷àñòíîñòè IP-àäðåñ êëèåíòà è íàáîð ôèëüòðîâ. Åñëè ñåðâåð ïåðåäàë ïàðàìåòð "Caller-ID" (äëÿ PPPoE ýòî ÌÀÑ-àäðåñ çâîíÿùåãî), è äëÿ þíèòà óñòàíîâëåí ïàðàìåòð "mac ...", áóäåò ïðîâîäèòüñÿ äîïîëíèòåëüíûé êîíòðîëü è ïî ýòîìó ïðèçíàêó.
- rlm_netams êîïèðóåò îòâåò äåìîíà, ôîðìèðóÿ RADIUS-îòâåò äëÿ ñåðâåðà äîñòóïà.
- ñåðâåð äîñòóïà îòâåðãàåò èëè ïðèíèìàåò êëèåíòà, óñòàíàâëèâàÿ íåîáõîäèìûå ïàðàìåòðû ñîåäèíåíèÿ.
Ïîðÿäîê ðàáîòû ïðè àâòîðèçàöèè âåá-äîñòóïà:
- Ñåðâèñ HTML ãåíåðèðóåò ñòàòè÷åñêèå HTML-ñòðàíèöû ñ äàííûìè î òðàôèêå, àäìèíñêóþ ÷àñòü è ïîëüçîâàòåëüñêóþ ÷àñòü.
Ïðè ýòîì ñîçäàþòñÿ òàêæå ôàéëû .htaccess ñî ñïèñêîì "ïðàâèëüíûõ" ïîëüçîâàòåëåé äàííîãî URI, ôàéë ïàðîëåé .htpasswd
íå ïîääåðæèâàåòñÿ - çàìåñòî íåãî â ãëîáàëüíîì êîíôèãóðàöèîííîì ôàéëå apache ïðèñóòñòâóþò çàïèñè î RADIUS-àâòîðèçàöèè.
- HTTP-êëèåíò (áðîâçåð) ïûòàåòñÿ îáðàòèòüñÿ ê çàùèùåííîìó ïðè ïîìîùè .htaccess ðåñóðñó. Ïðîèñõîäèò çàïðîñ ïàðîëÿ (÷åðåç êîä 401)
- Apache âûçûâàåò ìîäóëü mod_auth_radius, ñîîáùàÿ òîìó ëîãèí-ïàðîëü êëèåíòà. Çàïðîñ íà àâòîðèçàöèþ ïåðåäàåòñÿ ðàäèóñ-ñåðâåðó.
- Ðàäèóñ-ñåðâåð âûçûâàåò êîä ìîäóëÿ rlm_netams, êîòîðûé èçâëåêàåò ëîãèí-ïàðîëü èç çàïðîñà
àóòåíòèôèêàöèè, ôîðìèðóåò ñîîáùåíèå, è ïåðåäàåò åãî ðàáîòàþùåìó äåìîíó NeTAMS ïîñðåäñòâîì Telnet API.
- Íà îñíîâàíèè ïîëó÷åííîãî çàïðîñà äåìîí NeTAMS ïðîâåðÿåò ñâîþ áàçó ïîëüçîâàòåëåé è þíèòîâ,
ðàçðåøàåò èëè çàïðåùàåò äîñòóï. Îòâåò ïåðåñûëàåòñÿ â RADIUS-ñåðâåð.
- rlm_netams êîïèðóåò îòâåò äåìîíà, ôîðìèðóÿ RADIUS-îòâåò äëÿ Apache.
- Apache ïóñêàåò ïîëüçîâàòåëÿ (áðîâçåð) íà ñòðàíèöó, èëè íå ïóñêàåò åãî.
Ïîðÿäîê ðàáîòû ïðè ïîëó÷åíèè accounting ïàêåòîâ (Start, Stop, Alive) ðàäèóñ-ñåðâåðîì:
- ðàäèóñ-ñåðâåð âûçûâàåò êîä ìîäóëÿ rlm_netams, êîòîðûé èçâëåêàåò òðåáóåìûå àòðèáóòû èç ïàêåòà,
ôîðìèðóåò ñîîáùåíèå, è ïåðåäàåò åãî ðàáîòàþùåìó äåìîíó NeTAMS ïîñðåäñòâîì Telnet API.
- Åñëè â ïàêåòå Start ïðèñóòñòâóåò In Out, îíè çàïèñûâàþòñÿ as-is, åñëè äëÿ þíèòà òèïà user â ïàêåòå ïðèñóòñòâóåò Framed-IP-Address, ýòîò IP-àäðåñ áóäåò óñòàíîâëåí äàííîìó þíèòó.
- Åñëè â ïàêåòå Stop ïðèñóòñòâóåò In Out, îíè çàïèñûâàþòñÿ incremental, äëÿ þíèòà òèïà user IP-àäðåñ îáíóëÿåòñÿ.
- Ïðè ïîñòóïëåíèè ïàêåòà Alive, äàííûå In Out çàïèñûâàþòñÿ incremental.
- Åñëè â ëþáîì èç òðåõ ïàêåòîâ ïðèñóòñòâóåò Filter-ID=Policy äàííûå áóäóò çàïèñàíû â ýòó ïîëèòèêó.
Êàê íàñòðîèòü
Íàñòðîéêà PPPoE/PPP
Î÷åíü ðåêîìåíäóåì ïî÷èòàòü
òåîðèþ è ïðèìåðû è íàñòðîèòü äîñòóï áåçî âñÿêîãî netams+radius, äëÿ íà÷àëà.
Äîïóñòèì ÷òî NeTAMS, FreeRADIUS, PPP, PPPoE êðóòÿòñÿ íà îäíîé ìàøèíå 192.168.0.1, âíåøíèé èíòåðôåéñ fxp0.
### /etc/ppp/ppp.conf #####################################
default:
enable dns # request DNS info (for resolv.conf)
pppoe:
set log Phase Chat LCP IPCP CCP tun command
set radius /etc/ppp/radius.conf
set speed sync
set timeout 240
set ctsrts off
set accmap 000a0000
enable lqr
set cd 5
enable pap chap
set ifaddr HISADDR 192.168.0.253 # .253 is the server's end
#############################################################
### /etc/ppp/radius.conf ####################################
auth 192.168.0.1 secretkey 5 3
#############################################################
Çàïóñê ñåðâåðà PPPoE:
/usr/libexec/pppoed -p \* -l pppoe fxp0
Íàñòðîéêà FreeRADIUS
Äëÿ íà÷àëà íàäî ñîáðàòü FreeRADIUS èç ïîðòîâ èëè èñõîäíèêîâ. Ïàêåò íå ïîäîéäåò, ò.ê. òàì îòñóòñòâóþò íåîáõîäèìûå çàãîëîâî÷íûå ôàéëû äëÿ ñáîðêè íàøåãî ñîáñòâåííîãî ìîäóëÿ.
cd /usr/ports/net/freeradius/
make && make install
Ïåðåõîäèì â äèñòðèáóòèâ NeTAMS è êîïèðóåì íàø ìîäóëü
rlm_netams êóäà ñëåäóåò; ïîòîì ñîáèðàåì:
cd ~/netams/addon/
cp -rp rlm_netams /usr/ports/net/freeradius/work/freeradius-1.0.1/src/modules/
cd /usr/ports/net/freeradius/work/freeradius-1.0.1/src/modules/rlm_netams
gmake
gmake install
Ïðàâèì êîíôèãóðàöèþ FreeRADIUS, ÷òîáû èñïîëüçîâàòü ëîêàëüíûé ñåðâåð äîñòóïà ñ ïðàâèëüíûìè ïàðîëÿìè:
### /usr/local/etc/raddb/clients.conf #######################
client 192.168.0.1 {
secret = secretkey
shortname = pppoe_server
}
#############################################################
È ÷òîáû èñïîëüçîâàòü íàø rlm_netams:
### /usr/local/etc/raddb/radius.conf #######################
...
modules {
...
netams {
server = "192.168.0.1" # netams server IP
port = 20001 # netams server port
login = "freeradius" # netams access username
password = "ABCDEF" # netams access password
swap-inout = "yes" # swap IN and OUT counters for accounting
defaultpolicy = "RadAcc"# policy for rawdata
billing-login = "no" # check username from unit or billing
}
}
authorize {
...
netams
}
authenticate {
...
netams
}
accounting {
...
netams
}
#############################################################
Íàñòðîéêà NeTAMS
Î÷åíü æåëàòåëüíî äîáàâèòü ñïåöèàëüíîãî ïîëüçîâàòåëÿ, îò èìåíè êîòîðîãî áóäåò èäòè ïîäêëþ÷åíèå ê NeTAMS:
### /usr/local/etc/netams.cfg ###############################
user oid 0832ED name freeradius password ABCDEF permit radius
#############################################################
Åñëè âû õîòèòå èñïîëüçîâàòü àâòîðèçàöèþ äîñòóïà ê âåá-ñòðàíèöàì ñî ñòàòèñòèêîé ÷åðåç mod_auth_radius, èçìåíèòå:
### /usr/local/etc/netams.cfg ###############################
service html
...
htaccess radius
...
#############################################################
Íàñòðîéêà Apache (îïöèîíàëüíî)
Áåðåì
mod_auth_radius îòñþäà:
http://www.freeradius.org/mod_auth_radius/
Êîìïèëèðóåì, ñòàâèì:
apxs -i -a -c mod_auth_radius.c
Íàñòðàèâàåì àïà÷:
...
<IfModule mod_auth_radius.c>
AddRadiusAuth 192.168.0.1:1812 secretkey 5:3
AddRadiusCookieValid 5
</IfModule>
...
<Location /stat>
AllowOverride All
</Location>
...
Çàïóñêàåì âñå õîçÿéñòâî. Äîïóñòèì, â êîíôèãóðàöèîííîì ôàéëå ó íàñ ïðèñóòñòâóåò þíèò ñ èìåíåì
client1 è ïàðîëåì
abc, ó íåãî óñòàíîâëåí àäðåñ
192.168.0.111, è åñòü ïîëèòèêà
ôèëüòðàöèè ñ èìåíåì filter1 è OID ABCFEF.
Ìîæíî ïðîâåðèòü ðàáîòîñïîñîáíîñòü NeTAMS ÷åðåç óòèëèòó
netamsctl:
~#netamsctl radius auth nas login client1 password abc nas-id TEST
1 2
Framed-IP-Address: 192.168.0.111
Filter-ID: ABCFEF filter1
Çäåñü â ïåðâîé ñòðîêå âûâîäà ÷èñëî "1" îçíà÷àåò "óñïåøíî", äàëåå "2" ãîâîðèò îò òîì, ÷òî ïîñëåäóþò äâå ñòðîêè ïàðàìåòðîâ.
Ïåðâàÿ ñòðîêà ïåðåäàåò IP-àäðåñ ýòîãî þíèòà, Âòîðàÿ - OID è èìÿ ôèëüòðà (ìîæåò áûòü çàòåì èñïîëüçîâàíî
âàøèì ñêðèïòîì if-up).  ñëó÷àå íåïðàâèëüíîãî ïàðîëÿ:
~#netamsctl radius auth nas login client1 password abcef nas-id TEST
0 password incorrect for client1
 îáîèõ ñëó÷àÿõ èíôîðìàöèÿ î ñîáûòèè ïîïàäåò â ëîã-ôàéë è òàáëèöó EVENTS áàçû SQL.
Óçíàòü, êàê ïðîèñõîäèò ðàáîòà RADIUS-ñåðâåðà, ÷òî êîìó êóäà ïåðåäàåòñÿ, ìîæíî çàïóñòèâ ýòîò ñåðâåð ñ êëþ÷îì -X:
/usr/local/sbin/radiusd -X
TODO
- Ñäåëàòü îáðàáîòêó àêêàóíòèíãà, ïîñòóïàþùåãî îò NAS-ñåðâåðà. Âèäèìî, äëÿ ýòîãî ïðèäåòñÿ ñäåëàòü íîâûé òèï data-source.
- Ïðîòåñòèðîâàòü ðàáîòó ñåðâåðà äîñòóïà Cisco (íèêòî íå õî÷åò äàòü òåñòîâûé äîñòóï?)
- Ñäåëàòü áîëåå æåñòêèì îãðàíè÷åíèå íà òèï ïåðåäàâàåìîãî ôèëüòðà: ñäåëàòü íîâûé target radius-filter XXX. Ñäåëàòü ïðèìåð ñêðèïòà, êîòîðûé ýòîò XXX îáðàáàòûâàåò.
- Ñäåëàòü àíàëîã rlm_netams äëÿ äðóãîãî RADIUS-ñåðâåðà? FreeRADIUS ñ÷èòàåòñÿ íàèáîëåå ðàñïðîñòðàíåííûì.