Автор статьи: Дата: 30.07.2003
последние исправления: 17.05.2003
1. Введение и отказ от обязательств.
Все, что здесь написано, не является каким-то официальным документом и не претендует на полноту
и исключительность. К созданию этого опуса меня побудили повторяющиеся вопросы (на форумах
http://linuxportal.ru и ) о том, как сделать то, что вынесено в заголовок. Здесь я опишу только то, что сделал я и только то, что у меня гарантированно работает.
Ну и под занавес немного примечаний. Я не обязываю вас делать то, что здесь описано и не утверждаю, что мои действия абсолютно правильны и что по-другому поступить невозможно. Это всего лишь описание моих действий, а не руководство к вашим действиям. Если вы решите действовать также, то все возможные последствия останутся на вашей совести и я не гарантирую того, что у вас все будет работать так же, как и у меня.
2. Что для этого нужно и где это взять.
- кэширующий прокси-сервер squid. Я использовал версию squid-2.4.DEVEL2, взятую с
- программу авторизации по протоколу smb на Win-машинах - smb_auth-0.05, взятую с
- samba-2.2.2 для smb_auth (точнее - только файлы nmblookup и smbclient), . Версия 2.2.7 также работает.
О том как собирать каждую из этих программ читайте в их файлах INSTALL.
3. Подстраиваем контроллер домена.
На контроллере домена (у меня это две w2k AS + TS) в папке %SystemRoot%\SYSVOL\sysvol\your_domain_name\scripts или,
короче говоря, в шаре NETLOGON надо создать файл под названием proxyauth. Его содержимое значения не имеет, так как smb_auth проверяет права на чтение этого файла и через прокси пройдут только те пользователи домена, которым разрешено читать этот файл.
4. Конфигурируем сквид.
В файле squid.conf (обычно находится в /etc/squid, но бывает всякое ) надо найти раздел под названием
"OPTIONS FOR EXTERNAL SUPPORT PROGRAMS", а в нем опцию "authenticate_program". Она должна выглядеть примерно так:
authenticate_program /path/to/smb_auth -W ИМЯ_ВАШЕГО_ДОМЕНА
smb_auth этой информации вполне достаточно для того, чтобы добраться до какого-нибудь рабочего контроллера домена. Дальше надо создать список доступа примерно таким макаром:
acl domainusers proxy_auth REQUIRED
и указать правило для этого списка:
http_access allow domainusers
Все, теперь надо выйти в шелл и скомандовать
# squid -k reconfigure
У меня после этого все заработало как надо.
5. Примечания.
а) Правило "http_access allow domainusers" стоит прописать после всех правил allow, но перед всеми правилами deny, потому что сквид будет запрашивать авторизацию у всех, кто к нему придет и пытаться их проверять на контроллере домена. Поэтому если есть необходимость пустить кого-то напрямую, то либо пропишите это правило перед правилом про domainusers, либо вообще в обход сквида при помощи ipchains/iptables.
Наверное все это справедливо и для ftp_access и WinNT 4.0, но я этого не проверял.
б) Некоторые пользователи в моей сети используют в качестве логинов русский текст и из-за этого не могут авторизоваться. Проблема решилась правкой одной строки в скрипте /usr/bin/smb_auth.sh:
authinfo=`$SAMBAPREFIX/bin/smbclient "//$dcname/$AUTHSHARE" -I $dcip -d 9 -E -W "$DOMAINNAME" -c "get $authfilebs -" -U $USER 2>/dev/null`
Выделенный фрагмент необходимо добавить, в оригинале его нет.
6. Автор.
San АНДРЕЕВ.
Обоснованные исправления и дополнения приветствуются.
|