cs:spravce:pripojovani:radius:freeradius

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

cs:spravce:pripojovani:radius:freeradius [2009/12/02 10:28] (current)
Line 1: Line 1:
 +<box 50% red>
  
 +Pro nové instalace používejte výhradně [[cs:​spravce:​pripojovani:​radius:​freeradius2|freeRADIUS 2]].
 +
 +</​box>​
 +
 +<box 50% orange>
 +
 +Pro korektní podporu uživatelů s MS Windows Vista je nutné provozovat freeRadius o verzi minimálně 1.1.4.
 +
 +</​box>​
 +
 +<box 50% orange>
 +Tento dokument je nekompletní,​ pokud byste chtěli pomoci, tak pomoc je
 +[[:​cs:​kontakty#​Ing. Jan Tomášek| vítána]].
 +
 +Prozatím je k dispozici {{:​cs:​spravce:​pripojovani:​radius:​freeradius:​freeradius-2005.02.27.tgz|konfigurace}} z FEL ČVUT z 27. února 2005. 
 +</​box>​
 +
 +====== Konfigurace FreeRadiusu pro připojení k eduroamu ======
 +
 +K pochopení obsahu tohoto dukumentu byste měli vědět, [[spravce:​uvod|jak roaming funguje]], a také byste měli 
 +mít základní představu o [[spravce:​RADIUS protokol|RADIUS protokolu]].
 +
 +===== Získání software =====
 +
 +[[http://​www.freeradius.org/​|FreeRadius]] je k dispozici zdarma jako Open Source software. Je určen primárně pro UNIXové systémy, ale na stránce [[http://​www.freeradius.net/​|www.freeradius.net]] jsou k dispozici i binárky pro MS Windows. V tomto návodu se budu zabývat Linuxovou verzí.
 +
 +Je dost pravděpodobné,​ že pro Vaši distribuci jsou připraveny předkompilované balíčky, před jejich použitím si ale zkontrolujte,​ zda máte k dispozici knihovnu rlm_eap_tls.so,​ ta je k nezbytná pro ověřování klientů pomocí 802.1x. Např. v unstable Debian v balíku verze 1.1.2-2 tuto knihovnu nemají.
 +
 +
 +===== Konfigurace =====
 +
 +Konfiguraci FreeRadiusu komplikuje architektura tohoto produktu (např. authorizace se řeší před autentizací),​ velké množství konfiguračních souborů je nepřehledné díky velkému množství komentářů,​ které často nahrazují dokumentaci. Konfigurační soubory najdeme v adresáři **/​etc/​raddb** nebo **/​etc/​freeradius**.
 +
 +Smažte zbytečné soubory: **naslist**,​ **realms**
 +
 +
 +
 +
 +
 +==== proxy.conf =====
 +
 +Teto soubor definuje, jak se FreeRadius bude chovat k
 +jednotlivým realmům. Nejprve jsou nastaveny parametry
 +samotného proxy serveru.
 +
 +<​xterm>​
 +proxy server {
 + synchronous = no
 + retry_delay = 5
 + retry_count = 2
 + dead_time ​ = 0
 + default_fallback = yes
 + post_proxy_authorize = no
 +}
 +</​xterm>​
 +
 +Někteří uživatelé se přihlašují jen pomocí uživatelského jména bez realmu. To jim sice "​doma"​ může fungovat, ale pokud by chtěli využít roamingu, budou muset měnit konfiguraci svého počítače,​ na což pravděpodobně nebudou připraveni. Proto důrazně doporučuji uživatelům znemožnit přihlašování bez realmu. K odchycení Access-Requestů bez realmu slouží definice ''​realm NULL { ... }''​. Dotazy bez realmu se potom zakáží v souboru ''​users''​.
 +
 +<​xterm>​
 +realm NULL {
 + }
 +</​xterm>​
 +
 +Následuje definice lokálních (domácích realmů). Nahraďte ''​example.com''​ Vaším realmem. V případě, že Váš server má obsluhovat několik realmů, tak tuto sekci několikrát zopakujte.
 +
 +<​xterm>​
 +realm **example.com** {
 + type = radius
 + authhost = LOCAL
 + accthost = LOCAL
 +}
 +</​xterm>​
 +
 +Definice ''​realm DEFAULT { ... }''​ zajištují předání Access-Request paketů návštěvníků na národní RADIUS servery. Nahraďte **xxx** u parametru ''​secret''​ hodnotami, které Vám byly přiděleny.
 +
 +<​xterm>​
 +realm DEFAULT {
 +        type            = radius
 +        authhost ​       = radius1.eduroam.cz:​1812
 +        accthost ​       = radius1.eduroam.cz:​1813
 +        secret ​         = **xxx**
 +        nostrip
 +}
 +</​xterm>​
 +
 +==== clients.conf =====
 +V tomto souboru definujete klienty, kteří se mohou k Vašemu RADIUSu připojit. ​
 +
 +<​xterm>​
 +client **ap1.example.com** {
 + secret ​         = **secret4ap1**
 + shortname ​      = **ap1**
 +}
 +.
 +.
 +client **apN.example.com** {
 + secret ​         = **secret4apN**
 + shortname ​      = **apN**
 +}
 +</​xterm>​
 +
 +V okamžiku, kdy Vaši uživatelé využijí roamingu, stanou se klienty NREN RADIUS serverů.
 +
 +<​xterm>​
 +client radius1.eduroam.cz {
 + secret = **xxx**
 + shortname = radius1edu
 +}
 +</​xterm>​
 +
 +Dalším speciálním klientem je monitoring.
 +
 +<​xterm>​
 +client ermon.cesnet.cz {
 + secret = **xxx**
 + shortname = ermon
 +}
 +</​xterm>​
 +
 +====users====
 +Tento soubor definuje staticky konfigurované uživatele. Dále např. specifikuje jak zacházet s jednotlivými realmy. Obecně mění hodnoty jednotlivých atributů na základě vstupních hodnot jiných atributů, nebo svých vlastních.
 +Nejprve odmítneme uživatelé bez realmu.
 +<​xterm>​
 +DEFAULT Realm == NULL, Auth-Type := Reject
 +</​xterm> ​
 +
 +Tohle by mělo zabezpečit,​ aby se v účtování objevilo skutečné uživatelské jméno, a ne třeba anonymous@myabc.com
 +<​xterm>​
 +DEFAULT ​ Freeradius-Proxied-To == 127.0.0.1
 +   ​User-Name = `%{User-Name}`,​
 +   ​Fall-Through = Yes
 +</​xterm> ​
 +
 +Nyní definujeme staticky konfigurované uživatele. Můžou to být testovací uživatelé,​ nebo třeba speciální konta pro jednorázové akce, např. konference.
 +<​xterm>​
 +user1     ​User-Password == "​password1"​
 +user2     ​User-Password == "​password2"​
 +</​xterm>​
 +
 +Testovací účet je směrován do neexistující VLAN, aby se dal ověřit bez možnosti dostat se do sítě. Pokud by měl být konfigurován staticky, vyměníme
 +''​Auth-Type = Local''​ za ''​User-Password == "​password"''​. Obecně by ale měl testovací učet používat stejný typ autentizace jako reálné účty uživatelů,​
 +aby se otestovaly všechny články AA řetězce.
 +<​xterm>​
 +eduroam-test ​   Auth-Type = Local
 +                Tunnel-Type = VLAN,
 +                Tunnel-Private-Group-ID = 666,
 +                Tunnel-Medium-Type = IEEE-802,
 +                Fall-Through = Yes
 +</​xterm>​
 +
 +Uživatelé,​ kteří prošli předchozímy filtry, pokračují do dalšího zpracování
 +<​xterm>​
 +DEFAULT Auth-Type = Local
 +        Fall-Through = 1
 +</​xterm>​
 +
 +====attrs====
 +Tento soubor definuje zpracování paketů vrátivších přes proxy z cizích organizací. Do paketu posílaného zpět přístupovému bodu projdou pouze atributy vyjmenované v tomto souboru, popřípadě atributy s určitou hodnotou. Některé cizí organizace přidávají do Access-Accept paketu svého uživatele, který se chce připojit do naší sítě, atribut Tunnel-Private-Group-Id s hodnotou např. 200. Ten určuje, do které VLAN
 +se má uživatel dostat v domácí síti. My ale máme pouze VLAN 100, proto povolujeme jen tuto hodnotu a dále 666 pro testovací uživatele. Atribut s jinou hodnotou se "​zahodí"​ a AP potom uživateli přiřadí implicitní VLAN. 
 +<​xterm>​
 +DEFAULT
 +        User-Name =* ANY,
 +        Called-Station-Id =* ANY,
 +        Calling-Station-Id =* ANY,
 +        Message-Authenticator =* ANY,
 +        EAP-Message =* ANY,
 +        NAS-Port-Type =* ANY,
 +        NAS-Port =* ANY,
 +        Service-Type =* ANY,
 +        NAS-IP-Address =* ANY,
 +        NAS-Identifier =* ANY,
 +        Proxy-State =* ANY,
 +        Framed-MTU >= 576,
 +        Framed-Filter-ID =* ANY,
 +        Reply-Message =* ANY,
 +        Proxy-State =* ANY,
 +        Session-Timeout <= 28800,
 +        Idle-Timeout <= 600,
 +        Port-Limit <= 2,
 +        Tunnel-Type == VLAN,
 +        Tunnel-Private-Group-Id == 100,
 +        Tunnel-Private-Group-Id == 666,
 +        Tunnel-Medium-Type == IEEE-802,
 +        MS-MPPE-Send-Key =* ANY,
 +        MS-MPPE-Recv-Key =* ANY,
 +        cisco-avpair =* ANY,
 +        WISPr-Location-ID =* ANY,
 +        Cisco-NAS-Port =* ANY,
 +        State =* ANY
 +</​xterm>​
 +
 +====radiusd.conf====
 +Jedná se o hlavní konfigurační soubor.
 +
 +Konfigurace jednotlivých modulů
 +<​xterm>​
 +modules {
 +        # PAP module to authenticate users based on their stored password
 +        pap {
 +                encryption_scheme = crypt
 +        }
 +
 +        #  Extensible Authentication Protocol
 +        $INCLUDE ${confdir}/​eap.conf
 +
 +        # Microsoft CHAP authentication
 +        mschap {
 +                authtype = MS-CHAP
 +        }
 +        # Lightweight Directory Access Protocol (LDAP)
 +        ldap {
 +                server = "​ldapserver.feld.cvut.cz"​
 +                port = 636
 +                identity = "​uid=radius,​ou=Special Users,​o=feld.cvut.cz"​
 +                password = *****************
 +                basedn = "​ou=People,​o=feld.cvut.cz"​
 +                filter = "​(uid=%{Stripped-User-Name:​-%{User-Name}})"​
 +                start_tls = no
 +                dictionary_mapping = ${raddbdir}/​ldap.attrmap
 +
 +                ldap_connections_number = 5
 +                password_attribute = mobilitypassword
 +                timeout = 8
 +                timelimit = 3
 +                net_timeout = 1
 +        }
 +
 +        realm suffix {
 +                format = suffix
 +                delimiter = "​@"​
 +                ignore_default = no
 +                ignore_null = no
 +        }
 +
 +        preprocess {
 +                huntgroups = ${confdir}/​huntgroups
 +                hints = ${confdir}/​hints
 +                with_ascend_hack = no
 +                ascend_channels_per_line = 23
 +                with_ntdomain_hack = yes
 +                with_specialix_jetstream_hack = no
 +                with_cisco_vsa_hack = no
 +        }
 +
 +        files {
 +                usersfile = ${confdir}/​users
 +                acctusersfile = ${confdir}/​acct_users
 +                compat = no
 +        }
 +
 +       ​detail {
 +                detailfile = ${radacctdir}/​%{Client-IP-Address}/​detail-%Y%m%d
 +                detailperm = 0600
 +        }
 +
 +  ​
 +        acct_unique {
 +                key = "​User-Name,​ Acct-Session-Id,​ NAS-IP-Address,​ Client-IP-Address,​ NAS-Port" ​       }
 +
 +
 +        # $INCLUDE ​ ${confdir}/​sql.conf
 +}
 +</​xterm>​
 +
 +Autorizace
 +<​xterm>​
 +authorize {
 +        preprocess
 +        mschap
 +        suffix
 +        eap
 +        files
 +        ldap
 +}
 +</​xterm>​
 +
 +Autentizace
 +<​xterm>​
 +authenticate {
 +        Auth-Type PAP {
 +                pap
 +        }
 +        Auth-Type MS-CHAP {
 +                mschap
 +        }
 +        Auth-Type LDAP {
 +                ldap
 +        }
 +        eap
 +}
 +</​xterm>​
 +
 +<​xterm>​
 +preacct {
 +        preprocess
 +        acct_unique
 +        files
 +}
 +
 +</​xterm>​
 +
 +<​xterm>​
 +accounting {
 +        detail
 +#        sql
 +}
 +
 +</​xterm>​
 +<​xterm>​
 +post-proxy {
 +        attr_filter
 +        eap
 +}
 +</​xterm>​
 +
 +====eap.conf====
 +V souboru jsou uvedeny povolené metody EAP. Modul ''​tls''​ musí být zkonfigurován,​ i když TLS metodu nepoužíváme. Tento modul totiž využívají
 +moduly ''​peap''​ a ''​ttls''​. ​
 +<​xterm>​
 +eap {
 + ​default_eap_type = peap
 + ​timer_expire ​    = 60
 + ​ignore_unknown_eap_types = no
 + ​cisco_accounting_username_bug = no
 + md5 {
 + }
 + leap {
 + }
 + tls {
 +  private_key_file = /​etc/​ssl/​private/​radius.pem.key
 +  certificate_file = /​etc/​ssl/​certs/​radius.pem.crt
 +  CA_file = /​etc/​ssl/​certs/​cacert.pem
 +  dh_file = ${raddbdir}/​certs/​dh
 +  random_file = ${raddbdir}/​certs/​random
 +  fragment_size = 1024
 +  include_length = yes
 + }
 + peap {
 +  default_eap_type = mschapv2
 +  use_tunneled_reply = yes
 + }
 + ttls {
 +  default_eap_type = md5
 +  use_tunneled_reply = yes
 +
 + }
 + ​mschapv2 {
 + }
 +}
 +
 +</​xterm>​
Last modified:: 2009/12/02 10:28