====== Устанавливаем SAMBA в роли бэкенда для авторизации в Microsoft Active Directory (для SQUID) ====== **Условия:** * ОС: FreeBSD 9 * Исправно работающие службы Active Directory (на базе Server 2003) * Исправно работающая служба DNS **Задача** * Установить SAMBA __только__ для целей аутентификации пользователей В случае внедрения кеширующего прокси-сервера Squid с поддержкой авторизации пользователей Active Directory зачастую используется Samba как промежуточный механизм для выполнения функций аутентификации. В сети море информации на эту тему, однако решил еще раз написать больше для себя, чтобы не забыть :). ===== Какую версию самбы ставить? ===== Перепробовал много разных версий Самбы, однако остановился на версии 3.6, как наиболее стабильно работающей. Каждый сам решает, исходя из функций, которые нужны от самбы и опыта, какую версию Samba ему использовать. Далее, описание приводится для Самбы версии 3.6.7. Итак, ставим из портов: # cd /usr/ports/net/samba36 # make config Выбираю опции: [*] ADS [*] CUPS [*] WINBIND [*] SYSLOG [*] POPT Все остальное нам не нужно. Нам не нужна поддержка ACL, AIO или EXP_MODULES. Все, что нам нужно от Самбы - только демон WINBIND, который и будет выполнять аутентификацию пользователей в базе Active Directory. ===== Начальные настройки ===== ==== Правим /etc/krb5.conf ==== Настраиваем конфиг. файл Керберос. Нам нужно очень внимательно отнестись к опциям в этом файле. Опции в этом файле: * YOUR_DOMAIN - имя домена Active Directory. У меня домен состоит из одной метки (т.н. Single labelled domain), т.е. не имеет точек в имени. Соответственно, если у вас домен состоит из точки, к примеру, TEST.RU, то вы так и должны вписывать это имя. Также стоит обратить внимание, что имя домена во всех секциях написано в верхнем регистре. * 192.168.111.111 и 192.168.111.114 - это IP адреса моих контроллеров домена. У меня их 2, поэтому в конфиге и две записи. * 192.168.111.111 - имя основного контроллера домена * Обращаем внимание, что в секции [domain_realms] имя домена начинается с точки и в нижнем регистре [libdefaults] default_realm = YOUR_DOMAIN forwardable = yes ticket_lifetime = 24h [realms] YOUR_DOMAIN = { kdc = 192.168.111.111 kdc = 192.168.111.114 admin_server = 192.168.111.111 default_domain = YOUR_DOMAIN } [domain_realms] .your_domain = YOUR_DOMAIN [appdefaults] pam = { debug = false ticket_lifetime = 36000 renew_lifetime = 36000 forwardable = true krb4_convert = false } [logging] default=SYSLOG:ERR:AUTH ==== Правим /etc/nsswitch.conf ==== group: files winbind hosts: files dns networks: files passwd: files winbind shells: files protocols: files Все остальные опции у меня закомментированы. ==== Правим /etc/hosts ==== Что туда добавляем? Добавляем записи для ваших контроллеров домена. ==== Правим самый главный конфиг. файл /usr/local/etc/smb.conf ==== # прописываем основной контроллер домена password server = 192.168.111.111 # следующие параметры должны согласовываться с настройками в вашем домене encrypt passwords = yes client NTLMv2 auth = Yes smb ports = 139 client use spnego = Yes preferred master = no local master = no domain master = no # Один из наиболее важных параметров - тип безопасности security = ADS workgroup = YOUR_DOMAIN realm = YOUR_DOMAIN server string = # Имя, под которым ваш Самба-сервер будет зарегистрирован в Active Directory netbios name = GW2 # У меня сеть 192.168.111.0/24 hosts allow = 192.168.111. 127. idmap backend = tdb idmap uid = 10000-99999 idmap gid = 10000-99999 idmap config YOUR_DOMAIN:backend = rid idmap config YOUR_DOMAIN:range = 10000-99999 winbind separator = + winbind use default domain = yes winbind enum users = yes winbind enum groups = yes winbind nested groups = Yes winbind refresh tickets = yes # запрещаем печать, она не нужна как класс на FreeBSD сервере printcap name = /dev/null load printers = no printing = bsd show add printer wizard = no disable spoolss = yes # включаем протоколирование log level = 0 log file = /var/log/samba/log.%m # max log size = 50 wins support = no # В сети у меня есть WINS сервер wins server = 192.168.111.110 dns proxy = no ==== Правим /etc/rc.conf ==== Собственно, нам нужно добавить: winbindd_enable="YES" samba_enable="YES" ==== Получаем билет Керберос и включаем машину в домен Active Directory ==== Выполняем команду # kinit DomainAdminUser DomainAdminUser@YOUR_DOMAIN's Password: Признаком того, что не было никаких ошибок - как впрочем, и в большинстве команд Unix - отсутствие какого-либо вывода. Если у вас идет ругань, то тщательно проверяйте файл /etc/krb5.conf. Проверяем, что билет получен: # klist Credentials cache: FILE:/tmp/krb5cc_0 Principal: DomainAdminUser@YOUR_DOMAIN Issued Expires Principal Nov 13 19:44:50 Nov 14 05:44:50 krbtgt/YOUR_DOMAIN@YOUR_DOMAIN Видно, что билет успешно получен, видна дата, когда срок действия билета истекает. Теперь включаем машину в домен: # net ads join -U DomainAdminUser Признаком успеха является вывод: Joined 'GW2' to realm 'YOUR_DOMAIN' Если ошибка, то тщательно проверяем файл smb.conf, в частности, имя домена, к которому выполнить подключение, определяется в опциях: workgroup и realm. Проверить, что все успешно, можно командой: # net ads testjoin Если все правильно, получим вывод: Join is OK ==== Выполняем начальное тестирование ==== Запустим Самбу, если еще не сделали: # /usr/local/etc/rc.d/samba start Нам из всей портянки, нужен только WINBIND, проверяем, что он отвечает: # wbinfo -p Ping to winbindd succeeded Выводим список доменных пользователей: # wbinfo -u Выводим список доменных групп: # wbinfo -g Запрашиваем системный вызов: # getent passwd Смотрим, как SID'ы доменных пользователей видны во FreeBSD. Выполняем аутентификацию по открытому паролю: # wbinfo --authenticate=DomainAdminUser Enter DomainAdminUser's password: plaintext password authentication succeeded В принципе, на этом можно завершить. Дальше можно приступать к установке Squid. TAG: {{tag>samba FreeBSD}}