Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Obě strany předchozí revize Předchozí verze Následující verze | Předchozí verze | ||
cs:spravce:pripojovani:radius:radiator [2018/09/20 15:15] – [Ověření identity uživatele a jeho oprávnění používat eduroam] semik@cesnet.cz | cs:spravce:pripojovani:radius:radiator [2024/08/26 07:57] (aktuální) – [SP role] Jan Čáslavský | ||
---|---|---|---|
Řádek 11: | Řádek 11: | ||
platforem. | platforem. | ||
- | =====Úvod ===== | + | ===== Návrh nastavení radiatoru pro novou generaci eduroam |
- | Konfigurace, | + | ==== IdP role ==== |
- | serveru, který slouží k ověřování uživatelů. Narozdíl od [[cs: | + | |
- | Kompletní konfigurace je uvedena v přílohách. V textu jsou uvedeny | + | < |
- | jen části nutné pro objasnění funkce. | + | ... |
- | + | ||
- | =====Definice klientů ===== | + | |
- | + | ||
- | V konfiguraci je třeba uvést definici klientů, se kterými bude RADIUS | + | |
- | server komunikovat: | + | |
- | + | ||
- | < | + | |
- | StartupHook sub { require "/ | + | |
- | include %D/cui.cfg | + | |
- | + | ||
- | <Client DEFAULT> | + | |
- | Secret tajemstvi | + | |
- | </ | + | |
- | + | ||
- | <Client **10.0.1.1**> #AP01 | + | |
- | Secret | + | |
- | </ | + | |
- | <Client **10.0.1.2**> | + | |
- | Secret | + | |
- | </ | + | |
- | <Client **10.0.1.3**> | + | |
- | Secret | + | |
- | </ | + | |
- | # . | + | |
- | # . | + | |
- | # . | + | |
- | + | ||
- | <Client radius1.eduroam.cz> | + | |
- | Secret | + | |
- | // | + | |
- | </ | + | |
- | + | ||
- | <Client ermon.cesnet.cz> | + | |
- | Secret **tajemstvi132** | + | |
- | // | + | |
- | </ | + | |
- | + | ||
- | <Client **accounting.cesnet.cz**> | + | |
- | Secret **TAJEMSTVI** | + | |
- | </ | + | |
- | </ | + | |
- | + | ||
- | Je třeba uvést nejen AP, která jsou přirozeným klientem pro server, ale | + | |
- | i národní RADIUS servery, které vystupují v roli klienta, když některý z | + | |
- | Vašich uživatelů využije roamingu. | + | |
- | + | ||
- | Klienty lze vyjmenovat jejich DNS jménem, IP adresou, rozsahem IP | + | |
- | adres, případně lze také použít řetězec " | + | |
- | bude použita pro všechny klienty, pro něž nebude k dispozici jiná | + | |
- | přesnější. | + | |
- | + | ||
- | Aby bez problémů fungoval monitoring je třeba pro radius1.eduroam.cz a ermon.cesnet.cz nastavit '' | + | |
- | + | ||
- | =====Definice RadSec serveru===== | + | |
- | + | ||
- | RadSec otevírá dvě TCP spojení. Jedno je realizováno z národního RADIUS serveru na RADIUS server instituce a druhé ze serveru instituce na národní server. Komunikace probíhá na port TCP/2083. Zde se definuje port na kterém bude očekáváno spojení z národního RADIUS serveru. | + | |
- | + | ||
- | < | + | |
< | < | ||
- | | + | |
- | | + | |
- | | + | |
- | | + | TLS_CertificateFile |
- | | + | |
- | | + | |
- | + | | |
- | | + | |
+ | | ||
- | TLS_CRLCheck | + | Clients |
- | TLS_CRLFile / | + | |
- | TLS_ExpectedPeerName radius1.eduroam.cz | + | |
+ | # | ||
+ | # | ||
+ | # | ||
</ | </ | ||
- | </ | + | ... |
- | + | <Handler | |
- | =====Roztřídění požadavků podle typu a realmu ===== | + | ... |
- | + | ||
- | Radiator má možnost zpracovávat požadavky podle realmu díky | + | |
- | konstrukci: | + | |
- | + | ||
- | < | + | |
- | <Realm cesnet.cz> | + | |
- | . | + | |
- | . | + | |
- | . | + | |
- | </Realm> | + | |
- | </ | + | |
- | + | ||
- | Anebo podle jakékoliv hodnoty z požadavku konstrukcí: | + | |
- | + | ||
- | < | + | |
- | <Handler attribute=value, | + | |
- | . | + | |
- | . | + | |
- | . | + | |
</ | </ | ||
+ | ... | ||
</ | </ | ||
- | Druhá alternativa je podstatně flexibilnější, | ||
- | zde prezentované konfiguraci. | ||
- | ==== Požadavky bez realmu | + | ==== SP role ==== |
- | Požadavky o autentizaci bez realmu je vhodné zamítat s Access-Reject aby si domací uživatelé zvykali i v domácí síti používat realm a něměli tak zbytečně potíže když budou chtít //eduroam// použít jinde. | + | <code ini> |
+ | ... | ||
+ | <Client 78.128.248.234> | ||
+ | Identifier | ||
- | <code> | + | DupInterval |
- | <Handler Realm=/^$/> | + | Secret |
- | < | + | </Client> |
- | DefaultResult REJECT | + | ... |
- | </ | + | < |
- | </ | + | |
- | </ | + | |
+ | |||
+ | | ||
+ | MaxFailedGraceTime | ||
+ | NoreplyTimeout | ||
+ | KeepaliveTimeout | ||
+ | KeepaliveNoreplyTimeout | ||
+ | UseStatusServerForFailureDetect | ||
- | ==== Požadavky domácích uživatelů ==== | + | TLS_Protocols |
+ | TLS_CertificateType | ||
+ | TLS_CertificateFile | ||
+ | TLS_PrivateKeyFile | ||
+ | TLS_CAFile | ||
+ | # | ||
+ | # | ||
+ | TLS_ExpectedPeerName | ||
- | Accounting týkající se našich domácích uživatelů může přijít nejen z našich AP, ale | + | Host 78.128.248.10 |
- | teoreticky také z národního RADIUSu. V současnosti ale platí, že hostitelské organizace | + | |
- | by neměli accounting posílat s ohledem na soukromí uživatelů. | + | |
- | + | # | |
- | Veškerý acounting ukládáme do lokálního souboru na každém jednom lokálním RADIUS | + | # |
- | serveru, ale také ho přeposíláme na stroj se jménem '' | + | # |
- | ke spojování dat z druhého RADIUS servereru a DHCP serveru, abychom v případě problémů | + | </AuthBy> |
- | byli schopni uživatele identifikovat na základě IP adresy která mu byla přidělena. | + | ... |
- | + | <Handler> | |
- | <code> | + | ... |
- | < | + | |
- | Realm=/ | + | ... |
- | + | | |
- | AcctLogFileName / | + | |
- | + | ... | |
- | <AuthBy RADIUS> | + | |
- | <Host **accounting.cesnet.cz**> | + | |
- | AuthPort | + | |
- | | + | |
- | | + | |
- | </ | + | |
- | </ | + | |
- | + | ||
- | PreProcessingHook sub { CUI:: | + | |
- | # | + | |
</ | </ | ||
+ | ... | ||
</ | </ | ||
- | |||
- | Ověření identity a hesla uživatelů s realmem **cesnet.cz**, | ||
- | **radius1.cesnet.cz** se děje v sekci '' | ||
- | '' | ||
- | zpracovávány **bez ohledu na velikost písmen**, jinak to vede zmatení | ||
- | uživatelů. | ||
- | |||
- | < | ||
- | <Handler Realm=/ | ||
- | AuthBy CheckLDAP | ||
- | AuthLog authlogger | ||
- | PostProcessingHook | ||
- | </ | ||
- | </ | ||
- | |||
- | Následující dva handlery jsou pro požadavky tunelované skrz TTLS | ||
- | respektive PEAP, tato konstrukce je vynucena vnitřní architekturou | ||
- | Radiatoru. Volání skriptu [[cs: | ||
- | slouží k tomu, aby se v '' | ||
- | neobjevovala vnější anonymní identita. | ||
- | |||
- | < | ||
- | <Handler TunnelledByTTLS=1> | ||
- | AuthBy CheckLDAP | ||
- | AuthLog authlogger | ||
- | |||
- | PostProcessingHook file:"/ | ||
- | PostAuthHook | ||
- | </ | ||
- | |||
- | <Handler TunnelledByPEAP=1> | ||
- | AuthBy CheckLDAP | ||
- | AuthLog authlogger | ||
- | |||
- | PostProcessingHook file:"/ | ||
- | PostAuthHook | ||
- | </ | ||
- | |||
- | </ | ||
- | |||
- | ==== Požadavky návštěvníků ==== | ||
- | |||
- | |||
- | Accouting týkající se našich návštěvníků může přijít jen z našich | ||
- | AP. Opět ho ukládáme lokálně, jen do jiného souboru: | ||
- | |||
- | < | ||
- | <Handler Request-Type=Accounting-Request> | ||
- | AcctLogFileName / | ||
- | </ | ||
- | |||
- | a také ho posíláme našemu centrálnímu accounting systému: | ||
- | < | ||
- | <AuthBy RADIUS> | ||
- | <Host **accounting.cesnet.cz**> | ||
- | | ||
- | | ||
- | | ||
- | </ | ||
- | </ | ||
- | |||
- | PreProcessingHook sub { CUI:: | ||
- | </ | ||
- | </ | ||
- | |||
- | Než k nám může od našich AP doputovat nějaký accounting o | ||
- | návštěvníkovi, | ||
- | |||
- | < | ||
- | <Handler Realm=/ | ||
- | <AuthBy RADSEC> | ||
- | Host radius1.eduroam.cz | ||
- | Secret | ||
- | |||
- | MaxFailedRequests | ||
- | MaxFailedGraceTime | ||
- | FailureBackoffTime | ||
- | |||
- | UseTLS | ||
- | |||
- | TLS_CAPath | ||
- | TLS_CertificateFile | ||
- | TLS_CertificateType | ||
- | TLS_PrivateKeyFile | ||
- | |||
- | TLS_CRLCheck | ||
- | TLS_CRLFile / | ||
- | TLS_ExpectedPeerName radius1.eduroam.cz | ||
- | </ | ||
- | |||
- | Odpověď na ověření návštěvníkovy identity ale musí být zkontrolována, | ||
- | AV páry od návštěvníkova domovského RADIUS serveru, také jestli se | ||
- | nejedná o testovací účet. Jde tedy o kontrolu a úpravu AV párů, o to se stará [[cs: | ||
- | check_reply.pl]]. | ||
- | |||
- | < | ||
- | ReplyHook file:"/ | ||
- | </ | ||
- | |||
- | AddToReplyIfNotExist | ||
- | AddToReply | ||
- | Tunnel-Medium-Type=1: | ||
- | AddToRequestIfNotExists Operator-Name=1**cesnet.cz** | ||
- | AddToRequest | ||
- | </ | ||
- | </ | ||
- | |||
- | ===== Ověření identity uživatele a jeho oprávnění používat eduroam ===== | ||
- | |||
- | Uživatelské účty jsou ukládány v LDAPu. Každý uživatel si musí před | ||
- | tím, než může //eduroam// používat, nastavit sekundární heslo určené | ||
- | jen pro tento účel. To, že tak může učinit, společně s tím, že nemá | ||
- | nastaven specielní atribut '' | ||
- | oprávnění //eduroam// používat. | ||
- | |||
- | < | ||
- | <AuthBy LDAP2> | ||
- | Identifier | ||
- | </ | ||
- | |||
- | Radiator má implementovány dva mechanizmy, pomocí kterých se vyrovnává | ||
- | s tím, že uživatelské jméno obsahuje realm. Prvním je příkaz | ||
- | '' | ||
- | určený k přepisu uživatelského jména. To bohužel působí problémy | ||
- | autentikačním mechanizmům jako je MSCHAP, které uživatelské jméno | ||
- | používají v chalenge-response mechanizmu při výpočtu otisku hesla. | ||
- | |||
- | Druhou možností je příkaz '' | ||
- | který způsobí, že se hledá uživatel jen na základě uživatelského | ||
- | jména, ale informace o realmu se neztrácí. Toto je správná funkce pro použití v // | ||
- | |||
- | < | ||
- | UsernameMatchesWithoutRealm yes | ||
- | </ | ||
- | |||
- | LDAP je provozován na tom samém počítači jako RADIUS server. Má | ||
- | dedikovaného uživatele, který má oprávnění číst sekundární uživatelská | ||
- | hesla (uložená v atributu '' | ||
- | //eduroam// zablokován atributem '' | ||
- | děje na straně LDAP serveru prostřednictvím ACL). | ||
- | |||
- | Každý uživatel dále může mít definován atribut | ||
- | '' | ||
- | specifické VLAN. Tato funkce se používá pouze pro testovací účty. | ||
- | |||
- | < | ||
- | Host | ||
- | |||
- | AuthDN | ||
- | AuthPassword | ||
- | |||
- | BaseDN | ||
- | UsernameAttr | ||
- | PasswordAttr | ||
- | AuthAttrDef | ||
- | Tunnel-Private-Group-ID, | ||
- | </ | ||
- | |||
- | Jsou podporovány různé typy EAP metod. S ohledem na chybu v software | ||
- | bezdrátových telefonů Cisco... musí být LEAP uveden jako první, protože | ||
- | jinak tyto nejsou schopny se ověřit. | ||
- | |||
- | V případě, že nechcete používate EAP-TLS tak je dobré nastavit EAPTLS_CAPath tak aby ukazoval na prázdný adreář. Uživatelům je pak znemožněno experimentovat s ověřovaním pomocí certifikátů. | ||
- | |||
- | Pokud používáte SureServer EDU, CESNET TCS anebo jinou CA která používá několik mezilehlých CA, tak místo EAPTLS_CertificateFile použijte EAPTLS_CertificateChainFile který musí obsahovat certifikát certifikátu následovaný řetězem mezilehlých CA. Viz diskuze v listu [[https:// | ||
- | |||
- | < | ||
- | EAPType | ||
- | EAPTLS_CAPath | ||
- | EAPTLS_CertificateFile | ||
- | EAPTLS_CertificateType | ||
- | EAPTLS_PrivateKeyFile | ||
- | EAPTLS_MaxFragmentSize | ||
- | EAPTLS_CRLCheck | ||
- | EAPTLS_CRLFile | ||
- | AutoMPPEKeys | ||
- | EAPTLS_PEAPVersion | ||
- | // | ||
- | SSLeayTrace | ||
- | </ | ||
- | |||
- | [[cs: | ||
- | |||
- | < | ||
- | PostSearchHook | ||
- | </ | ||
- | |||
- | V případě, že uživatel nemá nadefinován atribut | ||
- | '' | ||
- | |||
- | je do odpovědi přidán AV pár | ||
- | '' | ||
- | hodnota je '' | ||
- | Další atributy jsou k odpovědi přidány vždy. | ||
- | |||
- | < | ||
- | AddToReplyIfNotExist | ||
- | AddToReply | ||
- | Tunnel-Medium-Type=1: | ||
- | </ | ||
- | </ | ||
- | |||
- | ===== Konfigurace CUI ===== | ||
- | |||
- | Chargeable-User-Identity (CUI) je unikátní identifikátor uživatele který IdP počítá pro každé SP. Pro výpočet se používá hash funkce, jejím vstupem je atribut Operator-Name, | ||
- | |||
- | Krom volání funkce CUI::add() pomocí správných hooků, jak je uvedeno výše. Je ještě třeba připravit mysql databázi a uvést její konfiguraci v souboru [[https:// | ||
- | |||
- | Databáze je využívána k dočasnému ukládání CUI a jejich doplňování do accounting paketů. | ||
- | |||
- | ===== Přílohy ===== | ||
- | |||
- | Kompletni konfigurace z tohoto clanku pro Raditator: [[cs: | ||
- | |||
- | Konfigurace Radiatoru používaná na TUL: {{: | ||
- | |||
- | Implemnetace [[https:// | ||
- | |||
- | Skript [[cs: | ||
- | |||
- | Skript [[cs: | ||
- | |||
- | Skript [[cs: | ||
- | |||
- | Skript [[cs: | ||
- | |||
- |