Содержание

Устанавливаем SAMBA в роли бэкенда для авторизации в Microsoft Active Directory (для SQUID)

Условия:

Задача

В случае внедрения кеширующего прокси-сервера 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

Настраиваем конфиг. файл Керберос. Нам нужно очень внимательно отнестись к опциям в этом файле. Опции в этом файле:

/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

/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

/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

Собственно, нам нужно добавить:

/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: