====== radsecproxy ====== 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 //[[https://radsecproxy.github.io/|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 Microsoft Windows Server, to je možné například pokud se vám nedaří odladit IPsec spojení s vaším Microsoft Windows Serverem. {{ :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í]]. Pokud se připojujete pouze v SP režimu, stačí vám pouze radsecproxy k přesměrovávání návštěvníků a není třeba další implementace RADIUSu. ===== Konfigurace radsecproxy ===== {{page>[:cs:spravce: pripojovani: frag_certifikat]}} //radsecproxy// je součástí běžných Linuxových distribucí. Pokud používáte nějakou speciální distribuci, budete si //radsecproxy// 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 ale třeba, aby //radsecproxy// používal 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 paketů přes RadSec na ''flr[1-3].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áty vydané [[https://www.edupki.org/edupki-ca|eduPKI CA]]. Stáhněte soubor [[https://www.edupki.org/fileadmin/Documents/edupki-root-ca-cert.pem|edupki-root-ca-cert.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 **radsec.realm.cz**, doufám že to nikdo nevezme doslova... ;) Následně vytvořte konfigurační soubor ''/etc/radsecproxy.conf''. Dále si popíšeme, co by měl obsahovat. Pokud půjde o samostatný stroj, můžete tuto část zcela vynechat. Definice naslouchajících portů: ListenUDP **radsec.realm.cz**:1812 Všechny servery i klienti jsou v tomto návodu definováni DNS jménem. Při spuštění //radsecproxy// proběhne překlad těchto jmen na IP adresy. Abychom zajistili použití správných adres, vynutíme verzi IP protokolu, kterou chceme používat (lze nastavovat i přímo u každého serveru/klienta zvlášť): IPv4Only on #IPv6Only on Výchozí nastavení TLS pro RadSec, které se použije pro klienty i servery: tls default { CACertificateFile /etc/ssl/certs/edupki-root-ca-cert.pem CertificateFile /etc/ssl/certs/**certifikat**.crt CertificateKeyFile /etc/ssl/private/**certifikat**.key #CertificateKeyPassword **password** } Tuto sekci budeme využívat pro odchozí požadavky na servery národního RADIUSu. Pokud odchozí požadavky nebudou obsahovat atribut **Operator-Name**, bude při odesílání doplněn. Apostrof před hodnotou pro radsecproxy znamená, že se má k hodnotě chovat jako k textovému řetězci. Ve starších verzích radsecproxy nebylo toto třeba, ba naopak, byla pak odesílána nesmyslná informace. Číslovka **1** před realmem je povinnou součástí hodnoty atributu. Příklad: ''SupplementAttribute 126:'1cesnet.cz'' rewrite Operator-Name { SupplementAttribute 126:'1**realm.cz** } 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** { Type UDP Secret **radsec2radius** #StatusServer on } Definice domácího serveru v roli klienta, od kterého budeme akceptovat požadavky a přeposílat je na národní RADIUS: client **radius.realm.cz** { Type UDP Secret **radsec2radius** } Definice národního RADIUS serveru v rolích klient a server pro RadSec. client flr1.eduroam.cz { Type TLS } client flr2.eduroam.cz { Type TLS } client flr3.eduroam.cz { Type TLS } server flr1.eduroam.cz { Type TLS StatusServer on RewriteOut Operator-Name } server flr2.eduroam.cz { Type TLS StatusServer on RewriteOut Operator-Name } server flr3.eduroam.cz { Type TLS 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!" } Požadavky se správně vyhlížejícími jmény uživatelů/realmu budou předávány na národní RADIUS server: realm /^.+@.+\..+$/ { server flr3.eduroam.cz server flr2.eduroam.cz server flr1.eduroam.cz } A vše ostatní zamítneme: 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 createlistener: listening for udp on *:1812 createlistener: listening for tls on *:2083 connecttcphostlist: trying to open TCP connection to flr3.eduroam.cz port 2083 connecttcphostlist: trying to open TCP connection to flr2.eduroam.cz port 2083 connecttcphostlist: trying to open TCP connection to flr1.eduroam.cz port 2083 connecttcphostlist: TCP connection to flr2.eduroam.cz port 2083 up connecttcphostlist: TCP connection to flr1.eduroam.cz port 2083 up connecttcphostlist: TCP connection to flr3.eduroam.cz port 2083 up tlsconnect: TLS connection to flr3.eduroam.cz up tlsconnect: TLS connection to flr2.eduroam.cz up tlsconnect: TLS connection to flr1.eduroam.cz up tlsservernew: incoming TLS connection from 78.128.248.10 tlsservernew: incoming TLS connection from 78.128.248.12 tlsservernew: incoming TLS connection from 78.128.248.10 tlsservernew: incoming TLS connection from 78.128.248.11 tlsservernew: incoming TLS connection from 78.128.248.11 tlsservernew: incoming TLS connection from 78.128.248.12 tlsservernew: incoming TLS connection from 78.128.248.10 tlsservernew: incoming TLS connection from 78.128.248.12 tlsservernew: incoming TLS connection from 78.128.248.11 Ve výpisu je vidět, že //radsecproxy// navázala spojení na národní RADIUS servery a také že přijala spojení z národních RADIUS serverů. Dále je možné ověřit navázaná spojení: radsec:~# netstat -n | grep 2083 # alternativa: ss -n | grep 2083 tcp 0 0 78.128.211.223:2083 78.128.248.10:54549 ESTABLISHED tcp 0 0 78.128.211.223:2083 78.128.248.12:47415 ESTABLISHED tcp 0 0 78.128.211.223:2083 78.128.248.11:42017 ESTABLISHED tcp 0 0 78.128.211.223:44735 78.128.248.10:2083 ESTABLISHED tcp 0 0 78.128.211.223:2083 78.128.248.11:52112 ESTABLISHED tcp 0 0 78.128.211.223:2083 78.128.248.10:40013 ESTABLISHED tcp 0 0 78.128.211.223:43235 78.128.248.11:2083 ESTABLISHED tcp 0 0 78.128.211.223:43951 78.128.248.12:2083 ESTABLISHED tcp 0 0 78.128.211.223:2083 78.128.248.10:49691 ESTABLISHED tcp 0 0 78.128.211.223:2083 78.128.248.12:39361 ESTABLISHED tcp 0 0 78.128.211.223:2083 78.128.248.11:47954 ESTABLISHED tcp 0 0 78.128.211.223:2083 78.128.248.12:55991 ESTABLISHED