cs:spravce:pripojovani:radius:freeradius2

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
Následující verze Obě strany příští revize
cs:spravce:pripojovani:radius:freeradius2 [2016/01/08 13:59]
jan.tomasek@cesnet.cz
cs:spravce:pripojovani:radius:freeradius2 [2017/02/23 11:31]
jan.tomasek@cesnet.cz
Řádek 1: Řádek 1:
 ====== Instalace FreeRADIUSu 2.x.x pro eduroam ====== ====== Instalace FreeRADIUSu 2.x.x pro eduroam ======
 +
 +<box 70% center rgb(239,​247,​255) #000000 rgb(209,​233,​255) rgb(10,​82,​122)>​
 +FreeRADIUS v2 byl nahrazen novou verzí, používejte [[freeradius3|FreeRADIUS 3]].
 +</​box>​
  
 Tento návod Vás provede instalací RADIUS serveru FreeRADIUS. RADIUS server je potřebný pro zapojení do //eduroam// infrastruktury. Použitá ověřovací metoda bude EAP-PEAP. Tento návod Vás provede instalací RADIUS serveru FreeRADIUS. RADIUS server je potřebný pro zapojení do //eduroam// infrastruktury. Použitá ověřovací metoda bude EAP-PEAP.
Řádek 13: Řádek 17:
 V adresáři se zdrojovými kódy, spusťte: V adresáři se zdrojovými kódy, spusťte:
  
-<xterm>+<file>
 ./configure --prefix=/​opt/​radius-2.1.6 --with-system-libtool ./configure --prefix=/​opt/​radius-2.1.6 --with-system-libtool
 make make
 #jako uživatel root spusťte #jako uživatel root spusťte
 make install make install
-</xterm>+</file>
  
  
Řádek 40: Řádek 44:
  
 v sekci ''​eap {}''​ nastavíme: v sekci ''​eap {}''​ nastavíme:
-<xterm>+<file>
 default_eap_type = peap default_eap_type = peap
-</xterm>+</file>
  
 v sekci ''​tls {}''​ nastavíme své certifikáty (tls komunikace mezi uživatelským notebookem a naším RADIUS serverem): v sekci ''​tls {}''​ nastavíme své certifikáty (tls komunikace mezi uživatelským notebookem a naším RADIUS serverem):
-<xterm>+<file>
 private_key_file = /​etc/​ssl/​private/​radius09.pem private_key_file = /​etc/​ssl/​private/​radius09.pem
 certificate_file = /​etc/​ssl/​certs/​radius09.crt certificate_file = /​etc/​ssl/​certs/​radius09.crt
-</xterm>+</file>
  
 Konfigurační volby ''​private_key_file''​ a ''​certificate_file''​ ukazují na soubory s privátním a veřejným klíčem Vašeho serveru, které získáte od certifikační autority (CA). Pokud certifikační autorita, která vydala certifikát pro server, nevydává certifikáty přímo pod kořenem, který mají uživatelé předinstalovaný v suplikantu, je nutné společně s certifikátem serveru posílat i certifikáty mezilehlých CA. To se udělá tak, že certifikáty přidáte do téhož souboru, ve kterém je certifikát serveru. Certifikáty přidávejte na konec souboru. Přidání mezilehlých certifikátů je nutné jak pro SureServer EDU, tak pro Terena Certificate Service. Konfigurační volby ''​private_key_file''​ a ''​certificate_file''​ ukazují na soubory s privátním a veřejným klíčem Vašeho serveru, které získáte od certifikační autority (CA). Pokud certifikační autorita, která vydala certifikát pro server, nevydává certifikáty přímo pod kořenem, který mají uživatelé předinstalovaný v suplikantu, je nutné společně s certifikátem serveru posílat i certifikáty mezilehlých CA. To se udělá tak, že certifikáty přidáte do téhož souboru, ve kterém je certifikát serveru. Certifikáty přidávejte na konec souboru. Přidání mezilehlých certifikátů je nutné jak pro SureServer EDU, tak pro Terena Certificate Service.
