Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Obě strany předchozí revize Předchozí verze Následující verze | Předchozí verze Následující verze Obě strany příští revize | ||
cs:spravce:pripojovani:radius:freeradius3 [2018/06/26 15:58] jan.tomasek@cesnet.cz |
cs:spravce:pripojovani:radius:freeradius3 [2019/06/13 09:45] jan.tomasek@cesnet.cz [Konfigurace EAP pro ověřování uživatelů] |
||
---|---|---|---|
Řá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íčky, můž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 131: | Řádek 141: | ||
</file> | </file> | ||
- | V souboru ''/etc/freeradius/mods-available/eap'' nastavte vlastní soubory s certifikáty pro PEAP. Zakomentujte ''ca_file'' a ''ca_path'' a změnte defaultní EAP metodu z MD5 na PEAP. | + | V souboru ''/etc/freeradius/mods-available/eap'' nastavte vlastní soubory s certifikáty pro PEAP. Zakomentujte ''ca_file'' a ''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. |
Řá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> | ||