Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

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.czcs: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, která zde bude popsána, je používána na CESNETím RADIUS +==== IdP role ====
-serveru, který slouží k ověřování uživatelů. Narozdíl od [[cs:spravce:pripojovani:ipsec:uvod|konfigrace IPsec na linuxu]] ji pravděpodobně budete muset upravovat o něco více, aby vyhověla Vašim potřebám.+
  
-Kompletní konfigurace je uvedena v přílohách. V textu jsou uvedeny +<code ini
-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: +
- +
-<code> +
-StartupHook sub { require "/etc/radiator/CUI.pm" ; }; +
-include %D/cui.cfg +
- +
-<Client DEFAULT> +
- Secret tajemstvi +
-</Client> +
- +
-<Client **10.0.1.1**> #AP01 +
-        Secret          **tajemstvi123** +
-</Client> +
-<Client **10.0.1.2**> #AP02 +
-        Secret          **tajemstvi213** +
-</Client> +
-<Client **10.0.1.3**> #AP03 +
-        Secret          **tajemstvi321** +
-</Client> +
-#  . +
-#  . +
-#  . +
- +
-<Client radius1.eduroam.cz> # narodni radius server +
-        Secret          **tajemstvi231** +
- //**DupInterval 0**// +
-</Client> +
- +
-<Client ermon.cesnet.cz> # monitoring +
- Secret **tajemstvi132** +
- //**DupInterval 0**// +
-</Client> +
- +
-<Client **accounting.cesnet.cz**> +
- Secret **TAJEMSTVI** +
-</Client> +
-</code> +
- +
-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 "DEFAULT". Taková definice +
-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 ''DupInterval 0'' jinak dochází k zahazování některých dotazů a následně k jejich chybnému vyhodocení. Při defaultní hodnotě 2 se v log souborech objevuje hlášení ''INFO: Duplicate request id 87 received from xxx.xxx.xxx.xxx''+
- +
-=====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. +
- +
-<code>+
 <ServerRADSEC> <ServerRADSEC>
-        Secret radsec+        Identifier                              flr.eduroam.cz
  
-        UseTLS +        TLS_Protocols                           TLSv1.2, TLSv1.3 
-        TLS_CAPath              /etc/ssl/certs +        TLS_CertificateType                     PEM 
-        TLS_CertificateFile     /etc/ssl/certs/ipsec_**certifikat**.crt.pem +        TLS_CertificateFile                     /path/to/certificate 
-        TLS_CertificateType     PEM +        TLS_PrivateKeyFile                      /path/to/key 
-        TLS_PrivateKeyFile      /etc/ssl/private/ipsec_**certifikat**.key.pem +        TLS_CAFile                              /path/to/CA/file 
-         +        #TLS_CAPath                              /path/to/CA/folder 
-        TLS_RequireClientCert+        #TLS_CRLCheck                            True 
 +        TLS_ExpectedPeerName                    flr[123]?\.eduroam\.cz
  
- TLS_CRLCheck +        Clients                                 78.128.248.10 
- TLS_CRLFile /etc/ssl/certs/9b59ecad.r0 +        Clients                                 78.128.248.11 
- TLS_ExpectedPeerName radius1.eduroam.cz+        Clients                                 78.128.248.12 
 +        #Clients                                 2001:718:ff05:aca::1:10 
 +        #Clients                                 2001:718:ff05:aca::1:11 
 +        #Clients                                 2001:718:ff05:aca::1:12
 </ServerRADSEC> </ServerRADSEC>
-</code> +... 
- +<Handler Realm=instituce.cz
-=====Roztřídění požadavků podle typu a realmu ===== +        ...
- +
-Radiator má možnost zpracovávat požadavky podle realmu díky +
-konstrukci: +
- +
-<code> +
-<Realm cesnet.cz> +
-. +
-+
-+
-</Realm+
-</code> +
- +
-Anebo podle jakékoliv hodnoty z požadavku konstrukcí: +
- +
-<code> +
-<Handler attribute=value,attribute=value, ....> +
-. +
-. +
-.+
 </Handler> </Handler>
 +...
 </code> </code>
-Druhá alternativa je podstatně flexibilnější, proto je také použita ve 
-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                              monitoring.eduroam.cz
  
