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