cs:spravce:pripojovani:radius:freeradius3

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 [2018/06/26 15:58]
semik@cesnet.cz
cs:spravce:pripojovani:radius:freeradius3 [2019/02/05 12:39] (aktuální)
semik@cesnet.cz [Stretch]
Řádek 1: Řádek 1:
 ====== Instalace FreeRADIUSu 3.x.x pro eduroam ====== ====== Instalace FreeRADIUSu 3.x.x pro eduroam ======
  
-Tento 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 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.
  
 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]] ​ 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]] ​
  
-===== Vytvoření instalačních balíčků pro Debian =====+===== Debian =====
  
-[[http://​freeradius.org|FreeRADIUS 3.x]] není součástí stabilní verze Debianu, ​proto je nutné ​si stáhnout poslední dostupnou verzi FreeRADIUSu ze stránek projektu, případně zdrojové kódy z gitu.+==== 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]]. 
 + 
 +==== Jessie ==== 
 + 
 +[[http://​freeradius.org|FreeRADIUS 3.x]] není součástí ​stré stabilní verze Debianu
 + 
 +=== CESNETem udržovaný repozitář === 
 + 
 +Pokud nechcete překládat vlastní balíčkymůžete použít CESNETem udržovaný repozitář. 
 + 
 +<​file>​ 
 +deb https://​aaiwiki.cesnet.cz/​deb/​jessie ./ 
 +</​file>​ 
 + 
 +=== Kompilace balíčků === 
 + 
 +Pokud si budete brát zdrojáky z GITu je třeba dát pozor na různé bugy, viz dvě sekce "​Bug:"​ na konci dokumentu.
  
 <​file>​ <​file>​
Řádek 16: Řádek 34:
 </​file>​ </​file>​
  
-==== Příprava prostředí pro překlad ​====+== Příprava prostředí pro překlad ==
  
 <​file>​ <​file>​
Řádek 22: Řádek 40:
 </​file>​ </​file>​
  
-==== Vygenerování balíčků ​====+== Vygenerování balíčků ==
  
 <​file>​ <​file>​
Řádek 37: Řádek 55:
 </​file>​ </​file>​
  
-==== Instalace potřebných balíčků ​====+== Instalace potřebných balíčků ==
  
 <​file>​ <​file>​
 dpkg -i freeradius_3.0.12+git_amd64.deb freeradius-common_3.0.12+git_all.deb freeradius-utils_3.0.12+git_amd64.deb libfreeradius3_3.0.12+git_amd64.deb freeradius-ldap_3.0.12+git_amd64.deb dpkg -i freeradius_3.0.12+git_amd64.deb freeradius-common_3.0.12+git_all.deb freeradius-utils_3.0.12+git_amd64.deb libfreeradius3_3.0.12+git_amd64.deb freeradius-ldap_3.0.12+git_amd64.deb
-</​file>​ 
- 
-==== CESNETem udržovaný repozitář ==== 
- 
-Pokud nechcete překládat vlastní balíčky, můžete použít CESNETem udržovaný repozitář. 
- 
-<​file>​ 
-deb https://​aaiwiki.cesnet.cz/​deb/​jessie ./ 
 </​file>​ </​file>​
  
Řádek 55: Řádek 65:
  
 <​file>​ <​file>​
- yum -y install freeradius freeradius-utils+ yum -y install freeradius freeradius-utils ​freeradius-sqlite
 </​file>​ </​file>​
  
Řádek 172: Řádek 182:
 filter_inner_identity { filter_inner_identity {
 ... ...
-                ​if (&​outer.request:​User-Name =~ /​@([^@]+)$/​) { + if (&​outer.request:​User-Name != &​User-Name) { 
-                        update request { +
-                                Outer-Realm-Name = "​%{1}"​ + #  Get the outer realm. 
-                        }+
 + if (&​outer.request:​User-Name =~ /​@([^@]+)$/​) { 
 + update request { 
 + Outer-Realm-Name = "​%{1}"​ 
 + }
  
-                        ​+
-                        #  When we have an outer realm name, the user portion + #  When we have an outer realm name, the user portion 
-                        #  MUST either be empty, or begin with "​anon"​. + #  MUST either be empty, or begin with "​anon"​. 
-                        +
-                        #  We don't check for the full "​anonymous",​ because + #  We don't check for the full "​anonymous",​ because 
-                        #  some vendors don't follow the standards. + #  some vendors don't follow the standards. 
-                        +
-                         + if (&​outer.request:​User-Name !~ /​^anonymous@/​) { 
-                        # eduroam.cz: What vendors? + update request { 
- + Module-Failure-Message = "​User-Name is not anonymized"​ 
-                        ​if (&​outer.request:​User-Name !~ /​^anonymous@/​) { +
-                                update request { + reject 
-                                        Module-Failure-Message = "​User-Name is not anonymized"​ +
-                                + }
-                                reject +
-                        }+
 ... ...
 </​file>​ </​file>​
Řádek 226: Řádek 238:
 ==== 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/​defaults'':​+Č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'':​
  
 <​file>​ <​file>​
Řádek 305: Řádek 317:
 </​file>​ </​file>​
  
-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]]. 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.+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.
  
 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í:​ 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í:​
Řádek 339: Řádek 351:
 Správným řešením je nasazení patchnuté verze ({{:​cs:​spravce:​pripojovani:​radius:​read-multiple-packet-from-radsec.patch.zip|}}). Správným řešením je nasazení patchnuté verze ({{:​cs:​spravce:​pripojovani:​radius:​read-multiple-packet-from-radsec.patch.zip|}}).
  
-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 ''​tls.conf''​.+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''​.
  
 **Debian Stretch**: Vyplněný [[https://​bugs.debian.org/​cgi-bin/​bugreport.cgi?​bug=880913|bugreport #880913]], čeká na vydání verze 3.0.16. ​ **Debian Stretch**: Vyplněný [[https://​bugs.debian.org/​cgi-bin/​bugreport.cgi?​bug=880913|bugreport #880913]], čeká na vydání verze 3.0.16. ​
Řádek 345: Řádek 357:
 **Debian Jessie**: CESNETem provozovaný [[https://​aaiwiki.cesnet.cz/​deb/​jessie/​|repositář]] obsahuje opravenu verzi. **Debian Jessie**: CESNETem provozovaný [[https://​aaiwiki.cesnet.cz/​deb/​jessie/​|repositář]] obsahuje opravenu verzi.
  
-**RHEL**: Je k dispozici balíček od Petra Vaníčka: 2e4897aabc0cce34f8ad5bda53f974149c08bc3d1ea6c9c8b05c9e59143a0878 [[http://​pva.utia.cas.cz/​freeradius-3.0.13tlspatch.tar.gz|freeradius-3.0.13tlspatch.tar.gz]]+**RHEL**: ​Vyplněný [[https://​bugzilla.redhat.com/​show_bug.cgi?​id=1630684|bug 1630684]]. ​Je k dispozici balíček od Petra Vaníčka: 2e4897aabc0cce34f8ad5bda53f974149c08bc3d1ea6c9c8b05c9e59143a0878 [[http://​pva.utia.cas.cz/​freeradius-3.0.13tlspatch.tar.gz|freeradius-3.0.13tlspatch.tar.gz]]
  
 Diskuze v listu [[https://​random.cesnet.cz/​pipermail/​eduroam-admin/​2017-November/​001382.html|eduroam-admin]]. Diskuze v listu [[https://​random.cesnet.cz/​pipermail/​eduroam-admin/​2017-November/​001382.html|eduroam-admin]].
 +
 +=== Bug: inbound RADIUS/TLS connection stalls === 
 +
 +**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:
 +
 +<​code>​
 +(0) Failed writing 0 bytes to SSL BIO: -1
 +(0) Application data status 4
 +</​code>​
 ==== Přiřazení konkrétní VLAN návštěvníkům ==== ==== Přiřazení konkrétní VLAN návštěvníkům ====
  
Řádek 438: Řádek 459:
 ==== 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 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/​sites-enabled/​default''​ do sekcí authorize a preacct:
  
 <​file>​ <​file>​
Řádek 483: Řádek 504:
 </​file>​ </​file>​
  
-A začněte ho používat v ''/​etc/​freeradius/​sites-available/​default'' ​+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.
  
 <​file>​ <​file>​
Řádek 503: Řádek 524:
 .. ..
   # exclude monitoring records from auth_logs   # exclude monitoring records from auth_logs
-  if (Calling-Station-Id !~ /^70-6F-6C-69-/) {+  if (Calling-Station-Id !~ /^70-6F-6C-6/) {
      ​auth_log      ​auth_log
   }   }
Řádek 516: Řádek 537:
     }     }
     # record access-chalenge & exclude monitoring records from log     # record access-chalenge & exclude monitoring records from log
-    if (handled && Calling-Station-Id !~ /^70-6F-6C-69-/) {+    if (handled && Calling-Station-Id !~ /^70-6F-6C-6/) {
       reply_log.post-auth       reply_log.post-auth
       handled ​ # override rcode (maybe superfluous)       handled ​ # override rcode (maybe superfluous)
Řádek 527: Řádek 548:
 .. ..
   # exclude monitoring records from logs   # exclude monitoring records from logs
-  if (Calling-Station-Id !~ /^70-6F-6C-69-/) {+  if (Calling-Station-Id !~ /^70-6F-6C-6/) {
      ​reply_log      ​reply_log
      ​f_ticks      ​f_ticks
Řádek 537: Řádek 558:
 .. ..
  # exclude monitoring from log  # exclude monitoring from log
- if (Calling-Station-Id !~ /^70-6F-6C-69-/) {+ if (Calling-Station-Id !~ /^70-6F-6C-6/) {
     pre_proxy_log     pre_proxy_log
  }  }
Řádek 558: Řádek 579:
 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, 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.+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"​).
  
 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/​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í:​
Řádek 648: Řádek 669:
           ok = return           ok = return
   }   }
-</​file>​ 
- 
-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 do souboru ''/​etc/​freeradius/​sites-enabled/​default''​ do sekcí authorize a preacct: 
- 
-<​file>​ 
-authorize { 
-        filter_eduroam_realms 
-        filter_username 
-        rewrite_calling_station_id 
-        ... 
-} 
- 
-... 
- 
-preacct { 
-        preprocess 
-        rewrite_calling_station_id 
-        ... 
-} 
 </​file>​ </​file>​
  
Poslední úprava:: 2018/06/26 15:58