Řádek 62: Řádek 66:
 === proxy.conf === === proxy.conf ===
 Soubor ''​proxy.conf''​ určuje, jak budeme požadavky směrovat. Požadavky s realmem "​vas_realm.cz"​ budeme směrovat na náš RADIUS. Požadavky bez realmu (realm ''​NULL''​) odmítneme úpravou souboru ''​users''​. Ostatní požadavky (''​realm DEFAULT''​) chceme poslat na národní RADIUS server. V tomto souboru jsou úpravy hodně masivní. V podstatě vše zakomentovat,​ v souboru by mělo ve výsledku být jen následující:​ Soubor ''​proxy.conf''​ určuje, jak budeme požadavky směrovat. Požadavky s realmem "​vas_realm.cz"​ budeme směrovat na náš RADIUS. Požadavky bez realmu (realm ''​NULL''​) odmítneme úpravou souboru ''​users''​. Ostatní požadavky (''​realm DEFAULT''​) chceme poslat na národní RADIUS server. V tomto souboru jsou úpravy hodně masivní. V podstatě vše zakomentovat,​ v souboru by mělo ve výsledku být jen následující:​
-<xterm>+<file>
 proxy server { proxy server {
   default_fallback = no   default_fallback = no
Řádek 84: Řádek 88:
         dead_time ​      = 0         dead_time ​      = 0
 } }
-</xterm>+</file>
  
  
 === attrs === === attrs ===
 V souboru ''​attrs''​ je konfigurace filtrování atributů přijatých přes proxy modul. Atributy uvedené v sekci ''​DEFAULT''​ nejsou filtrovány. Do této sekce přidáme následující atributy, které zajistí, že VLAN 666 (testovací účty [[cs:​spravce:​monitoring:​uvod|sledovací infrastruktury]]) nebudou filtrovány. Jiná VLAN ID budou odfiltrována. V souboru ''​attrs''​ je konfigurace filtrování atributů přijatých přes proxy modul. Atributy uvedené v sekci ''​DEFAULT''​ nejsou filtrovány. Do této sekce přidáme následující atributy, které zajistí, že VLAN 666 (testovací účty [[cs:​spravce:​monitoring:​uvod|sledovací infrastruktury]]) nebudou filtrovány. Jiná VLAN ID budou odfiltrována.
-<xterm>+<file>
 Tunnel-Type == VLAN, Tunnel-Type == VLAN,
 Tunnel-Private-Group-Id == 666, Tunnel-Private-Group-Id == 666,
 Tunnel-Medium-Type == IEEE-802 Tunnel-Medium-Type == IEEE-802
-</xterm>+</file>
  
 === clients.conf === === clients.conf ===
 V souboru ''​clients.conf''​ je potřeba nadefinovat všechna zařízení ověřující se proti FreeRADIUSu,​ tedy všechny přístupové body i národní RADIUS servery komunikující přes [[cs:​spravce:​pripojovani:​radsec:​uvod|RadSec proxy]]. V souboru ''​clients.conf''​ je potřeba nadefinovat všechna zařízení ověřující se proti FreeRADIUSu,​ tedy všechny přístupové body i národní RADIUS servery komunikující přes [[cs:​spravce:​pripojovani:​radsec:​uvod|RadSec proxy]].
  
-<xterm>+<file>
 # příklad běžného klienta (AP) # příklad běžného klienta (AP)
 client 192.168.240.10 { client 192.168.240.10 {
Řádek 116: Řádek 120:
         shortname = ermon         shortname = ermon
 } }
