Статьи :Операционные системы :Железо :
OS FAQ :
Кодинг :
Сейчас на сайте :0 пользователей, 5 гостей : |
Статьи » Операционные системы » Linux » Использование доменных аккаунтов Windows аутентификации в squid
Необходимо аутентифицировать пользователей в squid на основе доменных аккаунтов. Не всегда подходит классическая схема учета трафика по IP адресам примеры случаев когда подобная ситуация не устраивает достаточно полно описаны в [1]. Кроме того, стояла зад
Автор: Разместил: Amro Дата: 2006-06-05 01:06 Комментарии: ![]() ![]() Использование доменных аккаунтов Windows аутентификации в squidЗадача. [libdefaults] default_realm = PIVA.NET [realms] PIVA.NET = { kdc = lab002.piva.net admin_server = lab002.piva.net } Все остальные опции можно оставлять по умолчанию. Попробуем соединиться с сервером Kerberos. [root@lab003 ~] kinit -p Administrator@piva.net Administrator@PIVA.NET's Password: и вводим пароль, система должна выдать kinit: NOTICE: ticket renewable lifetime is 1 week проверим соединение, в моем случае это выглядит так: [root@lab003 ~] klist Credentials cache: FILE:/tmp/krb5cc_0 Principal: administrator@PIVA.NET Issued Expires Principal Feb 22 17:10:40 Feb 23 03:10:38 krbtgt/PIVA.NET@PIVA.NET Отлично, соединение есть. 2. Samba Устанавливаем /usr/ports/net/samba3/ Необходимые опции [X] ADS With Active Directory support [X] WINBIND With WinBIND support Далее необходимо настроить smb.conf Отличное руководство по этому процессу [6]. Замечание: на четвертой версии FreeBSD при использовании Kerberos клиента версии 0.6.3 программа wbinfo не могла проверить наличие доверительного аккаунта в домене(wbinfo -t). Проблема решилась использованием security level domain вместо ads. Приведу опции, которые добавлял я: workgroup = piva server string = lab003 netbios name = lab003 realm = piva.net security = ads password server = lab002.piva.net encrypt passwords = yes winbind separator = + winbind use default domain = yes winbind uid = 10000-20000 winbind gid = 10000-20000 winbind enum users = yes winbind enum groups = yes template homedir = /home/winnt/%D/%U template shell = /usr/local/bin/bash Как и советует автор [1], добавим необходимы нам имена в файл /usr/local/etc/lmhosts 10.10.10.1 lab001.piva.net 10.10.10.2 lab002.piva.net 10.10.10.3 lab003.piva.net Входим в домен: net ads join -U Administrator%password Joined 'LAB003' to realm 'PIVA.NET' 3. winbindd Следующим шагом у нас запуск winbindd. Я запускал с ключиком -d10, в debug режиме. Проверить работоспособность winbind можно командой wbinfo Необходимо удостовериться, что winbind нормально работает и может получать списки пользователей и групп с сервера. [root@lab003 ~] wbinfo -t checking the trust secret via RPC calls succeeded Это означает что доверительный аккаунт компьютера создан. Посмотрим на список пользователей. [root@lab003 ~] wbinfo -u (для просмотра пользователей) administrator guest support_388945a0 lab002$ krbtgt iusr_lab002 iwam_lab002 lab001$ iwam_lab001 iusr_lab001 lab003$ pablo lab005$ Как видно, аккаунт для нашего компьютера уже создался (lab003$) и взаимодействие налажено. Попробуем аутентифицироваться в домене: [root@lab003 ~] wbinfo -a administrator%password plaintext password authentication succeeded challenge/response password authentication succeeded На этом настройку winbind можно считать законченной. 4. squid Устанавливаем /usr/ports/www/squid Насколько видно из Makefile helper для winbind включен по умолчанию. Т.е. ничего особенного конфигурировать не нужно. После установки при запущенном winbindd необходимо проверить работу helper'а Для этого запускаем /usr/local/bin/ntlm_auth --helper-protocol=squid-2.5-basic Вводим piva+administrator password Если получен ответ OK значит все отлично. Иначе необходимо смотреть логи winbindd Настраиваем собственно сам squid. Отличное руководство по это делу [3] В данном случае были добавлены следующие стороки: auth_param ntlm program /usr/local/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp auth_param ntlm children 10 auth_param ntlm max_challenge_reuses 0 auth_param ntlm max_challenge_lifetime 2 minutes auth_param basic program /usr/local/bin/ntlm_auth --helper-protocol=squid-2.5-basic auth_param basic children 10 auth_param basic realm Squid proxy-caching web server auth_param basic credentialsttl 2 hours Данная конфигурация описывает два helper'a один дня IE (ntlmssp) другой для всех остальных пользователей (mozilla, opera, etc). Необходимо отметить что для нормальной работы из броузера у пользователя под который работает squid должно хватать прав для обращения к сокету на котором слушает winbindd. Согласно man ntlm_auth это winbindd_privileged в $LOCKDIR. В моем случае сокет находиться в /var/db/samba/winbindd_privileged. Для решения проблемы я изменил группу владельца этой директории на squid. После этого можно приступать к полноценному тестированию из веб броузера. 5. Как это выглядит В случае если пользователь не входит в домен ему выдается окно в котором предлагается ввести имя пользователя, пароль и домен. Клиенты вошедшие в домен и использующие IE аутентифицируются прозрачно. Клиенты вошедшие в домен и использующие иные броузеры аутентифицируются по протоколу basic. Каждый раз при запуске вводят имя и пароль. Самая главная проблема - невозможность аутентифицировать пользователей с русскими именами. 6. Дополнительный функционал Дополнительно можно использовать возможность управлять доступом в Internet из Windows. Для этого можно воспользоваться параметром --require-membership-of= ntlm_auth. Как видно из названия при аутентификации helper будет требовать наличие пользователя в определенной группе. В моем случае указание там названия группы проблемы не решило. Пришлось указывать универсальный идентификатор группы в домене (SID). Узнать его можно с помощью уже знакомой программы wbinfo. Например, если необходимо узнать SID группы inetusers: [root@lab004 ~] wbinfo -n inetusers S-1-5-21-1828638205-4279006917-513177360-1121 Domain Group (2) После этого необходимо изменить конфигурационный файл squid указав в местах описания хелперов необходиму директиву. auth_param ntlm program /usr/local/bin/ntlm_auth --require-membership-of=S-1-5-21-1828638205-4279006917-513177360-1121 --helper-protocol=squid-2.5-ntlmssp Теперь пользователи которые не входят в группу inetusers не смогут выйти в Internet. Источники. 1. http://www.opennet.ru/base/net/win_squid.txt.html 2. http://www.squid-cache.org 3. http://www.squid-cache.org/Doc/FAQ/FAQ-23.html 4. http://devel.squid-cache.org/ntlm/squid_helper_protocol.html 5. http://groups-beta.google.com 6. http://samba.org/samba/docs/man/Samba-HOWTO-Collection/domain-member.html 7. http://www.wlug.org.nz/ActiveDirectoryKerberos
Автор: Misha Volodko Материал взят с сайта linux.ru |