====== RadSec - radsecproxy ======
RADIUS k přenosu paketů používá UDP protokol který šifruje pouze atributy User-Password a Message-Authenticator, zbytek nechává nešifrovaný, proto se používá [[cs:spravce:pripojovani:ipsec:uvod|IPsec]], nasazení není úplně jednoduché a proto vznil protokol RadSec. Protokol je specifikován v [[http://tools.ietf.org/html/rfc6613|RFC 6613]], specifikace se vznikla rozvinutím [[http://www.open.com.au/radiator/radsec-whitepaper.pdf|Specifikace RadSec od OSC]]. RadSec je dnes součástí [[cs:spravce:pripojovani:radius:radiator|Radiatoru]] i [[cs:spravce:pripojovani:radius:freeradius3|FreeRADIUSu verze 3]].
Pokud používáte jinou implementaci RADIUS serveru než je FreeRADIUS v3 anebo Radiator může být zajímavou variantou zabezpečení RADIUS protokolu //[[http://software.uninett.no/radsecproxy/|radsecproxy]]//. Lze ji s úspěchem použít jako server vložený mezi RADIUS organizace a zbytek //eduroam// infrastruktury. //radsecproxy// lze přeložit pro Linux, BSD, OpenWRT a pomocí CygWin i na Windows. //radsecproxy// je také možné nasadit na linuxový server umístěný před MS Windows Server, to je nutné pokud je MS Windows Server provozován na privátních adresách.
{{ :cs:spravce:pripojovani:radsec:zapojeni_s_radsecproxy.png |}}
Zapojení do //eduroam// infrastruktury pomocí //radsecproxy// je naznačeno fialovým serverem na obrázku nahoře, srovnejte s klasickým [[https://www.eduroam.cz/_detail/cs/spravce/pripojovani/typicke-zapojeni-org-do-eduroamu.png?id=cs%3Aspravce%3Apripojovani%3Auvod|schématem zapojení]].
===== Konfigurace radsecproxy =====
//radsecproxy// je bežnou součástí Linuxových distribucí, pokud používáte nějakou speciální budete si ji možná muset přeložit ze zdrojových kódu. Pro účely tohoto návodu se používá realm **realm.cz**. RADIUS server organizace je pojmenován **radius.realm.cz** a server na kterém běží //radsecproxy// se jmenuje **radsec.realm.cz**. Pochopitelně lze provozovat RADIUS a radsecproxy na tom samém serveru, pak je třeba aby ale //radsecproxy// používala jiné UDP porty než samotný RADIUS server.
RADIUS server instituce je nutné upravit tak, aby dotazy na cizí realmy posílal na //radsecproxy// poslouchající na ''radsec.realm.cz:UDP/1812'', radsecproxy se postará o přeposílání RADIUS pakety ''radius1.eduroam.cz:TCP/2083''. Odpovědi přicházejí na ''radsec.realm.cz:TCP/2083'', kde je //radsecproxy// opět převede na RADIUS pakety a předá je RADIUS serveru na ''radius.realm.cz:UDP/1812''.
Nejprve je třeba nastavit parametry TLS. Národní RADIUS používá certifikát vydaný [[https://pki.cesnet.cz/cs/ch-cca-crt-crl.html|CESNET CA4]], stáhněte soubor [[https://pki.cesnet.cz/certs/chain_CESNET_CA4.pem|chain_CESNET_CA4.pem]] a umístěte jej do adresáře ''/etc/ssl/certs''.
Je důležité aby ''CertificateFile'' obsahoval certifikát který bude mít v CN hodnotu **radius.realm.cz**, doufám že to nikdo nevezme doslova... ;)
Následně vytvořte konfigurační soubor ''/etc/radsecproxy.conf'' s obsahem:
tls default {
CACertificateFile /etc/ssl/certs/chain_CESNET_CA4.pem
CertificateFile /etc/ssl/certs/**certifikat**.crt
CertificateKeyFile /etc/ssl/private/**certifikat**.key
#CertificateKeyPassword **password**
}
Následuje definice domácího RADIUS serveru instituce, na tento RADIUS budou přeposílány dotazy které //radsecproxy// přijme po RadSec z //eduroam//u, tj. dotazy na ověření vlastních uživatelů instituce. Jako sdílené tajemství mezi RADIUSem a //radsecproxy// se v příkladu používá ''radsec2radius'', v realném nasazení použijte nějaký náhodný řetězec délky alespoň 15znaků. Volbu ''statuserver'' povolte pokuď váš RADIUS server podporuje Status-Server (MS NPS ani Cisco ISE nepodporují).
server **radius.realm.cz** {
port 1812
type udp
secret **radsec2radius**
#statusserver on
}
Definice UDP portu, na kterém bude //radsecproxy// poslouchat, a také definice klienta, od kterého bude akceptovat data.
ListenUDP **radsec.realm.cz**:1812
client **radius.realm.cz** {
type udp
secret **radsec2radius**
}
Definice rewrite pravidla pro vkládání Operator-Name.
rewrite Operator-Name {
AddAttribute 126:1**realm.cz**
}
Definice národního RADIUS serveru v rolích klient a server pro RadSec. Sdílená tajemství musí zůstat ''radsec''.
client radius1.eduroam.cz {
type tls
secret radsec
}
server radius1.eduroam.cz {
type tls
secret radsec
statusserver on
rewriteOut Operator-Name
}
Definice lokálního realmu, který bude předáván domácímu RADIUS serveru instituce.
realm **realm.cz** {
server **radius.realm.cz**
}
Zamítnutí relativně často se vyskytujících chyb
realm /myabc\.com$/ {
replymessage "Misconfigured client: Default realm of Intel PRO/Wireless supplicant!"
}
realm /3gppnetwork\.org$/ {
replymessage "Misconfigured client: Unsupported 3G EAP-SIM client!"
}
realm /\s+$/ {
replymessage "Misconfigured client: Whitespace at the end!"
}
Ostatní požadavky budou zkontrolovány a buď předávány na národní RADIUS server, nebo zamítnuty.
realm /^.+@.+\..+$/ {
server radius1.eduroam.cz
}
realm * {
replymessage "Misconfigured client: Invalid username or realm!"
}
===== Ladění =====
Pro ladění je vhodné spustit //radsecproxy// s přepínačem ''-f'', aby zůstala v popředí a bylo snadné sledovat výstup. Ten by měl vypada zhruba takto:
radsec:~# radsecproxy -f -d 3
radsecproxy revision $Rev: 217 $ starting
listening for incoming TCP on *:2083
udpserverrd: listening for UDP on *:1812
tlsconnect: trying to open TLS connection to radius1.eduroam.cz port 2083
tlsconnect: TLS connection to radius1.eduroam.cz port 2083 up
incoming TLS connection from 195.113.187.22
replyh: got status server response from radius1.eduroam.cz
Ve výpisu je vidět, že //radsecproxy// navázala spojení na národní RADIUS server a také že přijala spojení z národního RADIUS serveru. Dále je možné ověřit navázaná spojení:
radsec:~# netstat -n |grep 2083
tcp 0 0 195.113.233.105:43611 195.113.187.22:2083 ESTABLISHED
tcp 0 0 195.113.233.105:2083 195.113.187.22:38105 ESTABLISHED
tcp 0 0 195.113.233.105:2083 195.113.187.22:38119 ESTABLISHED
tcp 0 0 195.113.233.105:2083 195.113.187.22:38124 ESTABLISHED