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:freeradius3 [2019/11/18 08:56] – uprava odkazu do mailoveho archivu 1141cd825e33f2281fc659232bcf401af2705c39@einfra.cesnet.czcs:spravce:pripojovani:radius:freeradius3 [2025/05/05 11:52] (aktuální) – [Konfigurace RadSecu] Jan Čáslavský
Řádek 1: Řádek 1:
 ====== Instalace FreeRADIUSu 3.x.x pro eduroam ====== ====== Instalace FreeRADIUSu 3.x.x pro eduroam ======
  
-Návod Vás provede instalací RADIUS serveru [[http://freeradius.org|FreeRADIUS 3.x]] na operačních systémech Debian GNU/Linux Jessie a CentOS 7 (RHEL 7). RADIUS server je potřebný pro zapojení do //eduroam// infrastruktury. Použitá ověřovací metoda je PEAP s protokolem MS-CHAPv2.+Návod Vás provede instalací RADIUS serveru [[http://freeradius.org|FreeRADIUS 3.x]] na operačních systémech Debian GNU/Linux Bookworm. RADIUS server je potřebný pro zapojení do //eduroam// infrastruktury. Použitá ověřovací metoda je PEAP s protokolem MS-CHAPv2.
  
-V případě, že jste zkušený správce linuxových systémů a používáte Debian, můžete využít automatizovanou instalaci pomocí Ansible[[cs:spravce:pripojovani:radius:freeradius_playbook]+{{page>[:cs:spravce: pripojovani: frag_certifikat]}}
  
 ===== Debian ===== ===== Debian =====
 +[[http://freeradius.org|FreeRADIUS 3.x]] je součástí základní distribuce. Nainstalujte balíček serveru:
  
-==== Buster ==== +<code bash
- +apt install freeradius 
-Buster obsahuje verzi 3.0.17, která trpí [[https://www.eduroam.cz/cs/spravce/pripojovani/radius/freeradius3#buginbound_radiustls_connection_stalls| +</code>
-chybou]], nicméně na základě [[https://random.cesnet.cz/mailman/private/eduroam-admin/2019-July/002654.html|experimetnů]] se zdá že v Debianu je tato chyba odstraněna. +
- +
-==== Stretch ==== +
- +
-Stretch obsahuje verzi 3.0.12+dfsg-5+deb9u1 která je použitelná pro malé insituce typu střední školy, pokud zkrátí lifetime jak je popsáno v sekci o [[https://www.eduroam.cz/cs/spravce/pripojovani/radius/freeradius3#bug%EF%BF%BCfail_to_read_multiple_packets_from_an_ssl_session|chybách FreeRADIUSu]]. +
- +
- +
-===== CentOS 7 (RHEL 7) ===== +
-[[http://freeradius.org|FreeRADIUS 3.x]] je součástí základní distribuce. Nainstalujte balíček serveru a pomocných nástrojů: +
- +
-<file+
- yum -y install freeradius freeradius-utils freeradius-sqlite +
-</file> +
- +
-Na rozdíl od níže uvedeného návodu, kde jsou konfigurační soubory v adresáři ''/etc/freeradius'', se konfigurační soubory nacházejí v adresáři ''/etc/raddb''+
- +
-V RHEL 7 je FreeRADIUS 3.0.4, tento návod vznikl primárně na verzi 3.0.11. Ve verzi 3.0.5 došlo ke [[https://github.com/FreeRADIUS/freeradius-server/blob/v3.0.x_state_tree/raddb/radiusd.conf.in#L122|změně escapování regulárních výrazů]]. Pokud kopírujete z tohoto návodu tak budete muset tam kde je v regulárním výrazu "\" dát "\\".+
  
 ====== Konfigurace freeRADIUS 3.x ====== ====== Konfigurace freeRADIUS 3.x ======
Řádek 37: Řádek 21:
  
 Oveření načítaných konfiguračních souborů je možné provést příkazem: Oveření načítaných konfiguračních souborů je možné provést příkazem:
-<file>+<code ini>
 freeradius -XC | grep including freeradius -XC | grep including
-</file>+</code>
  
 Všechny soubory z načítaných adresářů z příkazu výše je možné vylistovat pomocí příkazu: Všechny soubory z načítaných adresářů z příkazu výše je možné vylistovat pomocí příkazu:
-<file>+<code bash>
 ls $(freeradius -XC | grep including | grep 'files in directory' | awk '{ print $NF }') ls $(freeradius -XC | grep including | grep 'files in directory' | awk '{ print $NF }')
-</file>+</code>
  
  
 ===== Hlavní konfigurační soubor ===== ===== Hlavní konfigurační soubor =====
  
-V souboru ''/etc/freeradius/radiusd.conf'' najděte následující dvě hodnoty a upravte je jak uvádíme:+V souboru ''/etc/freeradius/3.0/radiusd.conf'' najděte následující dvě hodnoty a upravte je jak uvádíme:
  
-<file>+<code ini>
  cleanup_delay = 10  cleanup_delay = 10
  auth = yes  auth = yes
-</file>+</code>
  
 ta první zajistí že že freeRADIUS je schopen zpracovat autentizační požadavky dlouhé i 10s, to pomůže když se vám v logu objevují hlášení ''No EAP session matching the State variable''. Druhá volba zajistí logování úspěšných autentizací do /var/log/freeradius/radius.log ta první zajistí že že freeRADIUS je schopen zpracovat autentizační požadavky dlouhé i 10s, to pomůže když se vám v logu objevují hlášení ''No EAP session matching the State variable''. Druhá volba zajistí logování úspěšných autentizací do /var/log/freeradius/radius.log
Řádek 63: Řádek 47:
  
 ==== Konfigurace realmů ==== ==== Konfigurace realmů ====
-Směrování požadavků se konfiguruje v souboru ''/etc/freeradius/proxy.conf''. Nastavte tento soubor tak, aby požadavky s vaším realmem považoval za lokální požadavky a aby požadavky bez realmu zamítal. Dále nastavte že všechny požadavky budou směrovány na ''tls'' auth_pool který budeme konfigurovat později.+Směrování požadavků se konfiguruje v souboru ''/etc/freeradius/3.0/proxy.conf''. Nastavte tento soubor tak, aby požadavky s vaším realmem považoval za lokální požadavky a aby požadavky bez realmu zamítal. Dále nastavte že všechny požadavky budou směrovány na ''tls'' auth_pool který budeme konfigurovat později.
  
-<file>+<code ini>
 realm domaci-realm.cz { realm domaci-realm.cz {
 } }
Řádek 73: Řádek 57:
  
 realm NULL { realm NULL {
-virtual_server  = auth-reject+      virtual_server  = auth-reject
 } }
  
Řádek 81: Řádek 65:
 realm "~.+$" { realm "~.+$" {
       status_check = status-server       status_check = status-server
-      auth_pool = tls+      auth_pool = flr.eduroam.cz
       nostrip       nostrip
 } }
-</file>+</code>
  
 ==== Konfigurace EAP pro ověřování uživatelů ==== ==== Konfigurace EAP pro ověřování uživatelů ====
Řádek 90: Řádek 74:
 Doporučená konfigurace předpokládá použití PEAP-MSCHAPv2. V dalším textu předpokládáme použití stejného certifikátu pro PEAP a pro RadSec (ten se konfiguruje níže), není to ale podmínkou.  Doporučená konfigurace předpokládá použití PEAP-MSCHAPv2. V dalším textu předpokládáme použití stejného certifikátu pro PEAP a pro RadSec (ten se konfiguruje níže), není to ale podmínkou. 
  
-Privátní klíč a certifikát uložte do /etc/freeradius/certs/ a tajnému klíči nastavte vlastníka a skupinu na freerad s právy 0640 (aby nebyl čitelný pro běžné uživatele či programy v systému). Na systéch CetOS/RHEL použijte uživatele radiusd. V případě že certifikát RADIUS serveru vydala mezilehlá CA, která není běžně předinstalována je třeba ji přidat do souboru ''radius.crt'' za certifikát RADIUS serveru. To se týká např. TCS certfikátů poskytovaných CESNETem. +Privátní klíč a certifikát uložte do /etc/freeradius/3.0/certs/ a tajnému klíči nastavte vlastníka a skupinu na freerad s právy 0640 (aby nebyl čitelný pro běžné uživatele či programy v systému). Na systéch CetOS/RHEL použijte uživatele radiusd. V případě že certifikát RADIUS serveru vydala mezilehlá CA, která není běžně předinstalována je třeba ji přidat do souboru ''radius.crt'' za certifikát RADIUS serveru. To se týká např. TCS certfikátů poskytovaných CESNETem. Je to potřeba udělat pro všechny používané klíče a certifikáty.
  
-<file>+<code bash>
 chown root:freerad <soubor_s_klicem> chown root:freerad <soubor_s_klicem>
 chmod 0640 <soubor_s_klicem> chmod 0640 <soubor_s_klicem>
-</file>+chown root:freerad <soubor_s_certifikatem> 
 +chmod 0640 <soubor_s_certifikatem> 
 +</code> 
 + 
 +V souboru ''/etc/freeradius/3.0/mods-available/eap'' nastavte vlastní soubory s certifikáty pro PEAP. Zakomentujte ''ca_path''. Změnte defaultní EAP metodu z MD5 na PEAP, tím přestane FR nabízet MD5 jako první metodu a zabavíte se varování "server is offering unsafe method MD5-Challenge" v monitoringu.
  
-V souboru ''/etc/freeradius/mods-available/eap'' nastavte vlastní soubory s certifikáty pro PEAPZakomentujte ''ca_file'' a ''ca_path''. Změnte defaultní EAP metodu z MD5 na PEAPtím estane FR nabízet MD5 jako první metodu a zabavíte se varování "server is offering unsafe method MD5-Challenge" v monitoringu.+Nastavíme minimální verzi TLS na 1.2, předchozí verze protokolu mají známe bezpečnostní chyby.
  
 +Pokud máte freeradius ve verzi alespoň 3.0.26, můžete nastavit maximální verzi TLS na 1.3. Pokud máte dřívější verzi, nastavte na 1.2.
  
-<file>+<code ini>
 eap { eap {
   ...   ...
Řádek 112: Řádek 101:
     certificate_file =  ${certdir}/radius.crt     certificate_file =  ${certdir}/radius.crt
     ...     ...
-    #ca_file ${cadir}/ca.pem +    tls_min_version "1.2" 
-    ... +    tls_max_version = "1.3"
-    #ca_path = ${cadir}+
   }   }
 } }
-</file>+</code>
  
 ==== Kontrola shody vnější a vnitřní EAP identity ==== ==== Kontrola shody vnější a vnitřní EAP identity ====
  
-Ačkoli konfigurace vlastního ověřování je popsána dále, podle použité uživatelské databazáze, tak kontrolu shody vnější a vnitřní EAP identity konfigurujeme shodně. V souboru ''/etc/freeradius/sites-enabled/inner-tunnel'' odkomentujte řádek s ''filter_inner_identity'':+Ačkoli konfigurace vlastního ověřování je popsána dále, podle použité uživatelské databazáze, tak kontrolu shody vnější a vnitřní EAP identity konfigurujeme shodně. V souboru ''/etc/freeradius/3.0/sites-enabled/inner-tunnel'' odkomentujte řádek s ''filter_inner_identity'':
  
-<file>+<code ini>
 ... ...
 authorize { authorize {
Řádek 130: Řádek 118:
 .. ..
 } }
-</file>+</code>
  
-Následně v souboru ''/etc/freeradius/policy.d/filter'' ve funkci ''filter_inner_identity'' upravte kontrolu anonymí identity. V defaultu freeRadius má uvedeno ''if (&outer.request:User-Name !~ /^(anon|@)/)'' to znamená že akceptuje uživatelská jména s prefixem anon a uživatelům to skýtá jistou volnost, např. anon1@realm.cz, anon2@realm.cz, ... a @realm.cz. To komplikuje  blokování v případě bezpečnostních incidentů. Umožněte pouze anonymous@realm.cz:+Následně v souboru ''/etc/freeradius/3.0/policy.d/filter'' ve funkci ''filter_inner_identity'' upravte kontrolu anonymí identity. V defaultu freeRadius má uvedeno ''if (&outer.request:User-Name !~ /^(anon|@)/)'' to znamená že akceptuje uživatelská jména s prefixem anon a uživatelům to skýtá jistou volnost, např. anon1@realm.cz, anon2@realm.cz, ... a @realm.cz. To komplikuje  blokování v případě bezpečnostních incidentů. Umožněte pouze anonymous@realm.cz:
  
-<file>+<code ini>
 ... ...
 filter_inner_identity { filter_inner_identity {
Řádek 162: Řádek 150:
  }  }
 ... ...
-</file>+</code>
  
 Celý soubor je k dispozici na adrese [[https://raw.githubusercontent.com/CESNET/ansible-freeradius/master/files/filter]] Celý soubor je k dispozici na adrese [[https://raw.githubusercontent.com/CESNET/ansible-freeradius/master/files/filter]]
  
-== FreeRADIUS 3.0.4 =+=== Možné problémy s kontrolou shody vnější a vnitřní EAP identity ===
- +
-Pokud používáte verzi FR nižší než 3.0.12, tak vám výše uvedené nebude fungovat. Na RHEL 7 a odvozených distribucích máte k dispozici verzi 3.0.4, kde v ''policy.d/filter'' chybí definice funkce filter_inner_identity. Vezměte si novější verzi  [[https://github.com/FreeRADIUS/freeradius-server/blob/v3.0.x/raddb/policy.d/filter|z GitHubu]]. Při kopírování je třeba nezapomenout na nutnost zdvojení zpětných lomítek, viz začátek tohoto dokumentu. +
- +
-Dále je potřeba do lokálního souboru ''dictionary'' přidat: +
- +
-<file> +
-ATTRIBUTE      Outer-Realm-Name                        1218 string +
-ATTRIBUTE      Inner-Realm-Name                        1219 string +
-</file>+
  
 +Pokud jste přešli s vaším FreeRADIUSem z předchozí verze, může se stát, že dojde při vytváření konfigurace k záměně souboru ''/etc/freeradius/3.0/policy.d/filter'' za ''/etc/freeradius/policy.d/filter.dpkg-dist''. \\
 +Projevuje se to tak, že monitoring vykazuje problém s testem FAKE-UID. Pak je nutné **soubor** ''/etc/freeradius/policy.d/filter.dpkg-dist'' **odstranit**.
 ==== Přiřazení VLAN vlastním uživatelům ==== ==== Přiřazení VLAN vlastním uživatelům ====
  
 V souboru ''sites-enabled/inner-tunnel'' přidejte do sekce ''post-auth'' přiřazení VLAN, hodnotu 300 nahraďte požadovaným číslem VLAN: V souboru ''sites-enabled/inner-tunnel'' přidejte do sekce ''post-auth'' přiřazení VLAN, hodnotu 300 nahraďte požadovaným číslem VLAN:
  
-<file>+<code ini>
 post-auth { post-auth {
 ... ...
Řádek 191: Řádek 172:
 ... ...
 } }
-</file>+</code>
 ==== Zamítání chybných realmů ==== ==== Zamítání chybných realmů ====
  
-Často se objevují realmy myabc.com, 3gppnetwork.org, ... také se objevuje mezera za realmem (androidí klávesnice a doplňování). Uživatele kteří udělají takovou chybu není možné ověřit a je lepší je odfiltrovat co nejdříve. Stáhněte si soubor [[https://github.com/CESNET/ansible-freeradius/blob/master/files/eduroam-realm-checks|eduroam-realm-checks]] do ''/etc/freeradius/policy.d/'' a potom v ''/etc/freeradius/sites-enabled/default'':+Často se objevují realmy myabc.com, 3gppnetwork.org, ... také se objevuje mezera za realmem (androidí klávesnice a doplňování). Uživatele kteří udělají takovou chybu není možné ověřit a je lepší je odfiltrovat co nejdříve. Stáhněte si soubor [[https://github.com/CESNET/ansible-freeradius/blob/master/files/eduroam-realm-checks|eduroam-realm-checks]] do ''/etc/freeradius/3.0/policy.d/'' a potom v ''/etc/freeradius/3.0/sites-enabled/default'':
  
-<file>+<code ini>
 authorize { authorize {
     filter_eduroam_realms     filter_eduroam_realms
Řádek 202: Řádek 183:
     ...     ...
 } }
-</file>+</code>
  
 Když některé z pravidel požadavek uživatele zamítne, uvidíte to v log souboru. Viz příklad níže kde byl požadavek zamítnut protože realm byl doplněný mezerou.: Když některé z pravidel požadavek uživatele zamítne, uvidíte to v log souboru. Viz příklad níže kde byl požadavek zamítnut protože realm byl doplněný mezerou.:
  
-<file>+<code ini>
 Sun Feb  5 17:04:57 2017 : Auth: (2256) Invalid user (Rejected: User-Name contains whitespace): [netsaint@cesnet.cz ] (from client ermon port 0 cli 70-6F-6C-69-73-68) Sun Feb  5 17:04:57 2017 : Auth: (2256) Invalid user (Rejected: User-Name contains whitespace): [netsaint@cesnet.cz ] (from client ermon port 0 cli 70-6F-6C-69-73-68)
-</file>+</code>
 ==== Definice AP klientů ==== ==== Definice AP klientů ====
  
-RADIUS server důvěřuje pouze klientům uvedeným v souboru ''/etc/freeradius/clients.conf'', kteří znají sdílené heslo. Neopoužívejte krátké sdílené heslo, zajištuje integritu RADIUS požadavků mezi AP a RADIUS serverem. RADIUS protokol není šifrovaný. V případě použití Cisco WLC stačí povolit jen jednu IP adresu pro managment interface.+RADIUS server důvěřuje pouze klientům uvedeným v souboru ''/etc/freeradius/3.0/clients.conf'', kteří znají sdílené heslo. Neopoužívejte krátké sdílené heslo, zajištuje integritu RADIUS požadavků mezi AP a RADIUS serverem. RADIUS protokol není šifrovaný. V případě použití Cisco WLC stačí povolit jen jednu IP adresu pro managment interface.
  
-<file>+<code ini>
 client sit_s_ap { client sit_s_ap {
   secret = <stejne_heslo_nastavim_na_ap>   secret = <stejne_heslo_nastavim_na_ap>
Řádek 221: Řádek 202:
   Operator-Name = 1<realm.cz>   Operator-Name = 1<realm.cz>
 } }
-</file>+</code>
  
-Vždy uveďte znak ''1'' před vaším realmem, více informací viz [[https://tools.ietf.org/html/rfc5580#page-12|RFC5580]].+Vždy uveďte znak ''1'' před vaším realmem (příklad: ''1cesnet.cz''), více informací viz [[https://tools.ietf.org/html/rfc5580#page-12|RFC5580]].
  
 Direktiva ''add_cui = yes'' zajistí přidání atributu ''Chargeable-User-Identity = 0x00'' to společně s definovaným Operator-Name způsobí že IdP (ať už vaše, nebo cizí) vypočte a v Access-Accept odpovědi pošle unikátní hodnotu attributu ''Chargeable-User-Identity'' pro uživatele na konkrétním SP. Direktiva ''add_cui = yes'' zajistí přidání atributu ''Chargeable-User-Identity = 0x00'' to společně s definovaným Operator-Name způsobí že IdP (ať už vaše, nebo cizí) vypočte a v Access-Accept odpovědi pošle unikátní hodnotu attributu ''Chargeable-User-Identity'' pro uživatele na konkrétním SP.
Řádek 232: Řádek 213:
  
 ==== Konfigurace RadSecu ==== ==== Konfigurace RadSecu ====
-Samotný RADIUS protokol se nepovažuje za bezpečný, proto je komunikace mezi RADIUSy transportována RadSec protokolem (TLS tunelem). Všechny požadavky pro cizí realmy jsou pak přesměrovány do tohoto tunelu. Pro samotný tunel zde používáme ten samý certifikát jako pro PEAP protokol, jsou [[cs:spravce:pripojovani:serverove_certifikaty|akceptovány certifikáty]] od několika málo CA.+Samotný RADIUS protokol se nepovažuje za bezpečný, proto je komunikace mezi RADIUSy transportována RadSec protokolem (TLS tunelem). Všechny požadavky pro cizí realmy jsou pak přesměrovány do tohoto tunelu. Pro samotný tunel zde používáme ten samý certifikát jako pro PEAP protokol, jsou [[cs:spravce:pripojovani:serverove_certifikaty|akceptovány certifikáty]] od této CA.
  
 RadSec tunel používá dvě TCP spojení: RadSec tunel používá dvě TCP spojení:
-<file>+<code ini>
 <národní_radius> → <lokální_radius>:2083 <národní_radius> → <lokální_radius>:2083
-<lokalní_radius> → <národní_radius>:2083  +<lokalní_radius> → <národní_radius>:2083 
-</file>+</code>
  
 === Aktivace radsec protokolu ve FR3 === === Aktivace radsec protokolu ve FR3 ===
-<file+<code bash
-ln -s /etc/freeradius/sites-available/tls /etc/freeradius/sites-enabled/tls +ln -s /etc/freeradius/3.0/sites-available/tls /etc/freeradius/3.0/sites-enabled/tls 
-</file>+</code>
  
-Upravte soubor ''/etc/freeradius/sites-available/tls'' pro komunikaci mezi naším a národním RADIUS serverem. Pro obě výše zmíněná TCP spojení použijeme stejný certifikát, a proto bude certifikát v souboru zmíněn dvakrát. Poprvé v sekci ''listen'' (příchozí spojení od národního serveru) a podruhé v sekci ''home_server tls''. Na rozdíl od PEAP (zmíně výše) je zde potřeba pro ''ca_file'' uvést soubor [[https://pki.cesnet.cz/certs/chain_CESNET_CA3.pem|chain_CESNET_CA3.pem]], který získáte na adrese [[https://pki.cesnet.cz/cs/ch-cca-crt-crl.html|https://pki.cesnet.cz/]], protože obsahuje veřejné klíče, pomocí kterých bude náš server ověřovat certifikát protistrany (tj. národního RADIUS serveru), který je podepsán právě autoritou CESNET_CA3.+Upravte soubor ''/etc/freeradius/3.0/sites-available/tls'' pro komunikaci mezi vaším serverem a servery národního RADIUSu. Pro oba druhy výše zmíněných TCP spojení použijeme stejný certifikát, a proto bude certifikát v souboru zmíněn několikrát. Poprvé v sekci ''listen'' (příchozí spojení od serverů národního RADIUSu) a podruhé v sekci ''home_server tls''. Na rozdíl od PEAP (zmíně výše) je zde potřeba pro ''ca_file'' uvést soubor [[https://www.edupki.org/fileadmin/Documents/edupki-root-ca-cert.pem|edupki-root-ca-cert.pem]], který získáte na adrese [[https://www.edupki.org/edupki-ca/policies-root-certificate-crl-ocsp|https://www.edupki.org/]], protože servery národního RADIUSu využívají certifikáty podepsané právě touto CA.
  
-Definice cerifikátů pro naslouchání na lokálním portu 2083: +Definice cerifikátů pro naslouchání na lokálním portu 2083:\\ 
- +<code ini>
-<file>+
 listen { listen {
 +        #pokud budete chtit pro komunikaci s narodnim RADIUSem pouzit IPv6, zmente ipaddr z "*" na "::"
 +        ipaddr = *
 ... ...
-         tls { +        clients = flr.eduroam.cz
-                   private_key_file = <soubor_klicem> +
-                   certificate_file = <soubor_s_certifikatem> +
-                   ca_file          = ${cadir}/chain_CESNET_CA3.pem +
-                   ... +
-         +
-+
-</file> +
- +
-Nadefinujte klienta národního RADIUS serveru v sekci  +
-<file> +
-clients radsec {   +
-         client radius1.eduroam.cz {    +
-                  ipaddr = 195.113.187.22  +
-                  proto = tls              +
-                  secret = radsec       +
-                           +
 ... ...
-+        limit 
-</file> +                max_connections 48 
- +                lifetime        0 
-V této konfiguraci se historicky může vyskytovat sdílené tajemství ''secret = mysecret''. Veškeré nové instalace používají ''secret = radsec''. Správné tajemství pro váš server naleznete v [[https://caas.cesnet.cz/caas|CAAS]] (položka "Inf. RADIUS1 secret"). V případě, že provádíte rekonfiguraci starší instalace RADIUS serveru se sdíleným tajemstvím ''secret = mysecret'', požádejte o změnu sdíleného tajemství v naší konfiguraci na novější variantu. +                idle_timeout    600 
- +        }
-Definice certifikátů pro klienta národního RADIUS serveru, kterého přiřaďte k RadSec tunelu (podruhé použití zmíněných klíčů a ca_file) a upravte parametry tak aby nadřazený RADIUS nemohl být označen jako nefunkční: +
-<file> +
-home_server tls +
-        ipaddr radius1.eduroam.cz +
-         +
-        response_timeouts 1000 +
-        response_window 30 +
-        zombie_period = 120 +
-        revive_interval = 60 +
- +
-        port = 2083 +
-        type = auth +
-        secret = radsec +
-        proto = tcp +
-        status_check = none +
-        tls { +
-                   private_key_file = <soubor_klicem> +
-                   certificate_file = <soubor_s_certifikatem> +
-                   ca_file          = ${cadir}/chain_CESNET_CA3.pem +
-                   ... +
-         }+
 ... ...
 +        tls {
 +                private_key_file = ${cadir}/radius.key
 +                certificate_file = ${cadir}/radius.crt
 +                ca_file          = ${cadir}/edupki-root-ca-cert.pem
 +                ...
 +                tls_min_version = "1.2"
 +                tls_max_version = "1.3"
 +        }
 } }
-</file>+</code>
  
 +Nadefinujte klienty národních RADIUS serverů:
 +<code ini>
 +clients flr.eduroam.cz {
 +        client flr1.eduroam.cz {
 +                ipaddr = 78.128.248.10
 +                #ipaddr = 2001:718:ff05:aca::1:10
 +                proto  = tls
 +                secret = radsec
  
-=== Bug: Fail to read multiple packets from an SSL session. ===+                limit { 
 +                        max_connections 16 
 +                        lifetime        
 +                        idle_timeout    600 
 +                } 
 +        }
  
-Všechny verze FreeRADIUSu >=3.0 & <3.0.16 mají chybu kdy nejsou schopny přečíst z TCP socketu víc než jeden UDP paket, to vede k tomu že se autentizace roamujících uživatelů zpomalí případně zcela znemožníJe to dobře vidět na [[https://ermon.cesnet.cz/matrix/|matici dostupnosti]] - instituce které s tímto mají problém mají ve svislém sloupci rozházené červené, žluté čtverečky místo jednolité zelené.+        client flr2.eduroam.cz { 
 +                ipaddr = 78.128.248.11 
 +                #ipaddr = 2001:718:ff05:aca::1:11 
 +                proto  = tls 
 +                secret = radsec
  
-Správným řešením je nasazení patchnuté verze ({{:cs:spravce:pripojovani:radius:read-multiple-packet-from-radsec.patch.zip|}}).+                limit { 
 +                        max_connections = 16 
 +                        lifetime        = 0 
 +                        idle_timeout    = 600 
 +                } 
 +        }
  
-Malé instituce mohou vystačit se snížením [[https://github.com/CESNET/ansible-freeradius/blob/master/templates/tls.j2#L49|lifetime]] z nekonečna na 600s v souboru ''sites-enabled/tls.conf''.+        client flr3.eduroam.cz { 
 +                ipaddr = 78.128.248.12 
 +                #ipaddr = 2001:718:ff05:aca::1:12 
 +                proto  = tls 
 +                secret = radsec
  
-**Debian Stretch**: Vyplněný [[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=880913|bugreport #880913]], čeká na vydání verze 3.0.16. +                limit { 
 +                        max_connections = 16 
 +                        lifetime        = 0 
 +                        idle_timeout    = 600 
 +                } 
 +        } 
 +
 +</code>
  
-**Debian Jessie**CESNETem provozovaný [[https://aaiwiki.cesnet.cz/deb/jessie/|repositář]] obsahuje opravenu verzi.+Na konci souboru nadefinujte servery národního RADIUSu, na které je možné posílat Access-Requesty návštěvníků. 
 +<code ini> 
 +home_server flr1.eduroam.cz { 
 +        ipaddr       = 78.128.248.10 
 +        #ipaddr       = 2001:718:ff05:aca::1:10 
 +        port         = 2083 
 +        type         = auth 
 +        secret       = radsec 
 +        proto        = tcp 
 +        status_check = none 
 +        tls { 
 +                private_key_file = ${cadir}/radius.key 
 +                certificate_file = ${cadir}/radius.crt 
 +                ca_file          = ${cadir}/edupki-root-ca-cert.pem 
 +                tls_min_version  = "1.2" 
 +                tls_max_version  = "1.3" 
 +                fragment_size    = "8192" 
 +        } 
 +}
  
-**RHEL**: Vyplněný [[https://bugzilla.redhat.com/show_bug.cgi?id=1630684|bug 1630684]]Je k dispozici balíček od Petra Vaníčka2e4897aabc0cce34f8ad5bda53f974149c08bc3d1ea6c9c8b05c9e59143a0878 [[http://pva.utia.cas.cz/freeradius-3.0.13tlspatch.tar.gz|freeradius-3.0.13tlspatch.tar.gz]]+home_server flr2.eduroam.cz { 
 +        ipaddr       78.128.248.11 
 +        #ipaddr       = 2001:718:ff05:aca::1:11 
 +        port         = 2083 
 +        type         = auth 
 +        secret       = radsec 
 +        proto        = tcp 
 +        status_check = none 
 +        tls { 
 +                private_key_file = ${cadir}/radius.key 
 +                certificate_file = ${cadir}/radius.crt 
 +                ca_file          = ${cadir}/edupki-root-ca-cert.pem 
 +                tls_min_version  = "1.2" 
 +                tls_max_version  = "1.3" 
 +                fragment_size    = "8192" 
 +        } 
 +}
  
-Diskuze v listu [[https://random.cesnet.cz/mailman/private/eduroam-admin/2017-November/001382.html|eduroam-admin]]+home_server flr3.eduroam.cz 
- +        ipaddr       = 78.128.248.12 
-=== Bug: inbound RADIUS/TLS connection stalls ===  +        #ipaddr       = 2001:718:ff05:aca::1:12 
- +        port         2083 
-**Nepoužívejte verzi 3.0.17** má chybu [[https://github.com/FreeRADIUS/freeradius-server/issues/2270|inbound RADIUS/TLS connection stalls]] projevuje se to hláškami v logu:+        type         auth 
 +        secret       radsec 
 +        proto        tcp 
 +        status_check none 
 +        tls { 
 +                private_key_file = ${cadir}/radius.key 
 +                certificate_file = ${cadir}/radius.crt 
 +                ca_file          = ${cadir}/edupki-root-ca-cert.pem 
 +                tls_min_version  = "1.2" 
 +                tls_max_version  = "1.3" 
 +                fragment_size    = "8192" 
 +        } 
 +}
  
-<code> +home_server_pool flr.eduroam.cz { 
-(0) Failed writing 0 bytes to SSL BIO: -1 +        type        = "keyed-balance" 
-(0) Application data status 4+        home_server = "flr1.eduroam.cz" 
 +        home_server = "flr2.eduroam.cz" 
 +        home_server = "flr3.eduroam.cz" 
 +}
 </code> </code>
  
-Na základě [[https://random.cesnet.cz/mailman/private/eduroam-admin/2019-July/002654.html|experimetnů]] se zdá že Debian Buster má upravenou verzi, která tímto problémem netrpí.+==== Nastavení Load-Balance-Key ====
  
-==== Přiřazení konkrétní VLAN návštěvníkům ====+Možná jste si všimli, že v sekci "home_server_pool flr.eduroam.cz" v konfiguraci radsecu je definovaná volba "type" s hodnotou "keyed-balance". Ta zajistí, že budou požadavky na národní RADIUSy rozkládány mezi všechny jednotlivé servery. K tomu aby tato funkcionalita pracovala správně, je třeba ještě tato úprava v souboru ''/etc/freeradius/3.0/sites-available/default'':
  
-V souboru ''sites-enabled/default'' v sekci ''post-proxy'' uveďte přiřazení VLAN, číslo 200 nahraďte vaším požadovaným číslem VLAN: +<code ini
- +authorize 
-<file+.. 
-post-proxy +        update 
-... +                control:Load-Balance-Key := &Calling-Station-ID
-        if ("%{proxy-reply:Packet-Type}" == "Access-Accept"+
-                update proxy-reply { +
-                        Tunnel-Type := VLAN +
-                        Tunnel-Medium-Type := IEEE-802 +
-                        Tunnel-Private-Group-Id := 200 +
-                }+
         }         }
-... +.. 
-</file>+} 
 +</code>
  
 ==== Konfigurace Operator-Name ==== ==== Konfigurace Operator-Name ====
  
 Attribut ''Operator-Name'' slouží k indentifikaci SP odkud pochází požadavky na autentizaci uživatelů. V souboru  Attribut ''Operator-Name'' slouží k indentifikaci SP odkud pochází požadavky na autentizaci uživatelů. V souboru 
-''/etc/freeradius/sites-available/default'' odkomentujte volání funkce ''operator-name'':+''/etc/freeradius/3.0/sites-available/default'' odkomentujte volání funkce ''operator-name'':
    
-<file>+<code ini>
 authorize { authorize {
 .. ..
Řádek 356: Řádek 386:
 .. ..
 } }
-</file>+</code>
  
 Dále je třeba správně nakonfigurovat posílání atributu ''​Operator-Name'' ​u každého klienta ​vašeho RADIUS serveru ​v [[https://www.eduroam.cz/cs/spravce/pripojovani/radius/freeradius3#definice_ap_klientu|souboru clients.conf]]. Dále je třeba správně nakonfigurovat posílání atributu ''​Operator-Name'' ​u každého klienta ​vašeho RADIUS serveru ​v [[https://www.eduroam.cz/cs/spravce/pripojovani/radius/freeradius3#definice_ap_klientu|souboru clients.conf]].
Řádek 363: Řádek 393:
 Chargeable-User-Identity (CUI) je vypočítaný atribut, který se počítá jako SHA1 hash z vnitřní EAP identity, hodnoty atributu Operator-Name který posílá SP a soli. Uživatel nedovede hodnotu CUI změnit a tak má SP k dispozici unikátní identitikátor pro případné blokování uživatele. Současně ale SP různých organizací (podle hodnoty Operator-Name) dostávají různé hodnoty CUI pro jednoho uživatele a není tak narušeno soukromí uživatele. Chargeable-User-Identity (CUI) je vypočítaný atribut, který se počítá jako SHA1 hash z vnitřní EAP identity, hodnoty atributu Operator-Name který posílá SP a soli. Uživatel nedovede hodnotu CUI změnit a tak má SP k dispozici unikátní identitikátor pro případné blokování uživatele. Současně ale SP různých organizací (podle hodnoty Operator-Name) dostávají různé hodnoty CUI pro jednoho uživatele a není tak narušeno soukromí uživatele.
  
-V souboru ''policy.d/cui'' zvolte náhodný řetězec ''cui_hash_key'' - pokud provozujete v organizaci víc než jeden RADIUS server, tak musí mít oba shodnout hodnotu tak aby oba vaše RADIUS servery poskytovali pro jednoho uživatele tu samou hodnotu CUI. Dále v tom samém souboru nastavte ''cui_require_operator_name = yes'', tím zajistíte že CUI bude váš RADIUS posílat pouze těm SP, kteří vyplňují Operator-Name.+V souboru ''policy.d/cui'' zvolte náhodný řetězec ''cui_hash_key'' - pokud provozujete v organizaci více RADIUS serverů, musí mít všechny tuto hodnotu shodnout, aby poskytovali pro jednoho uživatele tu samou hodnotu CUI. Dále v tom samém souboru nastavte ''cui_require_operator_name = yes'', tím zajistíte že CUI bude váš RADIUS posílat pouze těm SP, kteří vyplňují Operator-Name.
  
 Aktivujte modul CUI: Aktivujte modul CUI:
  
-<file+<code bash
-cd /etc/freeradius/mods-enabled+cd /etc/freeradius/3.0/mods-enabled
 ln -s ../mods-available/cui . ln -s ../mods-available/cui .
-</file>+</code>
  
-V souboru ''/etc/freeradius/sites-enabled/inner-tunnel'' aktivujte ''cui-inner'':+V souboru ''/etc/freeradius/3.0/sites-enabled/inner-tunnel'' aktivujte ''cui-inner'':
  
-<file>+<code ini>
 post-auth { post-auth {
  cui-inner  cui-inner
 ... ...
-</file>+</code>
  
-V souboru ''/etc/freeradius/sites-enabled/default'' aktivujte ''cui'':+V souboru ''/etc/freeradius/3.0/sites-enabled/default'' aktivujte ''cui'':
  
-<file>+<code ini>
 authorize { authorize {
 ... ...
Řádek 402: Řádek 432:
         cui         cui
 ... ...
-</file>+</code>
  
-Pokud máte k dispozici více ruzných realmů (realm1.cz a realm2.cz), které sdílí uživatelské účty, je nutné, aby pro libovolné uživatelské jméno byla hodnota cui stejná pro včechny realmy. Docílíte toho následující konfigurací. V souboru ''/etc/freeradius/policy.d/cui'' změňte definici proměnné ''&Chargeable-User-Identity'' v bloku ''cui.post-auth'':+Pokud máte k dispozici více ruzných realmů (realm1.cz a realm2.cz), které sdílí uživatelské účty, je nutné, aby pro libovolné uživatelské jméno byla hodnota cui stejná pro včechny realmy. Docílíte toho následující konfigurací. V souboru ''/etc/freeradius/3.0/policy.d/cui'' změňte definici proměnné ''&Chargeable-User-Identity'' v bloku ''cui.post-auth'':
  
-<file>+<code ini>
 cui.post-auth { cui.post-auth {
         if (!&control:Proxy-To-Realm && &Chargeable-User-Identity && !&reply:Chargeable-User-Identity && \         if (!&control:Proxy-To-Realm && &Chargeable-User-Identity && !&reply:Chargeable-User-Identity && \
Řádek 414: Řádek 444:
                 }                 }
         }         }
-</file+</code> 
- + 
 +==== Přiřazení konkrétní VLAN návštěvníkům ==== 
 + 
 +V souboru ''sites-enabled/default'' v sekci ''post-proxy'' uveďte přiřazení VLAN, číslo 200 nahraďte vaším požadovaným číslem VLAN: 
 + 
 +<code ini> 
 +post-proxy { 
 +... 
 +        if ("%{proxy-reply:Packet-Type}" == "Access-Accept") { 
 +                update proxy-reply { 
 +                        Tunnel-Type := VLAN 
 +                        Tunnel-Medium-Type := IEEE-802 
 +                        Tunnel-Private-Group-Id := 200 
 +                } 
 +        } 
 +... 
 +</code
 ==== Normalizace MAC adres ====  ==== Normalizace MAC adres ==== 
  
-Formáty adres můžou být různé - pro zjednodušení můžeme využít normalizaci MAC adres na jediný formát, se kterým budeme následně adresy porovnávat. Přidáme definici normalizace (volání fce ''rewrite_calling_station_id'') do souboru ''/etc/freeradius/sites-enabled/default'' do sekcí authorize a preacct:+Formáty adres můžou být různé - pro zjednodušení můžeme využít normalizaci MAC adres na jediný formát, se kterým budeme následně adresy porovnávat. Přidáme definici normalizace (volání fce ''rewrite_calling_station_id'') do souboru ''/etc/freeradius/3.0/sites-enabled/default'' do sekcí authorize a preacct:
  
-<file>+<code ini>
 authorize { authorize {
         filter_eduroam_realms         filter_eduroam_realms
Řádek 435: Řádek 482:
         ...         ...
 } }
-</file>+</code>
  
  
 ==== Konfigurace F-TICKS ====  ==== Konfigurace F-TICKS ==== 
  
-Vytvořte soubor ''/etc/freeradius/mods-available/f_ticks'' s obsahem:+Vytvořte soubor ''/etc/freeradius/3.0/mods-available/f_ticks'' s obsahem:
  
-<file>+<code ini>
 linelog f_ticks { linelog f_ticks {
        filename = syslog        filename = syslog
Řádek 454: Řádek 501:
        }        }
 } }
-</file>+</code>
  
 Aktivujte ho: Aktivujte ho:
  
-<file+<code bash
- cd /etc/freeradius/mods-enabled+ cd /etc/freeradius/3.0/mods-enabled
  ln -s ../mods-available/f_ticks  ln -s ../mods-available/f_ticks
-</file>+</code>
  
-A začněte ho používat v ''/etc/freeradius/sites-available/default'', pokud budete chtít odfiltrovat monitoring tak volejte ''reply_log'' a ''f_ticks'' podmíněně, viz následující sekce.+A začněte ho používat v ''/etc/freeradius/3.0/sites-available/default'', pokud budete chtít odfiltrovat monitoring tak volejte ''reply_log'' a ''f_ticks'' podmíněně, viz následující sekce.
  
-<file>+<code ini>
 post-auth { post-auth {
 .. ..
Řádek 472: Řádek 519:
 .. ..
 } }
-</file>+</code>
  
 ==== Vyloučení monitoringu z detailních logů ==== ==== Vyloučení monitoringu z detailních logů ====
  
-end2end monitoring prováděný nagiosem produkuje relativně dost logů, lze je odfiltrovat v souboru ''/etc/freeradius/sites-available/default''. V sekcích authorize, authenticate, pre-proxy a post-proxy přidejte podmínku, která ermon odfiltruje na základě prefixu MAC adresy kterou používá. Tj. z explicitního logování se stane logování podmíněné v případě že se jedná o monitoring, např:+end2end monitoring prováděný nagiosem produkuje relativně dost logů, lze je odfiltrovat v souboru ''/etc/freeradius/3.0/sites-available/default''. V sekcích authorize, authenticate, pre-proxy a post-proxy přidejte podmínku, která ermon odfiltruje na základě prefixu MAC adresy kterou používá. Tj. z explicitního logování se stane logování podmíněné v případě že se jedná o monitoring, např:
  
-<file>+<code ini>
 .. ..
 authorize { authorize {
Řádek 522: Řádek 569:
 } }
  
-</file>+</code>
 ==== Lokální testovací účet pro monitoring eduroam ==== ==== Lokální testovací účet pro monitoring eduroam ====
  
-Přidejte klienta, ze kterého probíhá testování. Do souboru ''/etc/freeradius/clients.conf'' přidejte sekci: +Přidejte klienta, ze kterého probíhá testování. Do souboru ''/etc/freeradius/3.0/clients.conf'' přidejte sekci: 
-<file+<code ini
-client ermon.cesnet.cz { +client monitoring.eduroam.cz { 
-        ipaddr = 195.113.233.246 +        ipaddr        78.128.248.234 
-        secret = <sdilene_heslo> +        #ipaddr        = 2001:718:ff05:10b::234 
-        shortname = ermon +        secret        = <sdilene_heslo> 
-        add_cui = no+        shortname     monitoring 
 +        add_cui       = no
         Operator-Name = 1<realm.cz>         Operator-Name = 1<realm.cz>
 } }
-</file>+</code>
  
-Vždy uveďte znak ''1'' před vaším realmem, více informací viz [[https://tools.ietf.org/html/rfc5580#page-12|RFC5580]]. Uvádějte váš realm, ermon simuluje další z AP ve vaší WiFi síti.+Vždy uveďte znak ''1'' před vaším realmem (příklad: ''1cesnet.cz''), více informací viz [[https://tools.ietf.org/html/rfc5580#page-12|RFC5580]]. Uvádějte váš realm, ermon simuluje další z AP ve vaší WiFi síti.
  
-Správce instituce získá ''sdilene_heslo'' po přihlášení do [[https://caas2.cesnet.cz/caas/hradmin|CAAS:hradmin]] vyhledáním svého RADIUS serveru (položka "Mon. RADIUS1 secret").+Správce instituce získá ''sdilene_heslo'' po přihlášení do [[https://admin.eduroam.cz/|administrativní aplikace]] u detailu svého RADIUS serveru (položka "Sdílené tajemství pro monitoring").
  
-V souboru ''/etc/freeradius/users'' vytvořte lokální testovací účet. U tohoto účtu nastavte atributy tak, aby síťový prvek (bezdrátový bod, přepínač) nasměroval klienta do VLAN 666. Ta by v české části eduroam neměla nikam vést, tudíž nejsou testovací účty zneužitelné pro běžné připojení: +V souboru ''/etc/freeradius/3.0/users'' vytvořte lokální testovací účet. U tohoto účtu nastavte atributy tak, aby síťový prvek (bezdrátový bod, přepínač) nasměroval klienta do VLAN 666. Ta by v české části eduroam neměla nikam vést, tudíž nejsou testovací účty zneužitelné pro běžné připojení: 
-<file>+<code ini>
 <test_ucet> Cleartext-Password := "test_heslo" <test_ucet> Cleartext-Password := "test_heslo"
         Tunnel-Type = VLAN,         Tunnel-Type = VLAN,
Řádek 547: Řádek 595:
         Tunnel-Medium-Type = IEEE-802,         Tunnel-Medium-Type = IEEE-802,
         Fall-Through = Yes         Fall-Through = Yes
-</file>+</code>
  
 Pokud nechcete uložit heslo v nešifrované podobě, tak nahraďte atribut ''Cleartext-Password'' atributem ''NT-Password'' a heslo zašifrujte příkazem ''smbencrypt'' (na Debianu je součástí freeradius-utils). Pokud nechcete uložit heslo v nešifrované podobě, tak nahraďte atribut ''Cleartext-Password'' atributem ''NT-Password'' a heslo zašifrujte příkazem ''smbencrypt'' (na Debianu je součástí freeradius-utils).
  
-V souvislosti s testovacími účty potřebujete zajistit filtrování VLAN atributů z cizích institucí tak, aby hosté ve vaší síti padali do vámi nastavené VLAN. Následující úprava souboru ''/etc/freeradius/mods-config/attr_filter/post-proxy'' zajistí, že atribut s VLAN 666 bude propuštěn a ostatní VLANy budou odfiltrovány. V sekci DEFAULT na konci souboru přidejte: +V souvislosti s testovacími účty potřebujete zajistit filtrování VLAN atributů z cizích institucí tak, aby hosté ve vaší síti padali do vámi nastavené VLAN. Následující úprava souboru ''/etc/freeradius/3.0/mods-config/attr_filter/post-proxy'' zajistí, že atribut s VLAN 666 bude propuštěn a ostatní VLANy budou odfiltrovány. V sekci DEFAULT na konci souboru přidejte: 
-<file>+<code ini>
         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
  
-</file>+</code>
  
 Celý soubor je ke stažení na adrese: [[https://raw.githubusercontent.com/CESNET/ansible-freeradius/master/files/post-proxy]] Celý soubor je ke stažení na adrese: [[https://raw.githubusercontent.com/CESNET/ansible-freeradius/master/files/post-proxy]]
Řádek 565: Řádek 613:
 Funkci FreeRADIUS serveru lze otestovat nástrojem radtest (v souboru ''/etc/raddb/clients.conf'' musí být nadefinován client localhost se sdíleným klíčem testing123): Funkci FreeRADIUS serveru lze otestovat nástrojem radtest (v souboru ''/etc/raddb/clients.conf'' musí být nadefinován client localhost se sdíleným klíčem testing123):
  
-<file>+<code bash>
 radtest <test_ucet>@domaci-realm.cz test_heslo 127.0.0.1 1812 testing123 radtest <test_ucet>@domaci-realm.cz test_heslo 127.0.0.1 1812 testing123
-</file>+</code> 
 + 
 +Tento test zkouší pouze PAP, základní ověření funkce RADIUSu. Kompletní test lze provést pomocí [[https://www.eduroam.cz/cs/spravce/rad_eap_test|rad_eap_test]].
  
 ===== Blokování uživatelů ===== ===== Blokování uživatelů =====
Řádek 575: Řádek 625:
 ==== Blokování podle uživatelského jména ==== ==== Blokování podle uživatelského jména ====
  
-V souboru ''/etc/freeradius/sites-enabled/default'' přidáme do sekce authorize podmínku blokující uživatele. Definice adres musí být umísťena **před** volání modulu eap!+V souboru ''/etc/freeradius/3.0/sites-enabled/default'' přidáme do sekce authorize podmínku blokující uživatele. Definice adres musí být umísťena **před** volání modulu eap!
  
-<file>+<code ini>
   if(User-Name == "problemovy_uzivatel@priklad.cz") {   if(User-Name == "problemovy_uzivatel@priklad.cz") {
           reject  # odmitnuti pozadavku           reject  # odmitnuti pozadavku
Řádek 587: Řádek 637:
           ok = return           ok = return
   }   }
-</file>+</code>
  
  
 ==== Blokování celého realmu ==== ==== Blokování celého realmu ====
  
-V souboru ''/etc/freeradius/sites-enabled/default'' přidáme do sekce authorize podmínku blokující uživatele konkrétního realmu. Definice adres musí být umísťena **před** volání modulu eap!+V souboru ''/etc/freeradius/3.0/sites-enabled/default'' přidáme do sekce authorize podmínku blokující uživatele konkrétního realmu. Definice adres musí být umísťena **před** volání modulu eap!
  
-<file>+<code ini>
   if(User-Name == /^.*@problemovy_realm\.cz/) {   if(User-Name == /^.*@problemovy_realm\.cz/) {
           reject  # odmitnuti pozadavku           reject  # odmitnuti pozadavku
Řádek 604: Řádek 654:
           ok = return           ok = return
   }   }
-</file>+</code>
  
  
Řádek 610: Řádek 660:
 ==== Blokování podle MAC adresy ==== ==== Blokování podle MAC adresy ====
  
-V souboru ''/etc/freeradius/sites-enabled/default'' přidáme do sekce authorize podmínku blokující adresu(y). Definice adres musí být umísťena **před** volání modulu eap! Můžeme blokovat jednu nebo více konkrétních adres, lze využít i regulární výrazy:+V souboru ''/etc/freeradius/3.0/sites-enabled/default'' přidáme do sekce authorize podmínku blokující adresu(y). Definice adres musí být umísťena **před** volání modulu eap! Můžeme blokovat jednu nebo více konkrétních adres, lze využít i regulární výrazy:
  
-<file>+<code ini>
   # blokovani konkretni adresy   # blokovani konkretni adresy
   if (Calling-Station-Id == "12-34-56-78-AB-CD" ) {   if (Calling-Station-Id == "12-34-56-78-AB-CD" ) {
Řádek 628: Řádek 678:
           ok = return           ok = return
   }   }
-</file>+</code>
  
  
 ==== Blokování podle Chargeable-User-Identity ====  ==== Blokování podle Chargeable-User-Identity ==== 
  
-V souboru ''/etc/freeradius/sites-enabled/default'' přidáme do sekce post-proxy podmínku blokující identitu(y). +V souboru ''/etc/freeradius/3.0/sites-enabled/default'' přidáme do sekce post-proxy podmínku blokující identitu(y). 
  
-<file>+<code ini>
 post-proxy { post-proxy {
         if ("%{proxy-reply:Packet-Type}" == "Access-Accept") {         if ("%{proxy-reply:Packet-Type}" == "Access-Accept") {
Řádek 646: Řádek 696:
 ... ...
 } }
-</file>+</code>
  
 Atribut Chargeable-User-Identity konkrétního uživatele je možné dohledat v generovaném F-TICKS logu (hodnota CUI) nebo v reply-detail log souborech. Soubory jsou uloženy v ''/var/log/freeradius/radacct/ip_adresa_protistrany/reply-detail-rok-mesic-den''. V těchto souborech jsou uloženy informace o Access-Accept paketech a jejich atributech, mezi nimiž by se měl vyskytovat právě i Chargeable-User-Identity. Atribut Chargeable-User-Identity konkrétního uživatele je možné dohledat v generovaném F-TICKS logu (hodnota CUI) nebo v reply-detail log souborech. Soubory jsou uloženy v ''/var/log/freeradius/radacct/ip_adresa_protistrany/reply-detail-rok-mesic-den''. V těchto souborech jsou uloženy informace o Access-Accept paketech a jejich atributech, mezi nimiž by se měl vyskytovat právě i Chargeable-User-Identity.
Řádek 655: Řádek 705:
 ==== Když je vše v pořádku ==== ==== Když je vše v pořádku ====
  
-Radius ověřuje požadavky na udp portu 1812 a na tcp portu 2083 přijímá požadavky z národního radiusu+RADIUS ověřuje požadavky na udp portu 1812 a na tcp portu 2083 přijímá požadavky z národního RADIUSu. Ověříme spuštěním příkazu ''netstat -ltupn'' nebo ''ss -ltupn'')
-<file> +<code ini>
-# netstat -ltupn+
 Active Internet connections (only servers) Active Internet connections (only servers)
 Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
Řádek 669: Řádek 718:
 udp        0      0 127.0.0.1:4000          0.0.0.0:                          12137/freeradius udp        0      0 127.0.0.1:4000          0.0.0.0:                          12137/freeradius
 udp        0      0 127.0.0.1:18120         0.0.0.0:                          12137/freeradius udp        0      0 127.0.0.1:18120         0.0.0.0:                          12137/freeradius
-</file>+</code>
  
-V navázaných spojeních jsou dvě RadSec spojení z/na národní radius (spojení z lokálního RADIUS serveru je navázáno až po íchodu požadavku): +V navázaných spojeních jsou RadSec spojení od každého serveru národního RADIUSu a spojení z lokálního RADIUSu (spojení z lokálního RADIUS serveru je navázáno až při předávání požadavku na národní RADIUS). Ověříme spuštěním příkazu ''netstat -t'' nebo ''ss -tr''): 
-<file> +<code ini>
-# netstat -t+
 Active Internet connections (w/o servers) Active Internet connections (w/o servers)
 Proto Recv-Q Send-Q Local Address           Foreign Address         State Proto Recv-Q Send-Q Local Address           Foreign Address         State
-tcp        0      0 radtest.ujep.cz:40569   radius1.eduroam.cz:2083 ESTABLISHED +tcp        0      0 radtest.ujep.cz:40569   flr1.eduroam.cz:2083 ESTABLISHED 
-tcp        0      0 radtest.ujep.cz:2083    radius1.eduroam.c:48895 ESTABLISHED +tcp        0      0 radtest.ujep.cz:43211   flr2.eduroam.cz:2083 ESTABLISHED 
-</file>+tcp        0      0 radtest.ujep.cz:37934   flr3.eduroam.cz:2083 ESTABLISHED 
 +tcp        0      0 radtest.ujep.cz:2083    flr1.eduroam.c:48895 ESTABLISHED 
 +tcp        0      0 radtest.ujep.cz:2083    flr2.eduroam.c:51849 ESTABLISHED 
 +tcp        0      0 radtest.ujep.cz:2083    flr3.eduroam.c:35453 ESTABLISHED 
 +</code>
  
 Přicházejí požadavky a radius vrací "Login OK" Přicházejí požadavky a radius vrací "Login OK"
-<file>+<code bash>
 # tail -f /var/log/freeradius/radius.log # tail -f /var/log/freeradius/radius.log
 (69) Thu Dec  5 21:35:38 2013 : Auth: Login OK: [test@vsb.cz] (from client ermon port 0 cli 70-6F-6C-69-73-68) (69) Thu Dec  5 21:35:38 2013 : Auth: Login OK: [test@vsb.cz] (from client ermon port 0 cli 70-6F-6C-69-73-68)
-</file>+</code>
  
 === Test cizího účtu === === Test cizího účtu ===
-Pokud není vyloučen z logování monitoring, uvidíte v logu průběžné ověřování. Můžete zkusit simulovat dotaz na cizí účet, avšak protože neznáte správné heslo, bude požadavek odmítnut. Akce se hodí pro vyprovokování navázání spojení na národní RADIUS server (např. po restartu lokálního FreeRADIUS serveru):+Pokud není vyloučen z logování monitoring, uvidíte v logu průběžné ověřování. Můžete zkusit simulovat dotaz na cizí účet, avšak protože neznáte správné heslo, bude požadavek odmítnut. Se správným heslem bude požadavek akceptován, ale národní RADIUS tento test zablokuje vyfiltrováním hesla z access-requestu. Akce se hodí pro vyprovokování navázání spojení na národní RADIUS server (např. po restartu lokálního FreeRADIUS serveru):
  
-<file>+<code bash>
 radtest test@vsb.cz HesloNevim 127.0.0.1 1812 testing123 radtest test@vsb.cz HesloNevim 127.0.0.1 1812 testing123
-</file>+</code> 
 + 
 +Pro lepší otestování cizího účtu se hodí [[https://www.eduroam.cz/cs/spravce/rad_eap_test#testovani_na_lokalnim_radius_serveru_s_cizim_uctem_testovacim_uctem|rad_eap_test]].
  
 ===== Napojení na systémy správy identit ===== ===== Napojení na systémy správy identit =====
Řádek 699: Řádek 753:
   * [[:cs:spravce:pripojovani:radius:freeradius3:edirectory|Napojení na Novell eDirectory Server]]   * [[:cs:spravce:pripojovani:radius:freeradius3:edirectory|Napojení na Novell eDirectory Server]]
  
 +===== Dokončení konfigurace ===== 
 +Po dokončení konfigurace je potřeba provést kontrolu syntaxe freeradius 
 +<code bash> 
 +freeradius -XC 
 +</code> 
 +Pokud předchozí akce nenahlásí žádnou chybu je potřeba restartovat démona 
 +<code bash> 
 +/etc/init.d/freeradius restart 
 +</code> 
 +Po těchto krocích by měl fungovat i test účet a po zhruba 10 minutách by se měl rozběhnout i RADSEC
 ===== Kontrola syntaxe konfiguračních souborů ===== ===== Kontrola syntaxe konfiguračních souborů =====
 Kontrolu syntaxe můžete vyvolat přímo pomocí: Kontrolu syntaxe můžete vyvolat přímo pomocí:
  
-<file+<code bash
-radiusd -XC +freeradius -XC 
-</file>+</code>
  
 nebo skriptem: nebo skriptem:
  
-<file>+<code bash>
 /etc/init.d/freeradius configtest /etc/init.d/freeradius configtest
-</file>+</code>
  
  
 ===== Restart démona ===== ===== Restart démona =====
-V systému Debian restartujte démona příkazem:+Restartujte démona příkazem:
  
-<file> +<code bash>
-/etc/init.d/freeradius restart +
-</file> +
- +
-V systému CentOS/RHEL restartujte démona příkazem: +
- +
-<file>+
 systemctl restart radiusd.service systemctl restart radiusd.service
-</file>+</code>
  
 <note tip>Pouhý reload nemusí v některých případech změnit chování démona.</note> <note tip>Pouhý reload nemusí v některých případech změnit chování démona.</note>
Řádek 732: Řádek 789:
  
 Nejdříve si ověřte, že freeradius neběží, a pak spusťte: Nejdříve si ověřte, že freeradius neběží, a pak spusťte:
-<file>+<code bash>
 freeradius -fxx -l stdout freeradius -fxx -l stdout
-</file>+</code>
  
 V případě, že byste potřebovali k debugu přidat aktuální časové údaje, aby bylo jasné, kdy se co dělo, můžete využít příkaz: V případě, že byste potřebovali k debugu přidat aktuální časové údaje, aby bylo jasné, kdy se co dělo, můžete využít příkaz:
-<file>+<code bash>
 freeradius -fxxx -l stdout freeradius -fxxx -l stdout
-</file>+</code>
  
 Pozn. ''/etc/init.d/freeradius debug'' s aktivovaným radsecem nefunguje. Pozn. ''/etc/init.d/freeradius debug'' s aktivovaným radsecem nefunguje.