Как настроить Freeradius для работы с Active Directory и MySQL одновременно

Установка и настройка сервера выполнена на базе FreeBSD 10. Но инструкция может быть применима к другим операционным системам UNIX .

Подготавливаем сервер

Прежде чем начать, настраиваем сеть для доступа к сети Интернет.

Заходим под суперпользователем:

su

Выставляем часовой пояс (у меня московское время) и сразу синхронизируем время:

cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime; ntpdate 0.freebsd.pool.ntp.org;

Создаем задание в cron для автоматической синхронизации времени каждую ночь:

echo ‘0 0 * * * /usr/sbin/ntpdate 0.freebsd.pool.ntp.org’ >> /var/cron/tabs/crontab && crontab /var/cron/tabs/crontab

Обновляем систему:

pkg update && pkg upgrade

Готовим сервер для работы с Active Directory

Устанавливаем samba:

pkg install samba4

Создаем конфигурационный файл для настройки Kerberos:

ee /etc/krb5.conf

[libdefaults]

default_realm = remontka.LOCAL

clockskew = 300

v4_instance_resolve = false

v4_name_convert = {

host = {

rcmd = host

ftp = ftp

}

plain = {

something = something-else

}

}

[realms]

remontka.LOCAL = {

kdc = remontka.LOCAL # контроллер домена или домен

admin_server = remontka.LOCAL # контроллер домена или домен

}

[domain_realm]

.remontka.local = remontka.LOCAL

* Полужирным выделены данные, которые вы должны заменить своими

Проверяем получение билета от Active Directory:

kinit -p admin && klist

* admin — логин в AD

Должен получиться, примерно, такой ответ:

Credentials cache: FILE:/tmp/krb5cc_0

Principal: admin@remontka.LOCAL

Issued Expires Principal

Jul 14 09:55:28 2014 Jul 14 19:55:28 2014 krbtgt/remontka.LOCAL@remontka.LOCAL

Если ответ получен правильно, идем дальше

Создаем конфигурационный файл для samba:

ee /usr/local/etc/smb4.conf

[global]

workgroup = remontka

server string = Samba Server

security = ads

;hosts allow = 192.168.0. 127.

log file = /var/log/samba/log.%m

max log size = 500

password server = remontka.LOCAL # контроллер домена или домен

encrypt passwords = yes

realm = remontka.LOCAL

socket options = TCP_NODELAY

os level = 1

display charset = koi8-r

unix charset = koi8-r

dos charset = cp866

winbind use default domain = yes

winbind uid = 10000-15000

winbind gid = 10000-15000

winbind enum users = yes

winbind enum groups = yes

* Полужирным выделены данные, которые вы должны заменить своими.

Редактируем файл nsswitch.conf:

sed -ie ‘s/group: compat/group: files winbind/g’ /etc/nsswitch.conf; sed -ie ‘s/passwd: compat/passwd: files winbind/g’ /etc/nsswitch.conf

Разрешаем запуск демона samba:

echo ‘samba_server_enable=»YES»‘ >> /etc/rc.conf

Запускаем сервер samba:

service samba_server start

Добавляем наш сервер в домен:

net ads join -U admin

* admin — учетная запись в AD с правами на добавление компьютеров в домен.

Перезагружаем сервер:

shutdown -r now

После перезагрузки проверяем, что сервер видит учетные записи в Active Directory:

wbinfo -u

Устанавливаем и настраиваем Freeradius

pkg install freeradius

Проверяем, что аутентификация в AD через модуль ntlm_auth работает корректно:

ntlm_auth —request-nt-key —domain=remontka.LOCAL —username=kdo

* Полужирным выделен домен.

Вы должны получить ответ:

NT_STATUS_OK: Success (0x0)

Редактируем конфигурационный файл модуля ntlm-аутентификации freeradius:

ee /usr/local/etc/raddb/modules/ntlm_auth

exec ntlm_auth {

wait = yes

program = «/usr/local/bin/ntlm_auth —request-nt-key —domain= remontka.LOCAL —username=%{mschap:User-Name} —password=%{User-Password}»

}

* Полужирным выделены данные, которые вы должны заменить своими.

Добавляем инструкцию для использования модуля ntlm_auth в конфигурационный файл:

ee /usr/local/etc/raddb/sites-enabled/default

authenticate {

ntlm_auth

}

Редактируем список пользователей freeradius (создаем правило использования модуля ntlm_auth по умолчанию) — эту строчку лучше поместить в самый верх файла:

ee /usr/local/etc/raddb/users

DEFAULT Auth-Type = ntlm_auth

Редактируем основной конфигурационный файл freeradius:

ee /usr/local/etc/raddb/radiusd.conf

allow_vulnerable_openssl = yes

Проверяем конфигурационный файл:

radiusd -X

Разрешаем запуск демона radius:

echo ‘radiusd_enable=»YES»‘ >> /etc/rc.conf

Запускаем сервер radius:

service radiusd start

На этом настройка Freeradius + AD закончена.

Проверяем:

radtest test test123 localhost 1812 testing123

* test, test123 — логин, пароль пользователя в Active Directory. testing123 — пароль по умолчанию для подключения к серверу freeradius.

Freeradius + MySQL

Устанавливаем mysql-server:

pkg install mysql56-server

Разрешаем запуск демона mysql:

echo ‘mysql_enable=»YES»‘ >> /etc/rc.conf

Запускаем сервер mysql:

service mysql-server start

Устанавливаем пароль для пользователя root в mysql:

mysqladmin -u root password

Создаем базу данных и пользователя:

mysql -u root -p -e «CREATE DATABASE IF NOT EXISTS radius;» -e «GRANT ALL ON radius.* TO radius@localhost IDENTIFIED BY ‘radius'»;

Загружаем данные, выполнив последовательно две команды:

mysql -u root -p radius < /usr/local/etc/raddb/sql/mysql/schema.sql

mysql -u root -p radius < /usr/local/etc/raddb/sql/mysql/nas.sql

Создаем тестового пользователя:

mysql -u radius -p -e «INSERT INTO radius.radcheck (username, attribute, value) VALUES (‘testsql’, ‘Password’, ‘test123’);»

Редактируем конфигурационный файл для работы freeradius с sql:

ee /usr/local/etc/raddb/sql.conf

password = «radius»

readclients = yes

Редактируем конфигурационный файл default (разрешаем использовать базу данных, как источник учетных записей):

ee /usr/local/etc/raddb/sites-enabled/default

authorize {

sql {

ok = return

}

}

session {

sql

}

post-auth {

sql

}

Редактируем основной конфигурационный файл freeradius (подключаем файл с настройками для sql) — просто снять комментарий:

ee /usr/local/etc/raddb/radiusd.conf

$INCLUDE sql.conf

Перезапускаем сервер radius:

service radius restart

Готово.

При данных настройках сервер сначала будет искать учетные записи в Active Directory, а если ничего не найдет — в базе MySQL.

EnglishRussianUkrainian