====== Устанавливаем 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}}