Пакеты, необходимые для работы с NTLM авторизацией
SQUID
MySQL-server
MySQL-client
mysql-devel - файлы заголовков для mysql
apache
mod_php (модуль php для апаче)
php - консольный php
php-mysql - библиотека поддержки mysql в php
libpcre -библиотека
libpcre-devel -файлы заголовков libpcre
samba-client
samba-server
Kerberos-server (или libkrb5 в зависимости от ОС)
1.Установка и конфигурация SAMBA 3.x
Для того, чтобы система могла авторизоваться в Windows домене необходимо инсталлировать сервер SMB
протокола для *NIX систем SAMBA. Работу с Active Directory поддерживает samba версии 3.х.
Необходимо чтобы SAMBA была собрана с поддержкой winbind, т.е.
configure --with-winbind --with-winbind-auth-challenge
далее компилируем и инсталлируем:
make
make install
После установки, SAMBA нужно настроить на использование winbind и домен Windows.
Файл smb.conf должен содержать следующие строки:
[global]
workgroup = WORK - Имя нашего Windows-домена
netbios name = PDC - Имя сервера (необязательно)
server string = ProxyServer
hosts allow = 10.128. 127. - Для безопасности.
winbind separator = +
Если у вас в сети только один домен и вы хотите при авторизации пользователя на PDC использовать
только имя пользователя без имени домена, или ваш PDC выдает только имя пользователя без имени
домена, можно прописать
winbind use default domain = yes
Иначе, если вы хотите использовать при авторизации конструкцию domain+user (у вас в сети несколько доменов), пропишите
winbind use default domain = no
winbind uid = 10000-20000
winbind gid = 10000-20000
winbind enum users = yes
winbind enum groups = yes
template homedir = /home/winnt/%D/%U
template shell = /bin/bash
max log size = 50
realm = имя.домена (например domain.local)
security = ads (заместо domain)
password server = yourservername
encrypt passwords = yes
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
dns proxy = no
use sendfile = yes
Еще в /etc/samba/lmhosts внесите ваш контроллер домена:
your.ip.addr yourservername
Например 192.168.0.2 PDC
Настраиваем kerberos
Для этого правим /etc/krb5.conf
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
ticket_lifetime = 24000
default_realm = ИМЯ.ДОМЕНА
dns_lookup_realm = false
dns_lookup_kdc = false
[realms]
ИМЯ.ДОМЕНА = {
kdc = ip_адрес_PDC:88
admin_server = ip_адрес_PDC:749
default_domain = имя.домена
}
[domain_realm]
.имя.домена = ИМЯ.ДОМЕНА
имя.ДОМЕНА = ИМЯ.ДОМЕНА
[kdc]
profile = /var/lib/kerberos/krb5kdc/kdc.conf
[pam]
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
Важно: Регистр букв и расположение точек важны в конфиге kerberos
Теперь можно попробовать зарегестрироваться в домене Windows.
net ads join -S ip_адрес_PDC -U имя_пользотеля_входящего_в_группу_администраторы_домена_PDC
Необходимо чтобы первый вход с компьютера с samba был осуществлен из-под пользователя домена windows,
имеющего права администратора домена. В этот момент происходит обмен секретами между samba и
контроллером домена.
Если регистрация в домене прошла успешно, будет выдано сообщение:
Joined 'название машины' to realm 'MY_DOMAIN.LOCAL'
Далее запускаем демона WINBINDD:
winbindd -d9
и контролируем его работу:
команда wbinfo -p должна вернуть:
Ping to winbindd succeeded on fd 6
команда wbinfo -t должна вернуть:
checking the trust secret via RPC calls succeeded.
Если это не так, заглядываем в логи winbind и разбираемся в чем дело.
Копируем библиотеку libnss_winbind.so в каталог /lib:
cp nsswitch/libnss_winbind.so /lib
создаем символические ссылки на нее:
ln -s /lib/libnss_winbind.so /lib/libnss_winbind.so.1
ln -s /lib/libnss_winbind.so /lib/libnss_winbind.so.2
Изменяем файл /etc/nsswitch.conf. Он должен содержать строки вида
passwd: files winbind
group: files winbind
Перезапустите winbindd
Пробуем авторизовать пользователя в Windows домене:
wbinfo -a [домен+]пользователь_домена%пароль
Если домен один то указывать домен не обязательно.
если авторизация прошла успешно, будет выдано сообщение:
plaintext password authentication succeeded
challenge/response password authentication succeeded
Конфигурируем SQUID на работу с winbind (ntlm,basic) авторизацией (Windows NT, Active Directory)
Проверим работоспособность ntlm модуля, то что собственно и отвечает за проверку имени пользователя и пароля для PDC.
/usr/bin/ntlm_auth --username=barabashka
password:
NT_STATUS_OK: Success (0x0)
Правим конфиг squid /etc/squid/squid.conf
auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 25
auth_param ntlm max_challenge_reuses 0
auth_param ntlm max_challenge_lifetime 2 minutes
auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
Причем важно чтобы NTLM авторизация шла первой, иначе будет применяться авторизация basic, и браузер будет спрашивать пароль.
Вот собственно пока уменя все.
ЗЫ. Все что я здесь указал нового (в т.ч. и Kerberos) можно найти здесь: http://volgograd.lug.ru/wiki/GrableVodstvo/articles/SquidNtlm