Эта документация основана на статье Д.Новикова "Авторизация Windows- пользователей в SQUID на основе их доменных аккаунтов"
Оригинал: http://www.artmagic.ru/labs/sqlandwin.shtml

## Инсталляция и настройка программного обеспечения

### ВНИМАНИЕ!!! Этот пункт необходим только если вы планируете работать с аутентификацией пользователей в домене ActiveDirectory Windows2000/2003 по протоколу NTLM

### 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. - Диапазоны IP адресов, с которых могут обращаться к samba. Для безопасности.
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
security = domain
password server = yourservername
encrypt passwords = yes

Еще в /etc/samsba/lmhosts внесите ваш контроллер домена:
your.ip.addr yourservername
Это очень странно, но у меня samba стала авторизоваться в домене win2003 только после занесения имени сервера в /etc/samsba/lmhosts.

После изменения smb.conf можно попробовать зарегистрироваться в домене Windows.

net join -U Administrator
Необходимо чтобы первый вход с компьютера с samba был осуществлен из-под пользователя домена windows, имеющего права администратора домена. В этот момент происходит обмен секретами между samba и контроллером домена.

Если регистрация в домене прошла успешно, будет выдано сообщение:

Joined domain YourDomain.

Далее запускаем демона 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

### 2. Настройка NTLM авторизации в SAMS

Для настройки NTLM авторизации пользователей в Windows домене необходимо в дереве настроек WEB интерфейса SAMS выбрать пункт "Администрирование SAMS", далее в нижнем фрейме нажать кнопку
В открывшемся диалоге выьираем способ авторизации пользователей "NTLM". Далее нажимаем кнопку "Тестировать ответ PDC". В открывшемся окне будет выведен список пользовтаелей, зарегистрированных домене.

Далее заводим пользователей в систему.
Пользователи -> загрузить всех пользователей домена.
Если контроллер домена под win2000/2003 выдает только имена пользователей без имени домена, введите в поле "Домен" название вашего домена. Это нужно сделать обязательно, так как squidу контроллер домена вполне может выдавать и название домена. И оно будет занесено в файл access.log.

Конфигурируем squid для работы с NTLM авторизацией, как описано ниже, даем команду на реконфигурацию squid и пробуем авторизоваться пользователем.

если авторизоваться удалось, то все оставляем как есть, иначе заходим и смотрим что пишет squid в access.log

Например:
1126510610.023 1617 192.168.0.153 TCP_MISS/200 11761 GET http://www.apc.com/resource/include/hitbox/hbe.js DOMAIN+User DIRECT/159.215.19.11 application/x-javascript

В зависимости от того, как записан пользователь в строке, изменяем настройки ntlm в sams:

если домен записан:
DOMAIN+user - выставляем "Домен пользователя в access.log записывть" в "ЗАГЛАВНЫМИ" буквами
domain+user - выставляем "Домен пользователя в access.log записывть" в "строчными" буквами
Domain+user - выставляем "Домен пользователя в access.log записывть" в "без изменения" буквами.

если домен записан:
domain+USER - выставляем "Домен пользователя в access.log записывть" в "ЗАГЛАВНЫМИ" буквами
domain+user - выставляем "Домен пользователя в access.log записывть" в "строчными" буквами
domain+User - выставляем "Домен пользователя в access.log записывть" в "без изменения" буквами - если у вас в имени пользователя используются и заглавные и строчные буквы.

Если спользуется домен, то выставьте разделитель. Это может быть и/или
+
/
@

### Конфигурируем SQUID на работу с winbind (ntlm,basic) авторизацией в Active Directory

Разработчики squid рекомендуют использовать при работе с samba 3.x хелпер, идущий с samba 3.x ntlm_auth.

в файл /etc/squid/squid.conf добавляем строки:

auth_param ntlm program /path/to/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 5
auth_param ntlm max_challenge_reuses 0
auth_param ntlm max_challenge_lifetime 2 minutes
auth_param basic program /path/to/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, и IE будет спрашивать пароль.

Если хелпер wb_ntlmauth по какой-то причине не удается заставить авторизовать пользователей, можете попробовать использовать хелпер fakeauth_auth.