-</xterm>+</file> 
 + 
 +=== Konfigurace Operator-Name === 
 + 
 +Attribut Operator-Name slouží k indentifikaci SP odkud pochází požadavky na autentizaci uživatelů. V souboru /​etc/​raddb/​sites-available/​dafault přidejte:​ 
 + 
 +<​file>​ 
 +.. 
 +authorize { 
 +       ​update request { 
 +               ​Operator-Name := 1domaci-realm.cz 
 +       } 
 +.. 
 +</​file>​ 
 + 
 +=== Konfigurace Chargeable-User-Identity === 
 + 
 +TODO; Prozatím [[https://​community.jisc.ac.uk/​library/​janet-services-documentation/​chargeable-user-identity-eduroam-freeradius-implementation|dokumentace JISC]]. 
 + 
 + 
 +=== Kontrola shody vnější a vnitřní EAP identity === 
 + 
 +Do souboru ''​policy.conf''​ přidejte:​ 
 + 
 +<​file>​ 
 +check_inner_identity { 
 +  if (!outer.request:​Realm || !Realm || "​%{outer.request:​Realm}"​ != "​%{Realm}"​) { 
 +    reject 
 +  } 
 +  if (!outer.request:​Stripped-User-Name || !Stripped-User-Name || \ 
 +      ("​%{outer.request:​Stripped-User-Name}"​ != "​%{Stripped-User-Name}"​ && \ 
 +       "​%{outer.request:​Stripped-User-Name}"​ != '​anonymous'​)) { 
 +    reject 
 +  } 
 +
 +</​file>​ 
 + 
 +Volejte funkci ''​check_inner_identity''​ ze sekce ''​autorize''​ v souboru ''​sites-available/​default''​ ale před tím ještě zajistěte vyplnění atributů Realm a Stripped-User-Name:​ 
 + 
 +<​file>​ 
 +.. 
 +authorize { 
 +.. 
 +  update request { 
 +    Realm !* ANY 
 +    Stripped-User-Name !* ANY 
 +  } 
 +  suffix 
 + 
 +  check_inner_identity 
 +.. 
 +</​file>​ 
  
 === users === === users ===
Řádek 122: Řádek 178:
  
 == Odfiltrování realmu NULL == == Odfiltrování realmu NULL ==
-<xterm>+<file>
 DEFAULT Realm == NULL, Auth-Type := Reject DEFAULT Realm == NULL, Auth-Type := Reject
-</xterm>+</file>
  
 == Testovací účet == == Testovací účet ==
 Pro zajištění vysoké kvality sítě //eduroam// je každá instituce zapojena do sledovací infrastruktury,​ proto je nutné vytvořit platný testovací účet. Pomocí testovacího účtu by neměl být umožněn přístup k síti //​eduroam//​. To je zajištěno nasměrováním do VLAN ID 666, která na přístupových bodech není definována,​ tudíž nikam nevede. ​ Pro zajištění vysoké kvality sítě //eduroam// je každá instituce zapojena do sledovací infrastruktury,​ proto je nutné vytvořit platný testovací účet. Pomocí testovacího účtu by neměl být umožněn přístup k síti //​eduroam//​. To je zajištěno nasměrováním do VLAN ID 666, která na přístupových bodech není definována,​ tudíž nikam nevede. ​
 Do souboru users přidáme: Do souboru users přidáme:
-<xterm>+<file>
 testuziv Cleartext-Password:​= "​hlasna_trouba"​ testuziv Cleartext-Password:​= "​hlasna_trouba"​
         Tunnel-Type = VLAN,         Tunnel-Type = VLAN,
Řádek 135: Řádek 191:
         Tunnel-Medium-Type = IEEE-802,         Tunnel-Medium-Type = IEEE-802,
          ​Fall-Through = Yes          ​Fall-Through = Yes
-</xterm>+</file>
  
 === Zablokování uživatele a realmu === === Zablokování uživatele a realmu ===
 Zablokovaní lokálního účtu lze úpravou souboru users: Zablokovaní lokálního účtu lze úpravou souboru users:
-<xterm>+<file>
 zlobivec ​ Auth-Type := Reject zlobivec ​ Auth-Type := Reject
-</xterm>+</file>
 Zablokování libovolného účtu. **Jméno je v tomto případě porovnáváno s ohledem na velikost písmen**. Zablokování libovolného účtu. **Jméno je v tomto případě porovnáváno s ohledem na velikost písmen**.
-<xterm>+<file>
 DEFAULT User-Name == "​zlobivy_uzivatel@domena.cz",​ Auth-Type := Reject DEFAULT User-Name == "​zlobivy_uzivatel@domena.cz",​ Auth-Type := Reject
-</xterm>+</file>
 Zablokovat celý realm lze úpravou ''​proxy.conf''​ a ''​users''​. Zablokovat celý realm lze úpravou ''​proxy.conf''​ a ''​users''​.
 Do souboru proxy.conf přidáme postižený realm např. abc.com: Do souboru proxy.conf přidáme postižený realm např. abc.com:
-<xterm>+<file>
 realm abc.com { realm abc.com {
 } }
-</xterm>+</file>
 V souboru ''​users''​ musíme zakázat definovaný realm v ''​proxy.conf'':​ V souboru ''​users''​ musíme zakázat definovaný realm v ''​proxy.conf'':​
-<xterm>+<file>
 DEFAULT Realm == abc.com, Auth-Type := Reject DEFAULT Realm == abc.com, Auth-Type := Reject
-</xterm>+</file>
  
 === Testování konfigurace === === Testování konfigurace ===
 K testování využijeme výše zmiňovaný ''​rad_eap_test''​. ​ K testování využijeme výše zmiňovaný ''​rad_eap_test''​. ​
-<xterm>+<file>
 sh rad_eap_test -H 127.0.0.1 -P 1812 -S radsec -u testuziv@vas_realm.cz -p '​hlasna_trouba'​ -m WPA-EAP -e PEAP -t 5 sh rad_eap_test -H 127.0.0.1 -P 1812 -S radsec -u testuziv@vas_realm.cz -p '​hlasna_trouba'​ -m WPA-EAP -e PEAP -t 5
 access-accept;​ 1 access-accept;​ 1
-</xterm>+</file>
 Pokud je vše v pořádku, vrátí nám klient access-accept. Dále nám klient může vrátit buď timeout (spojení se nezdařilo, neplatné sdílené heslo), nebo access-reject (neplatné uživatelské jméno případně heslo). Zpoždění odpovědi od serveru udává číslo za středníkem (v sekundách). Pokud je vše v pořádku, vrátí nám klient access-accept. Dále nám klient může vrátit buď timeout (spojení se nezdařilo, neplatné sdílené heslo), nebo access-reject (neplatné uživatelské jméno případně heslo). Zpoždění odpovědi od serveru udává číslo za středníkem (v sekundách).
  
Řádek 176: Řádek 232:
 V sekci ''​authorize {}''​ odkomentovat řádek ''​ldap''​. V sekci ''​authorize {}''​ odkomentovat řádek ''​ldap''​.
 V sekci ''​authenticate {}''​ odkomentovat:​ V sekci ''​authenticate {}''​ odkomentovat:​
-<xterm>+<file>
 Auth-Type LDAP { Auth-Type LDAP {
     ldap     ldap
 } }
-</xterm>+</file>
  
 Dále v souboru ''​modules/​ldap''​ v sekci ''​ldap''​ je potřeba správně nastavit: Dále v souboru ''​modules/​ldap''​ v sekci ''​ldap''​ je potřeba správně nastavit:
Řádek 193: Řádek 249:
  
 V podsekci ''​tls''​ je potřeba nastavit CA certifikát pro ověření LDAP serveru: V podsekci ''​tls''​ je potřeba nastavit CA certifikát pro ověření LDAP serveru:
-<xterm>+<file>
 cacertfile ​     = /​etc/​ssl/​certs/​ca_stroj.pem cacertfile ​     = /​etc/​ssl/​certs/​ca_stroj.pem
-</xterm>+</file>
  
 Dále je nutné specifikovat atribut, ve kterém je uloženo heslo uživatele: Dále je nutné specifikovat atribut, ve kterém je uloženo heslo uživatele:
-<xterm>+<file>
 password_attribute = "​radiusPassword"​ password_attribute = "​radiusPassword"​
-</xterm>+</file>
  
 === Ověřování skupin === === Ověřování skupin ===
Řádek 209: Řádek 265:
  
 V souboru ''​modules/​ldap''​ upravit: V souboru ''​modules/​ldap''​ upravit:
-<xterm>+<file>
 groupname_attribute = cn groupname_attribute = cn
 groupmembership_filter = "​(&​(objectClass=GroupOfUniqueNames)(uniqueMember=%{control:​Ldap-UserDn}))"​ groupmembership_filter = "​(&​(objectClass=GroupOfUniqueNames)(uniqueMember=%{control:​Ldap-UserDn}))"​
-</xterm>+</file>
  
 do souboru users přidat: do souboru users přidat:
-<xterm>+<file>
 DEFAULT Ldap-Group == "​cn=jmeno_skupiny,​ ou=Groups, dc=domena, dc=cz",​ Auth-Type:= Reject DEFAULT Ldap-Group == "​cn=jmeno_skupiny,​ ou=Groups, dc=domena, dc=cz",​ Auth-Type:= Reject
-</xterm>+</file>
  
 == Whitelist == == Whitelist ==
Řádek 223: Řádek 279:
  
 V souboru ''​modules/​ldap''​ upravit: V souboru ''​modules/​ldap''​ upravit:
-<xterm>+<file>
 groupname_attribute = cn groupname_attribute = cn
 groupmembership_filter = "​(&​(objectClass=GroupOfUniqueNames)(uniqueMember=%{control:​Ldap-UserDn}))"​ groupmembership_filter = "​(&​(objectClass=GroupOfUniqueNames)(uniqueMember=%{control:​Ldap-UserDn}))"​
-</xterm>+</file>
  
 do souboru ''​users''​ přidat: do souboru ''​users''​ přidat:
-<xterm>+<file>
 DEFAULT Ldap-Group == "​cn=jmeno_skupiny,​ ou=Groups, dc=domena, dc=cz" DEFAULT Ldap-Group == "​cn=jmeno_skupiny,​ ou=Groups, dc=domena, dc=cz"
         Fall-Through = no         Fall-Through = no
Řádek 235: Řádek 291:
 # vsechny ostatni odmitneme # vsechny ostatni odmitneme
 DEFAULT Auth-Type:= Reject DEFAULT Auth-Type:= Reject
-</xterm>+</file>
  
 == Varianta OpenLDAP s posixGroup == == Varianta OpenLDAP s posixGroup ==
-<xterm>+<file>
 groupname_attribute = cn groupname_attribute = cn
 groupmembership_filter = "​(&​(objectClass=posixGroup)(memberUID=%{User-Name}))"​ groupmembership_filter = "​(&​(objectClass=posixGroup)(memberUID=%{User-Name}))"​
-</xterm>+</file>
  
 === Upgrade FreeRADIUSu z verze 1.x === === Upgrade FreeRADIUSu z verze 1.x ===
Řádek 250: Řádek 306:
  
 Dříve: Dříve:
-<xterm>+<file>
 testuziv User-Password == "​hlasna_trouba"​ testuziv User-Password == "​hlasna_trouba"​
-</xterm>+</file>
 Nyní: Nyní:
-<xterm>+<file>
 testuziv Cleartext-Password:​= "​hlasna_trouba"​ testuziv Cleartext-Password:​= "​hlasna_trouba"​
-</xterm>+</file>
  
 ===== Možné problémy ===== ===== Možné problémy =====
Řádek 267: Řádek 323:
 ==== Chyba "​Failed to initialize type tls" ==== ==== Chyba "​Failed to initialize type tls" ====
 Spuštění ''​radiusd -X''​ končí chybou: Spuštění ''​radiusd -X''​ končí chybou:
-<xterm>+<file>
 rlm_eap: SSL error error:​00000000:​lib(0):​func(0):​reason(0) rlm_eap: SSL error error:​00000000:​lib(0):​func(0):​reason(0)
 rlm_eap_tls:​ Error loading randomness rlm_eap_tls:​ Error loading randomness
Řádek 275: Řádek 331:
 /​opt/​radius-2.1.6/​etc/​raddb/​sites-enabled/​inner-tunnel[176]:​ Errors parsing authenticate section. /​opt/​radius-2.1.6/​etc/​raddb/​sites-enabled/​inner-tunnel[176]:​ Errors parsing authenticate section.
 Errors initializing modules Errors initializing modules
-</xterm>+</file>
  
 Nemáte vygenerované soubory: ''/​opt/​radius-2.1.6/​etc/​raddb/​certs/​dh''​ a ''/​opt/​radius-2.1.6/​etc/​raddb/​certs/​random''​ Nemáte vygenerované soubory: ''/​opt/​radius-2.1.6/​etc/​raddb/​certs/​dh''​ a ''/​opt/​radius-2.1.6/​etc/​raddb/​certs/​random''​
Řádek 281: Řádek 337:
 Jak vyřešit? Jak vyřešit?
 Spustit ''​radiusd -X''​ po překladu, vygeneruje testovací CA a zároveň tyto potřebné soubory, nebo se přepněte do adresáře certs a napište příkazy: Spustit ''​radiusd -X''​ po překladu, vygeneruje testovací CA a zároveň tyto potřebné soubory, nebo se přepněte do adresáře certs a napište příkazy:
-<xterm>+<file>
 make dh make dh
 make random make random
-</xterm>+</file>