cs:spravce:pripojovani:radsec:uvod

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á IPsec, nasazení není úplně jednoduché a proto vznil protokol RadSec. Protokol je specifikován v RFC 6613, specifikace se vznikla rozvinutím Specifikace RadSec od OSC. RadSec je dnes součástí Radiatoru i 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 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.

Zapojení do eduroam infrastruktury pomocí radsecproxy je naznačeno fialovým serverem na obrázku nahoře, srovnejte s klasickým 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ý CESNET CA3, stáhněte soubor chain_CESNET_CA3 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 s obsahem:

tls default {
    CACertificateFile      /etc/ssl/certs/chain_CESNET_CA3.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 eduroamu, 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 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
}

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(|s)$/ {
        replymessage "Misconfigured client: default realm of GSM something!"
}

# zamitnuti realmu koncicich mezerou
realm /.*\s+$/ {
        replymessage "Misconfigured client: Whitespace at the end of realm!".
}

# Zamitnuti pozadavku bez realmu.
realm /^$/ {
        replymessage "Misconfigured client: empty realm!" 
}

Všechny ostatní realmy budou předávány na národní RADIUS server.

realm * {
        server  radius1.eduroam.cz
}

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
Last modified:: 2018/11/01 10:07