linux:freeradius
Különbségek
A kiválasztott változat és az aktuális verzió közötti különbségek a következők.
| Előző változat mindkét oldalonElőző változatKövetkező változat | Előző változat | ||
| linux:freeradius [2025/09/08 20:13] – riba.zoltan | linux:freeradius [2025/09/10 11:05] (aktuális) – [Kerberos hitelesítés] riba.zoltan | ||
|---|---|---|---|
| Sor 285: | Sor 285: | ||
| EAP-Id = 245 | EAP-Id = 245 | ||
| EAP-Code = Success | EAP-Code = Success | ||
| + | </ | ||
| + | |||
| + | ==== LDAP hitelesítés ==== | ||
| + | |||
| + | Szükséges csomagok telepítése | ||
| + | |||
| + | < | ||
| + | # dnf install freeradius freeradius-utils freeradius-ldap | ||
| + | </ | ||
| + | |||
| + | Létre kell hozni az ldap szimbolikus linket | ||
| + | |||
| + | < | ||
| + | # ln -s ../ | ||
| + | </ | ||
| + | |||
| + | Menteni kell a / | ||
| + | |||
| + | < | ||
| + | # [ ! -e / | ||
| + | |||
| + | cat > / | ||
| + | ldap { | ||
| + | server = ' | ||
| + | identity = ' | ||
| + | password = 12345678 | ||
| + | base_dn = ' | ||
| + | |||
| + | update { | ||
| + | control: | ||
| + | control: += ' | ||
| + | request: += ' | ||
| + | reply: += ' | ||
| + | } | ||
| + | |||
| + | user { | ||
| + | base_dn = " | ||
| + | filter = " | ||
| + | } | ||
| + | |||
| + | group { | ||
| + | base_dn = " | ||
| + | filter = ' | ||
| + | membership_attribute = ' | ||
| + | } | ||
| + | |||
| + | client { | ||
| + | base_dn = " | ||
| + | filter = ' | ||
| + | attribute { | ||
| + | ipaddr = ' | ||
| + | secret = ' | ||
| + | } | ||
| + | } | ||
| + | |||
| + | accounting { | ||
| + | reference = " | ||
| + | |||
| + | type { | ||
| + | start { | ||
| + | update { | ||
| + | description := " | ||
| + | } | ||
| + | } | ||
| + | |||
| + | interim-update { | ||
| + | update { | ||
| + | description := "Last seen at %S" | ||
| + | } | ||
| + | } | ||
| + | |||
| + | stop { | ||
| + | update { | ||
| + | description := " | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | |||
| + | post-auth { | ||
| + | update { | ||
| + | description := " | ||
| + | } | ||
| + | } | ||
| + | |||
| + | options { | ||
| + | chase_referrals = yes | ||
| + | rebind = yes | ||
| + | res_timeout = 10 | ||
| + | srv_timelimit = 3 | ||
| + | net_timeout = 1 | ||
| + | idle = 60 | ||
| + | probes = 3 | ||
| + | interval = 3 | ||
| + | ldap_debug = 0x0028 | ||
| + | } | ||
| + | |||
| + | tls { | ||
| + | start_tls = no | ||
| + | require_cert = ' | ||
| + | } | ||
| + | |||
| + | pool { | ||
| + | start = ${thread[pool].start_servers} | ||
| + | min = ${thread[pool].min_spare_servers} | ||
| + | max = ${thread[pool].max_servers} | ||
| + | spare = ${thread[pool].max_spare_servers} | ||
| + | uses = 0 | ||
| + | retry_delay = 30 | ||
| + | lifetime = 0 | ||
| + | idle_timeout = 60 | ||
| + | } | ||
| + | } | ||
| + | EOF | ||
| + | </ | ||
| + | |||
| + | Menteni kell a / | ||
| + | |||
| + | < | ||
| + | # [ ! -e / | ||
| + | |||
| + | cat > / | ||
| + | server default { | ||
| + | listen { | ||
| + | type = auth | ||
| + | ipaddr = * | ||
| + | port = 0 | ||
| + | limit { | ||
| + | max_connections = 16 | ||
| + | lifetime = 0 | ||
| + | idle_timeout = 30 | ||
| + | } | ||
| + | } | ||
| + | |||
| + | listen { | ||
| + | ipaddr = * | ||
| + | port = 0 | ||
| + | type = acct | ||
| + | limit { | ||
| + | } | ||
| + | } | ||
| + | |||
| + | listen { | ||
| + | type = auth | ||
| + | ipv6addr = :: # any. ::1 == localhost | ||
| + | port = 0 | ||
| + | limit { | ||
| + | max_connections = 16 | ||
| + | lifetime = 0 | ||
| + | idle_timeout = 30 | ||
| + | } | ||
| + | } | ||
| + | |||
| + | listen { | ||
| + | ipv6addr = :: | ||
| + | port = 0 | ||
| + | type = acct | ||
| + | limit { | ||
| + | } | ||
| + | } | ||
| + | |||
| + | authorize { | ||
| + | filter_username | ||
| + | preprocess | ||
| + | chap | ||
| + | mschap | ||
| + | digest | ||
| + | suffix | ||
| + | |||
| + | eap { | ||
| + | ok = return | ||
| + | } | ||
| + | |||
| + | files | ||
| + | -sql | ||
| + | |||
| + | ldap | ||
| + | |||
| + | if ((ok || updated) && User-Password && !control: | ||
| + | update { | ||
| + | control: | ||
| + | } | ||
| + | } | ||
| + | |||
| + | expiration | ||
| + | logintime | ||
| + | pap | ||
| + | } | ||
| + | |||
| + | authenticate { | ||
| + | Auth-Type PAP { | ||
| + | pap | ||
| + | } | ||
| + | |||
| + | Auth-Type CHAP { | ||
| + | chap | ||
| + | } | ||
| + | |||
| + | Auth-Type MS-CHAP { | ||
| + | mschap | ||
| + | } | ||
| + | |||
| + | mschap | ||
| + | |||
| + | digest | ||
| + | |||
| + | Auth-Type LDAP { | ||
| + | ldap | ||
| + | } | ||
| + | |||
| + | eap | ||
| + | } | ||
| + | |||
| + | preacct { | ||
| + | preprocess | ||
| + | acct_unique | ||
| + | suffix | ||
| + | files | ||
| + | } | ||
| + | |||
| + | accounting { | ||
| + | detail | ||
| + | unix | ||
| + | -sql | ||
| + | exec | ||
| + | attr_filter.accounting_response | ||
| + | } | ||
| + | |||
| + | session { | ||
| + | } | ||
| + | |||
| + | post-auth { | ||
| + | if (session-state: | ||
| + | update reply { | ||
| + | & | ||
| + | } | ||
| + | } | ||
| + | |||
| + | update { | ||
| + | & | ||
| + | } | ||
| + | |||
| + | -sql | ||
| + | exec | ||
| + | remove_reply_message_if_eap | ||
| + | |||
| + | Post-Auth-Type REJECT { | ||
| + | -sql | ||
| + | attr_filter.access_reject | ||
| + | eap | ||
| + | remove_reply_message_if_eap | ||
| + | } | ||
| + | |||
| + | Post-Auth-Type Challenge { | ||
| + | } | ||
| + | } | ||
| + | |||
| + | pre-proxy { | ||
| + | } | ||
| + | |||
| + | post-proxy { | ||
| + | eap | ||
| + | } | ||
| + | } | ||
| + | EOF | ||
| + | </ | ||
| + | |||
| + | Menteni kell a / | ||
| + | |||
| + | < | ||
| + | # [ ! -e / | ||
| + | |||
| + | cat > / | ||
| + | server inner-tunnel { | ||
| + | listen { | ||
| + | ipaddr = 127.0.0.1 | ||
| + | port = 18120 | ||
| + | type = auth | ||
| + | } | ||
| + | |||
| + | authorize { | ||
| + | filter_username | ||
| + | chap | ||
| + | mschap | ||
| + | suffix | ||
| + | update control { | ||
| + | & | ||
| + | } | ||
| + | eap { | ||
| + | ok = return | ||
| + | } | ||
| + | |||
| + | files | ||
| + | |||
| + | -sql | ||
| + | |||
| + | ldap | ||
| + | |||
| + | if ((ok || updated) && User-Password && !control: | ||
| + | update { | ||
| + | control: | ||
| + | } | ||
| + | } | ||
| + | |||
| + | expiration | ||
| + | logintime | ||
| + | |||
| + | pap | ||
| + | } | ||
| + | |||
| + | |||
| + | authenticate { | ||
| + | Auth-Type PAP { | ||
| + | pap | ||
| + | } | ||
| + | |||
| + | Auth-Type CHAP { | ||
| + | chap | ||
| + | } | ||
| + | |||
| + | Auth-Type MS-CHAP { | ||
| + | mschap | ||
| + | } | ||
| + | |||
| + | mschap | ||
| + | |||
| + | Auth-Type LDAP { | ||
| + | ldap | ||
| + | } | ||
| + | |||
| + | eap | ||
| + | } | ||
| + | |||
| + | session { | ||
| + | radutmp | ||
| + | } | ||
| + | |||
| + | post-auth { | ||
| + | -sql | ||
| + | if (0) { | ||
| + | update reply { | ||
| + | User-Name !* ANY | ||
| + | Message-Authenticator !* ANY | ||
| + | EAP-Message !* ANY | ||
| + | Proxy-State !* ANY | ||
| + | MS-MPPE-Encryption-Types !* ANY | ||
| + | MS-MPPE-Encryption-Policy !* ANY | ||
| + | MS-MPPE-Send-Key !* ANY | ||
| + | MS-MPPE-Recv-Key !* ANY | ||
| + | } | ||
| + | |||
| + | update { | ||
| + | & | ||
| + | } | ||
| + | } | ||
| + | |||
| + | Post-Auth-Type REJECT { | ||
| + | -sql | ||
| + | attr_filter.access_reject | ||
| + | update outer.session-state { | ||
| + | & | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | |||
| + | pre-proxy { | ||
| + | } | ||
| + | |||
| + | post-proxy { | ||
| + | eap | ||
| + | } | ||
| + | } | ||
| + | EOF | ||
| + | </ | ||
| + | |||
| + | Újra kell indítani a radiusd szolgáltatást | ||
| + | |||
| + | < | ||
| + | # systemctl restart radiusd | ||
| + | </ | ||
| + | |||
| + | Létre kell hozni a DC-n a radiusbind felhasználót akinek a jelszava nem jár le | ||
| + | |||
| + | < | ||
| + | # samba-tool user create radiusbind 12345678 | ||
| + | |||
| + | # samba-tool user setexpiry radiusbind --noexpiry | ||
| + | </ | ||
| + | |||
| + | Tesztelhető a szolgáltatás | ||
| + | |||
| + | < | ||
| + | # radtest teszt.elek 12345678 127.0.0.1 0 testing123 | ||
| + | Sent Access-Request Id 158 from 0.0.0.0: | ||
| + | User-Name = " | ||
| + | User-Password = " | ||
| + | NAS-IP-Address = 192.168.110.11 | ||
| + | NAS-Port = 0 | ||
| + | Cleartext-Password = " | ||
| + | Received Access-Accept Id 158 from 127.0.0.1: | ||
| + | Message-Authenticator = 0xf111666b349fe1dcc5ea191026805f2d | ||
| </ | </ | ||
| Sor 293: | Sor 694: | ||
| < | < | ||
| # dnf install freeradius freeradius-utils freeradius-krb5 krb5-workstation | # dnf install freeradius freeradius-utils freeradius-krb5 krb5-workstation | ||
| + | </ | ||
| + | |||
| + | Hozzunk létre egy felhasználót a DC.n | ||
| + | |||
| + | < | ||
| + | # samba-tool user add radius-svc --random-password | ||
| + | User ' | ||
| + | </ | ||
| + | |||
| + | Hozzunk létre SPN-t a radius szervernek | ||
| + | |||
| + | < | ||
| + | # samba-tool spn add radius/ | ||
| + | </ | ||
| + | |||
| + | Ellenőrizzük az SPN-t | ||
| + | |||
| + | < | ||
| + | # ldbsearch -H ldap:// | ||
| + | Password for [ADOMAIN\administrator]: | ||
| + | # record 1 | ||
| + | dn: CN=radius-svc, | ||
| + | sAMAccountName: | ||
| + | servicePrincipalName: | ||
| + | |||
| + | # Referral | ||
| + | ref: ldap:// | ||
| + | |||
| + | # Referral | ||
| + | ref: ldap:// | ||
| + | |||
| + | # Referral | ||
| + | ref: ldap:// | ||
| + | |||
| + | # returned 4 records | ||
| + | # 1 entries | ||
| + | # 3 referrals | ||
| + | </ | ||
| + | |||
| + | Ez a lépés nem kötelező . Beállíthatjuk a titkosítást a felhasználói fiók esetében. | ||
| + | |||
| + | < | ||
| + | # cat > ~/ | ||
| + | dn: CN=radius-svc, | ||
| + | changetype: modify | ||
| + | replace: msDS-SupportedEncryptionTypes | ||
| + | msDS-SupportedEncryptionTypes: | ||
| + | EOF | ||
| + | |||
| + | # ldbmodify -H ldap:// | ||
| + | Password for [ADOMAIN\administrator]: | ||
| + | Modified 1 records successfully | ||
| + | </ | ||
| + | |||
| + | Exportáljuk a keytab-ot | ||
| + | |||
| + | < | ||
| + | # samba-tool domain exportkeytab / | ||
| + | Export one principal to / | ||
| + | </ | ||
| + | |||
| + | Ellenőrizzük a keytab tartalmát | ||
| + | |||
| + | < | ||
| + | # klist -k -e / | ||
| + | Keytab name: FILE:/ | ||
| + | KVNO Principal | ||
| + | ---- -------------------------------------------------------------------------- | ||
| + | 2 radius/ | ||
| + | 2 radius/ | ||
| + | </ | ||
| + | |||
| + | Másoljuk be a keytabot a megfelelő helyre és állítsuk be a jogosultságot | ||
| + | |||
| + | < | ||
| + | # cp -a / | ||
| + | |||
| + | # chown radiusd: | ||
| + | |||
| + | # chmod 0600 / | ||
| + | </ | ||
| + | |||
| + | Mentsük le az eredeti kerberos konfigurációt | ||
| + | |||
| + | < | ||
| + | # [ ! -f / | ||
| + | </ | ||
| + | |||
| + | Módosítsuk a konfigurációt | ||
| + | |||
| + | < | ||
| + | # cat > / | ||
| + | krb5 { | ||
| + | keytab = ${localstatedir}/ | ||
| + | service_principal = radius/ | ||
| + | pool { | ||
| + | start = ${thread[pool].start_servers} | ||
| + | min = ${thread[pool].min_spare_servers} | ||
| + | max = ${thread[pool].max_servers} | ||
| + | spare = ${thread[pool].max_spare_servers} | ||
| + | uses = 0 | ||
| + | lifetime = 0 | ||
| + | idle_timeout = 0 | ||
| + | } | ||
| + | } | ||
| + | EOF | ||
| + | </ | ||
| + | |||
| + | Engedélyezzük a konfigurációt | ||
| + | |||
| + | < | ||
| + | # ln -s ../ | ||
| + | </ | ||
| + | |||
| + | Indítsuk újra a szolgáltatást | ||
| + | |||
| + | < | ||
| + | # systemctl restart radiusd | ||
| + | </ | ||
| + | |||
| + | Teszteljük a kapcsolatot | ||
| + | |||
| + | < | ||
| + | # radtest -t pap teszt.elek ' | ||
| + | Sent Access-Request Id 176 from 0.0.0.0: | ||
| + | User-Name = " | ||
| + | User-Password = " | ||
| + | NAS-IP-Address = 192.168.110.11 | ||
| + | NAS-Port = 0 | ||
| + | Cleartext-Password = " | ||
| + | Received Access-Accept Id 176 from 127.0.0.1: | ||
| + | Message-Authenticator = 0x662c8de328ec1703342d74ece4225877 | ||
| </ | </ | ||
linux/freeradius.1757362392.txt.gz · Utolsó módosítás: szerkesztette: riba.zoltan
