FreeRadius Notes: различия между версиями
Материал из noname.com.ua
Перейти к навигацииПерейти к поискуSirmax (обсуждение | вклад) |
Sirmax (обсуждение | вклад) |
||
| Строка 104: | Строка 104: | ||
Reply-Message := "Hello, %{User-Name}" |
Reply-Message := "Hello, %{User-Name}" |
||
</PRE> |
</PRE> |
||
| − | * При этом модуль <code>files</code> по сути не делает проверок - он только сопоставляет запрос, и по ключу который определен в конфигурации находит (или не находит) атрибуты. |
+ | * При этом модуль <code>files</code> по сути не делает проверок - он только сопоставляет запрос, и по ключу который определен в конфигурации (<code>key = "%{%{Stripped-User-Name}:-%{User-Name}}"</code>) находит (или не находит) атрибуты. |
<BR> |
<BR> |
||
Запись в логах вида: |
Запись в логах вида: |
||
| Строка 111: | Строка 111: | ||
</PRE> |
</PRE> |
||
Означает что такой пользователь существует, НО не означает что он успешно авторизован. |
Означает что такой пользователь существует, НО не означает что он успешно авторизован. |
||
| + | * Далее модуль PAP осуществляет проверку пароля. Важно то, что пароль в описании пользователя должен содержаться в атрибутах "known good", в нашем случае - <code>Cleartext-Password</code> |
||
| + | <BR> |
||
| + | {{#spoiler:show=Выдержка из <code>man rlm_pap</code>| |
||
| + | |||
| + | <PRE> |
||
| + | The module looks for the Password-With-Header control attribute to find the "known good" password. The attribute value comprises the header followed immediately by the password data. The |
||
| + | header is given by the following table. |
||
| + | |||
| + | Header Attribute Description |
||
| + | ------ --------- ----------- |
||
| + | {clear} Cleartext-Password Clear-text passwords |
||
| + | {cleartext} Cleartext-Password Clear-text passwords |
||
| + | {crypt} Crypt-Password Unix-style "crypt"ed passwords |
||
| + | {md5} MD5-Password MD5 hashed passwords |
||
| + | {base64_md5} MD5-Password MD5 hashed passwords |
||
| + | {smd5} SMD5-Password MD5 hashed passwords, with a salt |
||
| + | {sha} SHA-Password SHA1 hashed passwords |
||
| + | SHA1-Password SHA1 hashed passwords |
||
| + | {ssha} SSHA-Password SHA1 hashed passwords, with a salt |
||
| + | {sha2} SHA2-Password SHA2 hashed passwords |
||
| + | {sha224} SHA2-Password SHA2 hashed passwords |
||
| + | {sha256} SHA2-Password SHA2 hashed passwords |
||
| + | {sha384} SHA2-Password SHA2 hashed passwords |
||
| + | {sha512} SHA2-Password SHA2 hashed passwords |
||
| + | {ssha224} SSHA2-224-Password SHA2 hashed passwords, with a salt |
||
| + | {ssha256} SSHA2-256-Password SHA2 hashed passwords, with a salt |
||
| + | {ssha384} SSHA2-384-Password SHA2 hashed passwords, with a salt |
||
| + | {ssha512} SSHA2-512-Password SHA2 hashed passwords, with a salt |
||
| + | {nt} NT-Password Windows NT hashed passwords |
||
| + | {nthash} NT-Password Windows NT hashed passwords |
||
| + | {md4} NT-Password Windows NT hashed passwords |
||
| + | {x-nthash} NT-Password Windows NT hashed passwords |
||
| + | {ns-mta-md5} NS-MTA-MD5-Password Netscape MTA MD5 hashed passwords |
||
| + | {x- orcllmv} LM-Password Windows LANMAN hashed passwords |
||
| + | {X- orclntv} NT-Password Windows NT hashed passwords |
||
| + | </PRE> |
||
| + | }} |
||
<PRE> |
<PRE> |
||
Версия 15:00, 15 июля 2023
Это просто сборник ссылок и заметок
- https://shop.nag.ru/article/ericsson-smartedge-freeradius-billing
- https://code.google.com/archive/p/cakebilling/wikis/ConfiguringFreeRadius.wiki
Минимальный рабочий конфиг
Тут чертовски важен порядок модулей - если переставить местами pap/files то получится что pap не сможет получить пароль
sites-enabled/default
server default {
listen {
type = auth
ipv4addr = *
port = 1812
limit {
max_connections = 16
lifetime = 0
idle_timeout = 30
}
}
listen {
ipv4addr = *
port = 1813
type = acct
}
instantiate {
exec
expr
expiration
}
authorize {
files
pap
}
authenticate {
Auth-Type PAP {
pap
}
}
} # end of SERVER
Клиенты clients.conf
client localhost {
ipaddr = 127.0.0.1
proto = *
secret = secret
require_message_authenticator = no
limit {
max_connections = 16
lifetime = 0
idle_timeout = 30
}
}
Модуль PAP mods-enabled/pap
pap {
# normalise = yes
auto_header = no
}
Модуль files
mods-enabled/files
files {
moddir = ${modconfdir}/${.:instance}
#key = "%{%{Stripped-User-Name}:-%{User-Name}}"
filename = ${moddir}/authorize
usersfile = ${moddir}/authorize
# acctusersfile = ${moddir}/accounting
}
mods-config/files/authorize
bob Cleartext-Password := "hello"
Reply-Message := "Hello, %{User-Name}"
Проверка работы минимальной конфигурации
- Для проверки использую команду
radtest bob hello localhost 0 secretbob- имя пользователя, атрибутUser-Namehello- пароль, который будет передан в атрибутеUser-Passwordlocalhost- адрес куда отправить запрос0- номер (виртуального) порта,NAS-Portsecret- radius shared secret, который указан в настройках сервера и клиента
По сути тут логика такая
- "Пришел" пользователь
User-Name = "bob"User-Password = "hello" - Его проверили по файлу (модуль
filesищет пользователя в файле, имя файла определено конфигурацией модуля) и находит, о чем говорит записьfiles: users: Matched entry bob at line 4 - Далее для модулей вызываных ниже по конфигу будут доступны атрибуты которые добавил модуль
filesа именно:
bob Cleartext-Password := "hello"
Reply-Message := "Hello, %{User-Name}"
- При этом модуль
filesпо сути не делает проверок - он только сопоставляет запрос, и по ключу который определен в конфигурации (key = "%{%{Stripped-User-Name}:-%{User-Name}}") находит (или не находит) атрибуты.
Запись в логах вида:
[files] = ok
Означает что такой пользователь существует, НО не означает что он успешно авторизован.
- Далее модуль PAP осуществляет проверку пароля. Важно то, что пароль в описании пользователя должен содержаться в атрибутах "known good", в нашем случае -
Cleartext-Password
Fri Jul 14 18:07:17 2023 : Debug: (0) Received Access-Request Id 51 from 127.0.0.1:54599 to 127.0.0.1:1812 length 73
Fri Jul 14 18:07:17 2023 : Debug: (0) User-Name = "bob"
Fri Jul 14 18:07:17 2023 : Debug: (0) User-Password = "hello"
Fri Jul 14 18:07:17 2023 : Debug: (0) NAS-IP-Address = 10.90.1.213
Fri Jul 14 18:07:17 2023 : Debug: (0) NAS-Port = 0
Fri Jul 14 18:07:17 2023 : Debug: (0) Message-Authenticator = 0xa051e8612e62faaa98baa723ceb98219
Fri Jul 14 18:07:17 2023 : Debug: (0) session-state: No State attribute
Fri Jul 14 18:07:17 2023 : Debug: (0) # Executing section authorize from file /etc/freeradius/3.0/sites-enabled/default
Fri Jul 14 18:07:17 2023 : Debug: (0) authorize {
Fri Jul 14 18:07:17 2023 : Debug: (0) modsingle[authorize]: calling files (rlm_files)
Fri Jul 14 18:07:17 2023 : Debug: (0) files: users: Matched entry bob at line 4
Fri Jul 14 18:07:17 2023 : Debug: (0) files: ::: FROM 1 TO 0 MAX 1
Fri Jul 14 18:07:17 2023 : Debug: (0) files: ::: Examining Reply-Message
Fri Jul 14 18:07:17 2023 : Debug: Hello, %{User-Name}
Fri Jul 14 18:07:17 2023 : Debug: Parsed xlat tree:
Fri Jul 14 18:07:17 2023 : Debug: literal --> Hello,
Fri Jul 14 18:07:17 2023 : Debug: attribute --> User-Name
Fri Jul 14 18:07:17 2023 : Debug: (0) files: EXPAND Hello, %{User-Name}
Fri Jul 14 18:07:17 2023 : Debug: (0) files: --> Hello, bob
Fri Jul 14 18:07:17 2023 : Debug: (0) files: ::: APPENDING Reply-Message FROM 0 TO 0
Fri Jul 14 18:07:17 2023 : Debug: (0) files: ::: TO in 0 out 0
Fri Jul 14 18:07:17 2023 : Debug: (0) modsingle[authorize]: returned from files (rlm_files)
Fri Jul 14 18:07:17 2023 : Debug: (0) [files] = ok
Fri Jul 14 18:07:17 2023 : Debug: (0) modsingle[authorize]: calling pap (rlm_pap)
Fri Jul 14 18:07:17 2023 : Debug: (0) modsingle[authorize]: returned from pap (rlm_pap)
Fri Jul 14 18:07:17 2023 : Debug: (0) [pap] = updated
Fri Jul 14 18:07:17 2023 : Debug: (0) } # authorize = updated
Fri Jul 14 18:07:17 2023 : Debug: (0) Found Auth-Type = PAP
Fri Jul 14 18:07:17 2023 : Debug: (0) # Executing group from file /etc/freeradius/3.0/sites-enabled/default
Fri Jul 14 18:07:17 2023 : Debug: (0) Auth-Type PAP {
Fri Jul 14 18:07:17 2023 : Debug: (0) modsingle[authenticate]: calling pap (rlm_pap)
Fri Jul 14 18:07:17 2023 : Debug: (0) pap: Login attempt with password "hello" (5)
Fri Jul 14 18:07:17 2023 : Debug: (0) pap: Comparing with "known good" Cleartext-Password "hello" (5)
Fri Jul 14 18:07:17 2023 : Debug: (0) pap: User authenticated successfully
Fri Jul 14 18:07:17 2023 : Debug: (0) modsingle[authenticate]: returned from pap (rlm_pap)
Fri Jul 14 18:07:17 2023 : Debug: (0) [pap] = ok
Fri Jul 14 18:07:17 2023 : Debug: (0) } # Auth-Type PAP = ok
Fri Jul 14 18:07:17 2023 : ERROR: (0) Cannot proxy packets unless 'proxy_requests = yes'
Fri Jul 14 18:07:17 2023 : Debug: (0) Empty post-auth section in virtual server "default". Using default return values.
Fri Jul 14 18:07:17 2023 : Auth: (0) Login OK: [bob/hello] (from client localhost port 0)
Fri Jul 14 18:07:17 2023 : Debug: (0) Sent Access-Accept Id 51 from 127.0.0.1:1812 to 127.0.0.1:54599 length 32
Fri Jul 14 18:07:17 2023 : Debug: (0) Reply-Message = "Hello, bob"
Fri Jul 14 18:07:17 2023 : Debug: (0) Finished request
Fri Jul 14 18:07:17 2023 : Debug: Waking up in 4.9 seconds.