-<code+        DupInterval                             0 
-<Handler Realm=/^$/> +        Secret                                  <monitoring secret
- <AuthBy INTERNAL+</Client> 
- DefaultResult REJECT +... 
- </AuthBy> +<AuthBy RADSEC
-</Handler> +        Identifier                              flr.eduroam.cz 
-</code>+        ProxyAlgorithm                          HashBalance 
 +         
 +        MaxFailedRequests                       3 
 +        MaxFailedGraceTime                      0 
 +        NoreplyTimeout                          8 
 +        KeepaliveTimeout                        35 
 +        KeepaliveNoreplyTimeout                 4 
 +        UseStatusServerForFailureDetect         True
  
-==== Požadavky domácích uživatelů ====+        TLS_Protocols                           TLSv1.2, TLSv1.3 
 +        TLS_CertificateType                     PEM 
 +        TLS_CertificateFile                     /path/to/certificate 
 +        TLS_PrivateKeyFile                      /path/to/key 
 +        TLS_CAFile                              /path/to/CA/file 
 +        #TLS_CAPath                              /path/to/CA/folder 
 +        #TLS_CRLCheck                            True 
 +        TLS_ExpectedPeerName                    flr[123]?\.eduroam\.cz
  
-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 RADIUSuV současnosti ale platí, že hostitelské organizace +        Host                                    78.128.248.11 
-by neměli accounting posílat s ohledem na soukromí uživatelů+        Host                                    78.128.248.12 
- +        #Host                                    2001:718:ff05:aca::1:10 
-Veškerý acounting ukládáme do lokálního souboru na každém jednom lokálním RADIUS +        #Host                                    2001:718:ff05:aca::1:11 
-serveru, ale také ho přeposíláme na stroj se jménem ''accounting.cesnet.cz''Tam dochází +        #Host                                    2001:718:ff05:aca::1:12 
-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+        ... 
-<Handler Request-Type=Accounting-Request, +        AuthBy                                  flr.eduroam.cz 
-         Realm=/^**cesnet\.cz**$|^**radius1\.cesnet\.cz**$/i> +        ... 
- +        AddToRequestIfNotExist                  Operator-Name="1instituce.cz" 
-  AcctLogFileName /var/log/arch/radiator/radiator.**cesnet.cz**.%Y_%m_%d.acc +        AddToRequest                            Chargeable-User-Identity=\000 
- +        ...
-  <AuthBy RADIUS> +
-    <Host **accounting.cesnet.cz**> +
-       AuthPort        1812 +
-       AcctPort        1813 +
-       Secret          **TAJEMSTVI** +
-    </Host> +
-  </AuthBy> +
- +
-  PreProcessingHook sub { CUI::add(@_); }; +
-  #AccountingHandled+
 </Handler> </Handler>
 +...
 </code> </code>
