Как настроить 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 = DMOSK.LOCAL

     clockskew = 300

     v4_instance_resolve = false

     v4_name_convert = {

          host = {

                rcmd = host

                ftp = ftp

          }

          plain = {

                something = something-else

          }

     }   

[realms]

     DMOSK.LOCAL = {

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

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

     }

[domain_realm]

     .dmosk.local = DMOSK.LOCAL

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

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

kinit -p admin && klist

* admin — логин в AD

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

Credentials cache: FILE:/tmp/krb5cc_0

        Principal: admin@DMOSK.LOCAL

 

  Issued                Expires               Principal

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

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

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

ee /usr/local/etc/smb4.conf

[global]

       workgroup = DMOSK

       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 = DMOSK.LOCAL  # контроллер домена или домен

       encrypt passwords = yes

       realm = DMOSK.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=DMOSK.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=DMOSK.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 1218 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.

# Active Directory # FreeBSD # MySQL # UNIX # Безопасность # Настройки # Серверы
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет