Условия:
Задача
В случае внедрения кеширующего прокси-сервера 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
[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
Все остальные опции у меня закомментированы.
Что туда добавляем? Добавляем записи для ваших контроллеров домена.
/usr/local/etc/smb5.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"
Выполняем команду
# 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: