Документация по ОС FreeBSD
Пятница, 28.11.2025, 17:09
Главная
Регистрация
Вход
Приветствую Вас
Гость
|
RSS
Меню сайта
Главная страница
Новости в мире Unix
NEW
Каталог файлов
NEW
Установка и настройка
Ports & Packages
cvs
Безопасность
Работа с железом
X Window
Multimedia
Man pages
Net
Apache
DNS
FTP
Mail
Samba
Squid
SSH
VPN
РРР
Shell
IPFW
Tips'n'tricks
RFC
Книги по FreeBSD
Темы экзамена BSDA
Гостевая книга
Форум на bsdportal.ru
Каталог сайтов
Самый свежий софт
Каталог ссылок
Категории каталога
Apache
[58]
DNS
[25]
FTP
[27]
Mail
[74]
Samba
[24]
Squid
[46]
SSH
[23]
VPN
[35]
РРР
[20]
Net
[173]
Главная
»
Статьи
»
Сеть
»
Squid
Аутентификация пользователей в squid через доменные аккаунты Windows
Задача.
Необходимо аутентифицировать пользователей в squid на основе доменных аккаунтов. Не всегда подходит классическая схема учета трафика по IP адресам примеры случаев когда подобная ситуация не устраивает достаточно полно описаны в. Кроме того, стояла задача защищать подключение к Internet в большой сети от приносимых ноутбуков.
Инструменты.
1. OC FreeBSD использовались версии 4.11-RELEASE и 5.3-RELEASE-p5
2. Windows 2003 - контроллер домена.
3. samba-3.0.11
4. squid-2.5.8
Сеть и топология.
Домен - piva.net
Контроллер домена - lab002.piva.net
Рабочие станции соответственно - labxxx.piva.net
Машина на которой установлен squid - lab003.piva.net
Практическое руководство.
1. Настройка клиента Kerberos
В FreeBSD существует две реализации Kerberos производства MIT и HEIMDAL, соединиться с сервером Kerberos используемым в Windows 2003 у меня получилось только в случае использования Kerberos клиента производства HEIMDAL. Более того, он работает, только если версия старше 0.6. В пятой ветке FreeBSD в базовой системе идет Kerberos производства HEIMDAL версии
0.6.1, поэтому для его использования необходимо добавить в файл /etc/make.conf следующие параметры:
MAKE_KERBEROS5 = yes
ENABLE_SUID_K5SU = yes
После этого необходимо пересобрать мир (make buildworld && make installworld). Как это делается, я описывать не буду, обратитесь к руководствам по этой теме.
В базовой системе четвертой версии FreeBSD идет клиент Kerberos производства HEIMDAL однако довольно старой версии 0.5.1. Для использования сервера Kerberos производства HEIMDAL версии 0.6.х в четвертой версии FreeBSD необходимо установить порт /usr/ports/security/heimdal.
Важное замечание - DNS сервер, прописанный в /etc/resolv.conf ДОЛЖЕН ЗНАТЬ о зоне используемой для построения Windows домена (наиболее удобный путь настроить его как вторичный DNS сервер). Клиент Kerberos
будет искать записи типа SRV _kerberos._udp.
Настраиваем клиента Kerberos. В файл /etc/krb5.conf необходимо добавить информацию о сервере Kerberos в моем случае это:
[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.
Автор:
Misha Volodko
Категория:
Squid
| Добавил:
oleg
(12.11.2007)
Просмотров:
1495
| Рейтинг:
0.0
/
0
|
- Оценить -
Отлично
Хорошо
Неплохо
Плохо
Ужасно
Всего комментариев:
0
Добавлять комментарии могут только зарегистрированные пользователи.
[
Регистрация
|
Вход
]
Форма входа
Друзья сайта
Google+
Copyright MyCorp © 2025