Используемые термины: Freeradius , FreeIPA , WiFi .
Ранее в инструкции Настройка EAP + Freeradius + FreeIPA для авторизации на WiFi было рассказано, как можно настроить авторизацию с использованием EAP-MSCHAP2. Данный метод является универсальным, но требует расширение схемы FreeIPA и хранение пароля в виде хеша, что может не соответствовать политики компании. Мы рассмотрим вариант, при котором аутентификация работает без дополнительных настроек на стороне FreeIPA. Но метод TTLS не является столь же универсальным, что и MSCHAP2 — подключение для старых версий Android, Windows 7 и устройств Apple без использования дополнительного программного обеспечения не будет работать.
В моем примере настройка Freeradius будет выполняться на сервере под управлением Rocky Linux 8. Предполагается, что мы работает в домене remontka.local. Также мы не будем рассматривать установку и настройку Freeradius и FreeIPA. Ссылки на соответствующие инструкции можно найти в конце данной статьи.
Создание учетной записи FreeIPA
Настройка Freeradius
LDAP
EAP
Site Default
Inner-Tunnel
Тестовый запуск
Настройка контроллера для подключения к Freeradius
Описание конфигурирования клиентов
Использование групп FreeIPA
Читайте также
Как говорилось выше, настройка на стороне FreeIPA будет минимальной. Нам нужно только создать учетную запись, от которой будет выполняться подключение с Freeradius к активному каталогу. Для этого будет достаточно создать любого пользователя с минимальными правами. Например:
ipa user-add freeradius —first=freeradius —last=freeradius —password
Система запросит пароль — вводим дважды любой временный (его нужно будет изменить). Учетная запись будет создана, по при первом входе будет требовать сменить пароль. Нам это помешает, поэтому сразу сменим его:
kinit freeradius
Система запросит текущий пароль и после потребует его сменить — ставим уже окончательный, который хотим использовать для freeradius.
Я столкнулся с проблемой использования некоторых спецсимволов в пароле. Нам нужно будет указать последний в конфигурационном файле Freeradius, что может привести к ошибке парсинга конфига. Если мы столкнемся с такой же проблемой, просто меняем пароль на другой, использую другие спецсимволы.
Также стоит указать более длительный период действия пароля:
ipa user-mod freeradius —setattr=krbPasswordExpiration=20301231000000Z
* в данном примере до конца 2030 года.
Мы отдельно рассмотрим настройку различных компонентов сервера Freeradius.
Устанавливаем дополнение к Freeradius для работы с ldap, а также дополнительные утилиты:
yum install freeradius-ldap freeradius-utils
Активируем установленный модуль:
ln -s /etc/raddb/mods-available/ldap /etc/raddb/mods-enabled/ldap
Открываем на редактирование файл ldap:
vi /etc/raddb/mods-available/ldap
Внесем некоторые изменения в настройки конфигурации:
ldap {
…
server = ‘ldap://ipa-server.remontka.local’
…
port = 636
start_tls = yes
…
identity = ‘uid=freeradius,cn=users,cn=accounts,dc=remontka,dc=local’
password = freeradius_password
…
base_dn = ‘cn=users,cn=accounts,dc=remontka,dc=local’
…
}
* где:
Открываем файл:
vi /etc/raddb/mods-available/eap
Приводим следующие настройки к виду:
eap eap-client {
…
default_eap_type = ttls
…
ttls {
tls = tls-common
default_eap_type = md5
copy_request_to_tunnel = no
use_tunneled_reply = yes
virtual_server = «inner-tunnel»
}
}
* где:
Открываем файл:
vi /etc/raddb/sites-enabled/default
Приводим к виду некоторые строки:
authorize {
…
ldap
if ((ok || updated) && User-Password) {
update {
control:Auth-Type := ldap
}
}
…
}
authenticate {
…
Auth-Type LDAP {
ldap
}
…
}
* в данном примере мы сняли комментарий с метода ldap , а также дописали условие if .
Открываем файл:
vi /etc/raddb/sites-enabled/inner-tunnel
Редактируем:
authorize {
…
filter_inner_identity
…
ldap
if ((ok || updated) && User-Password) {
update {
control:Auth-Type := ldap
}
}
…
}
authenticate {
…
Auth-Type LDAP {
ldap
}
…
}
* как и в примере выше, мы сняли комментарий с метода ldap , а также дописали условие if .
После выполнения вышеперечисленных настроек, перезапустим сервис:
systemctl restart radiusd
Пробуем пройти авторизацию с использованием учетной записи LDAP:
radtest ldap_user ‘ldap_password’ localhost 1812 testing123
* где ldap_user и ldap_password — соответственно, логин и пароль от любой учетной записи во FreeIPA. Обратите внимание, что пароль в кавычках — на практике, если пароль имеет некоторые спецсимволы, Freeradius может его неправильно интерпретировать. Кавычки помогают решить проблему.
Мы должны увидеть что-то на подобие:
Sent Access-Request Id 255 from 0.0.0.0:43376 to 127.0.0.1:1812 length 80
User-Name = «ldap_user»
User-Password = «ldap_password»
NAS-IP-Address = 192.168.1.15
NAS-Port = 1812
Message-Authenticator = 0x00
Cleartext-Password = «ldap_password»
Received Access-Accept Id 255 from 127.0.0.1:1812 to 127.0.0.1:43376 length 20
* Received Access-Accept говорит о том, что проверка прошла успешно.
Если при запуске сервиса или при выполнении radtest мы получаем ошибку, запускаем radius в режиме отладки:
radiusd -X
Большинство беспроводных точек доступа умеют проверять подлинность пользователя с помощью сервера RADIUS. Для этого необходимо выбрать метод проверки WPA-Enterprise. В данной инструкции мы рассмотрим подробнее пример настройки контроллера Unifi.
Перед тем, как перейти к настройке точки доступа или контроллера, открываем файл:
vi /etc/raddb/clients.conf
И добавляем запись:
client wifi-controller1 {
ipaddr = 192.168.1.0/24
secret = secret_phrase
}
* в данном примере мы разрешаем запрашивать аутентификацию через наш сервер Freeradius для всех устройств в подсети 192.168.1.0/24 . Если необходимо ограничить доступ до конкретных устройств, то создаем несколько аналогичных записей. Также необходимо указать пароль подключения в директиве secret — в нашем примере secret_phrase .
После внесения изменения, перезапускаем радиус сервер:
systemctl restart radiusd
В данной инструкции мы не будем рассматривать подробности установки и настройки контроллера Unifi от Ubiquiti. Также в нашем примере будет использоваться старый интерфейс (на момент обновления инструкции, новый интерфейс был еще недостаточно функционален, однако, настройка RADIUS может быть выполнена и в нем).
И так, заходим на контроллер и переходим в раздел Settings (значок шестеренки) — Wireless Networks :
Справа от нужной сети WiFi нажимаем EDIT :
В разделе Security выбираем WPA Enterprise , в разделе RADIUS Profile кликаем по кнопке Create new RADIUS profile :
В открывшемся окне вводим имя профиля, вводим адрес нашего сервера RADIUS и секрет, который установили при настройке clients.conf:
* в нашем примере сервер Freeradius имеет IP-адрес 192.168.1.15 , в качестве секрета мы установили secret_phrase .
Готово. Сохраняем настройки WiFi на контроллере.
Мы не будем подробно разбирать ход настройки клиентов — просто перечислим нюансы для различных операционных систем.
Система | Описание настройки WiFi |
---|---|
Windows 11 и 10 | Настройка выполняется штатно. Система понимает, что необходимо использовать TTLS. |
Windows 8 | Необходимо в настройках беспроводного подключения выбрать TTLS. |
Windows 7 | Требуется установка стороннего программного обеспечения для поддержки TTLS. |
Android | Переходим в расширенные настройки и выбираем 1-й метод TTLS, 2-й — PAP. На некоторых устройствах в настройке сертификата выбираем принимать все или не проверять. |
Linux | Настройка выполняется штатно. В настройках необходимо указать TTLS и метод PAP. |
iOS, iPhone OS | Конфигурирование с помощью профиля, полученного утилитой Apple Configurator 2. |
Ранее мы рассмотрели простой вариант поиска пользователей. Мы можем ограничить список с помощью групп безопасности. Например, давайте сделаем так, чтобы только пользователи группы wifi смогли подключаться к беспроводной сети.
Открываем файл:
vi /etc/raddb/mods-available/ldap
В разделе ldap — user приводим настройку filter к виду:
ldap {
…
user {
…
##filter = «(uid=%{%{Stripped-User-Name}:-%{User-Name}})»
filter = «(&(uid=%{%{Stripped-User-Name}:-%{User-Name}})(memberOf=cn=wifi,cn=groups,cn=accounts,dc=remontka,dc=local))»
…
}
…
}
* в данном примере мы закомментировали строку, которая шла по умолчанию и фильтровала запись по uid , и добавили (memberOf=cn=wifi,cn=groups,cn=accounts,dc=remontka,dc=local) — фильтр по группе wifi .
Перезапускаем сервис radiusd:
systemctl restart radiusd
Можно проверять.
Также могут оказаться полезными следующие инструкции:
1. Установка и использование FreeIPA на CentOS .
2. Установка сервера Freeradius на Linux CentOS 8 .
3. Как настроить Freeradius для работы с Active Directory и MySQL одновременно .
4. Настройка Freeradius в связке с FreeIPA на Rocky Linux .
5. Настройка EAP + Freeradius + FreeIPA для авторизации на WiFi .
Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…
Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…
Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…
Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…
YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…
Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…