====== 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