- 
-Ověření identity a hesla uživatelů s realmem **cesnet.cz**, případně 
-**radius1.cesnet.cz** se děje v sekci ''AuthBy'' jménem 
-''CheckLDAP'', která je uvedena dále. Je podstatné, aby realmy byly 
-zpracovávány **bez ohledu na velikost písmen**, jinak to vede zmatení 
-uživatelů. 
- 
-<code> 
-<Handler Realm=/^**cesnet\.cz**$|^**radius1\.cesnet\.cz**$/i> 
-  AuthBy CheckLDAP 
-  AuthLog authlogger 
-  PostProcessingHook    sub { CUI::add(@_); }; 
-</Realm> 
-</code> 
- 
-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:spravce:pripojovani:radius:radiator:eap_acct_username.pl|eap_acct_username.pl]], 
-slouží k tomu, aby se v ''Access-Accept'' paketech 
-neobjevovala vnější anonymní identita. 
- 
-<code> 
-<Handler TunnelledByTTLS=1> 
-  AuthBy CheckLDAP 
-  AuthLog authlogger 
- 
-  PostProcessingHook file:"/etc/radiator/eap_acct_username.pl" 
-  PostAuthHook          sub { CUI::add(@_); }; 
-</Handler> 
- 
-<Handler TunnelledByPEAP=1> 
-  AuthBy CheckLDAP 
-  AuthLog authlogger 
- 
-  PostProcessingHook file:"/etc/radiator/eap_acct_username.pl" 
-  PostAuthHook          sub { CUI::add(@_); }; 
-</Handler> 
- 
-</code> 
- 
-==== 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: 
- 
-<code> 
-<Handler Request-Type=Accounting-Request> 
-  AcctLogFileName /var/log/arch/radiator/radiator.global.%Y_%m_%d.acc 
-</code> 
- 
-a také ho posíláme našemu centrálnímu accounting systému: 
-<code> 
-  <AuthBy RADIUS> 
-    <Host **accounting.cesnet.cz**> 
-       AuthPort          1812 
-       AcctPort          1813 
-       Secret            **TAJEMSTVI** 
-    </Host> 
-  </AuthBy> 
- 
-  PreProcessingHook sub { CUI::add(@_); }; 
-</Handler> 
-</code> 
- 
-Než k nám může od našich AP doputovat nějaký accounting o 
-návštěvníkovi, tak musí předcházet ověření jeho identity. O to se postará národní RADIUS server. Pomocí atributu [[https://tools.ietf.org/html/rfc5580#page-12|Operator-Name]] předáme národnímu RADIUSu a domovské organizaci informaci o tom kterou organizaci návštěvník navštívil, znak 1 musí být před realmem uveden, viz syntaxe atributu. 
- 
-<code> 
-<Handler Realm=/^.+$/> 
-        <AuthBy RADSEC> 
-                Host                    radius1.eduroam.cz 
-                Secret                  radsec 
- 
-                MaxFailedRequests       2 
-                MaxFailedGraceTime      0 
-                FailureBackoffTime      0 
- 
-                UseTLS 
- 
-                TLS_CAPath              /etc/ssl/certs 
-                TLS_CertificateFile     /etc/ssl/certs/ipsec_**certifikat**.crt.pem 
-                TLS_CertificateType     PEM 
-                TLS_PrivateKeyFile      /etc/ssl/private/ipsec_**certifikat**.key.pem 
- 
-         TLS_CRLCheck 
-         TLS_CRLFile /etc/ssl/certs/9b59ecad.r0 
-         TLS_ExpectedPeerName radius1.eduroam.cz 
-</code> 
- 
-Odpověď na ověření návštěvníkovy identity ale musí být zkontrolována, jestli neobsahuje zakázané 
-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:spravce:pripojovani:radius:radiator:check_reply.pl|skript 
-check_reply.pl]]. 
- 
-<code> 
-    ReplyHook file:"/etc/radiator/check_reply.pl" 
-  </AuthBy> 
- 
-  AddToReplyIfNotExist    Tunnel-Private-Group-ID=1:1000 
-  AddToReply   Tunnel-Type=1:VLAN,\ 
-   Tunnel-Medium-Type=1:Ether_802 
-  AddToRequestIfNotExists Operator-Name=1**cesnet.cz** 
-  AddToRequest            Chargeable-User-Identity=\000 
-</Handler> 
-</code> 
- 
-===== 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 ''radiusDisabled'', definuje jeho 
-oprávnění //eduroam// používat. 
- 
-<code> 
-<AuthBy LDAP2> 
-  Identifier              CheckLDAP 
-</code> 
- 
-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 
-''RewriteUsername'', který umožňuje definovat regulární výraz 
-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 ''UsernameMatchesWithoutRealm'', 
-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 //eduroam//u. 
- 
-<code> 
-  UsernameMatchesWithoutRealm yes 
-</code> 
- 
-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 ''radiusPassword''), ale současně nemá oprávnění číst uživatele, kteří mají 
-//eduroam// zablokován atributem ''radiusDisabled'' (toto se 
-děje na straně LDAP serveru prostřednictvím ACL). 
- 
-Každý uživatel dále může mít definován atribut 
-''radiusTunnelPrivateGroupID'' určený k umístění uživatele do 
-specifické VLAN. Tato funkce se používá pouze pro testovací účty. 
- 
-<code> 
-  Host           localhost 
- 
-  AuthDN   **uid=rad,ou=Special Users,dc=cesnet,dc=cz** 
-  AuthPassword   **Tajemstvi** 
- 
-  BaseDN   **dc=cesnet,dc=cz** 
-  UsernameAttr   uid 
-  PasswordAttr   **radiusPassword** 
-  AuthAttrDef           radiusTunnelPrivateGroupID, \ 
-    Tunnel-Private-Group-ID, reply 
-</code> 
- 
-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://wiki.eduroam.cz/eduroam-admin/msg00478.html|eduroam-admin]]. 
- 
-<code> 
-  EAPType   LEAP,PEAP,TTLS,MSCHAP-V2,MD5,MD5-Challenge 
-  EAPTLS_CAPath   /etc/ssl/certs/prazdny-adresar 
-  EAPTLS_CertificateFile  /etc/ssl/certs/radius1.cesnet.cz.crt 
-  EAPTLS_CertificateType  PEM 
-  EAPTLS_PrivateKeyFile   /etc/ssl/private/radius1.cesnet.cz.key 
-  EAPTLS_MaxFragmentSize  1000 
-  EAPTLS_CRLCheck 
-  EAPTLS_CRLFile   /etc/ssl/9b59ecad.r0 
-  AutoMPPEKeys 
-  EAPTLS_PEAPVersion   0 
-  //**EAPAnonymous            %n**// 
-  SSLeayTrace   1 
-</code> 
- 
-[[cs:spravce:pripojovani:radius:radiator:search_hook.pl|Skript search_hook.pl]] zajištuje, aby uživatelé nemohli být příliš kreativní při vymýšlení vnější EAP identity, dovolená hodnota je jen ''anonymous@cesnet.cz''. 
- 
-<code> 
-  PostSearchHook   file:"/etc/radiator/search_hook.pl" 
-</code> 
- 
-V případě, že uživatel nemá nadefinován atribut 
-''radiusTunnelPrivateGroupID'', tak 
- 
-je do odpovědi přidán AV pár 
-''Tunnel-Private-Group-ID=1:100''. Pokud ho definován má, 
-hodnota je ''1:666'', tudíž se jedná o testovací účet. 
-Další atributy jsou k odpovědi přidány vždy. 
- 
-<code> 
-  AddToReplyIfNotExist   Tunnel-Private-Group-ID=1:100 
-  AddToReply   Tunnel-Type=1:VLAN,\ 
-    Tunnel-Medium-Type=1:Ether_802 
-</AuthBy> 
-</code> 
- 
-===== 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, uživatelské jméno a sůl. CUI je implemntováno jako perlovský modul a je k dispozici na [[https://github.com/CESNET/radiator-cui|github]]u. 
- 
-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://github.com/CESNET/radiator-cui/blob/master/cui.cfg|cui.cfg]] a v souboru [[https://github.com/CESNET/radiator-cui/blob/master/cui_definitions_file|cui_definitions_file]] nastavit vlastní hodnotu do proměné CUI_salt. 
- 
-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:spravce:pripojovani:radius:radiator:radius.cfg|radius.cfg]]. 
- 
-Konfigurace Radiatoru používaná na TUL: {{:cs:spravce:pripojovani:radius:radiator:tul-radius.tgz|tul-radius.tgz}} (27. 3. 2006). Za poskytnutí děkuji Petrovi Adamcovi. 
- 
-Implemnetace [[https://github.com/CESNET/radiator-cui/blob/master/cui_definitions_file|CUI na github]]u. 
- 
-Skript [[cs:spravce:pripojovani:radius:radiator:search_hook.pl|search_hook.pl]] zajištuje aby uživatelé mohli jako vnější anonymní identitu použít pouze ''anonymous@cesnet.cz''. 
- 
-Skript [[cs:spravce:pripojovani:radius:radiator:check_reply.pl|check_reply.pl]] odstraňuje z odpovědí AV páry které by mohli ovlivnit chování AP. 
- 
-Skript [[cs:spravce:pripojovani:radius:radiator:eap_acct_username.pl|eap_acct_username.pl]] zajištuje aby v ''Access-Accept'' paketech v ''User-Name'' byla skutečná identita uživatele nikoliv anonymní vnější identita. 
- 
-Skript [[cs:spravce:pripojovani:radius:radiator:patch_accounting.pl]] je další zajímavá ukázka hooku Radiatoru. Slouží na národním serveru k přidávání realmu do ''Access-Accept'' paketů. 
- 
-