Авторизация squid в домене Windows 2003 Server
Авторизация squid в домене Windows 2003 Server
FreeBSD 5.4 + Squid-2.5.stable9 + авторизация в домене Windows 2003 Server
В данном руководстве предполагается, что прокси-сервер работает под
операционной системой FreeBSD версии 5.4, контроллер домена стоит на Windows
2003 Server Enterprise Edition. Эта статья рассчитана на совершенно
неподготовленного пользователя, поэтому просьба некоторым сильно
“продвинутым” товарищам воздержаться от комментариев в ее адрес, т.к. их
мнения нахрен не нужны никому. Способов авторизации, которые применяются в
Squid довольно много. Здесь будет рассмотрен только один. Все программное
обеспечение ставилось из портов.
1. Необходимое программное обеспечение
1.1 Операционная система FreeBSD-5.4
1.2 Клиент Kerberos производства HEIMDAL версии 0.6.3
1.3 Прокси-сервер Squid версии 2.5.STABLE9
1.4 Samba-3.0.12
1.5 Должна быть установлена коллекция портов
2. Необходимые настройки операционной системы
2.1 Разрешение имен
2.1.1 Если в сети есть DNS-сервер, c настроенными зонами прямого и обратного
просмотра, то в файле /etc/resolv.conf надо прописать следующее:
domain <имя_домена>
nameserver <IP-адрес DNS-сервера>
Пример:
domain fuck-you.ru
nameserver 192.168.0.101
2.1.2 Если в сети нет DNS-сервера, то необходимо изменить файлы hosts на
контроллере домена и на FreeBSD.
Для FreeBSD добавим следующие строчки в файл /etc/hosts
<IP-адрес контроллера домена> <полное_имя> <псевдоним>
<IP-адрес компа с FreeBSD> <полное_имя> <псевдоним>
Пример:
192.168.0.101 srv.fuck-you.ru srv
192.168.0.100 freebsd.fuck-you.ru freebsd
Для контроллера домена Windows 2003 Server в файл
\Windows\System32\drivers\etc\hosts пишем следующее:
<IP-адрес сервера> <имя_хоста> <полное_имя>
<IP-адрес компа с FreeBSD> <имя_хоста> <полное имя>
Пример:
192.168.0.101 srv srv.fuck-you.ru
192.168.0.100 freebsd freebsd.fuck-you.ru
Примечание: Операционная система Windows не обязательно ставится в папку
C:\Windows, поэтому файл hosts может быть найден так:
<имя_системного_диска>:\<имя_системной_папки>\System32\drivers\etc\hosts
2.2 Согласование времени
Между контроллером домена и системой FreeBSD системное время не должно
различаться более, чем на 5 минут, иначе сервер Керберос не выдаст билет,
необходимый для аутентификации и соответственно вся система не будет работать.
3 Установка программного обеспечения
3.1 Установка Керберос производства HEIMDAL
3.1.1 Переходим в каталог порта:
cd /usr/ports/security/heimdal
3.1.2 Вводим команду:
make install
Система полезет в интернет, чтобы закачать оттуда пакет heimdal-0.6.3.tar.gz.
Если закачать пакет по какой-то причине не удастся, то скачать его с помощью
другой машины и скопировать в /usr/ports/distfiles, после чего снова выполнить
пункты, начиная с 3.1.1.
3.1.3. Перейти в каталог:
cd /usr/ports/security/heimdal/work/heimdal-0.6.3
и скопировать оттуда файл krb5.conf в каталог /etc/
cp krb5.conf /etc/
3.2 Настройка клиента Керберос
3.2.1 Файл /etc/krb5.conf должен выглядеть примерно так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
[libdefaults] default_realm = FUCK-YOU.RU clockskew = 300 v4_instance_resolve = false v4_name_convert = { host = { rcmd = host ftp = ftp } plain = { something = something-else } } [realms] FUCK-YOU.RU = { kdc = srv.fuck-you.ru admin_server = srv.fuck-you.ru } [domain_realm] .fuck-you.ru = FUCK-YOU.RU |
В этом файле обязательно должен быть соблюден регистр букв, то есть БОЛЬШИЕ
БУКВЫ должны быть БОЛЬШИМИ, а маленькие соответственно маленькими.
fuck-you.ru и FUCK-YOU.RU – имя домена, используемого в моей системе. У вас,
естественно оно будет другим.
kdc – это имя центра распределения ключей. Обычно оно совпадает с именем
виндовозного серванта, если он один.
3.2.2 Проверка соединения с сервером Kerberos
kinit -p <имя_юзера_из_домена>@<имя_домена>
Пример:
kinit -p Administrator@fuck-you.ru либо:
kinit -p Administrator
Система в ответ должна написать:
Administrator@FUCK-YOU.RU’s password:
Вводим пароль админа, если вы, конечно админ, либо пароль юзера, имя которого
идет после команды kinit -p и нажимаем enter. Система должна ответить:
kinit: NOTICE: ticket renewable lifetime is 1 week в случае правильного пароля
или
kinit: krb5_get_init_creds: Preauthentication failed, если пароль неверный.
3.2.3 Проверим состояние соединения
klist
Ответ системы должен быть примерно такой:
Credentials cache: FILE:/tmp/krb5cc_0
Principal: Administrator@FUCK-YOU.RU
Issued ExpiresPrincipal
Aug 18 14:50:56 Aug 19 00:50:50 krbtgt/FUCK-YOU.RU@FUCK-YOU.RU
в благоприятном случае, то есть был получен билет от Kerberos.
3.3 Установка и настройка Samba-3.0.12
3.3.1 Переходим в каталог портов
cd /usr/ports/net/samba3
3.3.2 Настраиваем конфигурацию Samba:
make config
Должно появиться окно, где клавишей пробел устанавливаем либо снимаем крестик
с нужной опции. Для тех, кто в танке: если крестик установлен, то опция будет
установлена, а если крестик снят – сам не знаю, что будет.
В принципе, для работы создаваемой системы достаточно, чтобы были установлены
[X] ADS
[X] WINBIND
Приведу пример своих настроек:
[X] LDAP With LDAP support (с подержкой LDAP протокола)[может пригодиться]
[X] ADS With Active Directory support (обязательно)
[X] CUPS With CUPS printing support(печать на виндовые принтеры или наоборот)
[X] WINBIND With WinBIND support (обязательно)
[X] ACL_SUPPORT With ACL support (хорошая вещь, также пригодится)
[X] SYSLOG With Syslog support (протоколирование событий)
[X] QUOTAS With Quota support
[X] UTMP With UTMP support (хрен знает, что такое)
[X] MSDFS With MSDFS support
[ ] SAM_XML
[X] SAM_MYSQL
[X] SAM_PGSQL
[ ] SAM_OLD_LDAP
[X] PAM_SMBPASS (не помешает)
[ ] EXP_MODULES (лучше не ставить)
[X] POPT (тоже непонятная хрень)
Нажимаем ОК
make install
Нужные пакеты закачиваются из интернета, конфигурируются и ставятся.
3.3.3 Редактирование файла smb.conf:
Копируем файл smb.conf.default в smb.conf
cp /usr/ports/net/samba3/work/smb.conf.default /usr/local/etc/smb.conf
либо переименовываем файл /usr/local/etc/smb.conf.default в /usr/local/etc/smb.conf
Редактируем этот файл:
ee /usr/local/etc/smb.conf
У меня он выглядит так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
[global] workgroup = fuck-you server string = fuck you mazefakers netbios name =freebsd security = ads realm = fuck-you.ru password server = srv.fuck-you.ru encrypt passwords = yes winbind separator = + winbind use default domain = yes winbind uid = 10000-15000 winbind gid = 10000-15000 winbind enum users = yes winbind enum groups = yes host allow = 192.168.0 127.0.0.1 (только для моей сетки принимаются запросы) log file = /var/log/samba/log.%m max log size = 50 |
На самом деле файл намного длиннее, но все остальные настройки к системе дела
не имеют.
3.3.5 Пробуем войти в домен
net ads join -U administrator%password
Пример:
net ads join -U administrator%3214
При удачном исходе система должна написать примерно следующее:
Joined ‘FREEBSD’ to realm ‘FUCK-YOU.RU’
При появлении такого ответа можно и за пивком сбегать – в принципе полдела уже
сделано.
3.3.6 Настройка запуска SAMB’ы
Добавляем строку samba_enable=”YES” в /etc/rc.conf
либо вместо этой строки несколько других строк для раздельного запуска:
smbd_enable=”YES”
nmbd_enable=”YES”
winbindd_enable=”YES”
Для нашей системы достаточно, чтобы в файле было либо smbd_enable, либо
winbindd_enable.
3.3.7 После перезагрузки Samba запустится автоматически, либо можно запустить
вручную:
/usr/local/etc/rc.d/samba.sh
3.3.8 Проверка работоспособности winbind
Пишем команду:
wbinfo -t
Должен появиться ответ:
checking the trust secret via RPC calls succeeded.
Если такой ответ получен, значит доверительная учетная запись компьютера
создана.
3.3.9 Проверяем нормальную работу winbind
wbinfo -u
Должен появиться список пользователей и компьютеров, для нашего компа должно
быть : freebsd$
wbinfo -g
Должны увидеть список групп в контроллере домена
3.3.10 Проверяем аутентификацию в домене
wbinfo -a <имя_юзера>%<пароль_юзера>
Пример:
wbinfo -a irina%321
Ответ:
plaintext password authentification succeeded
challenge/response password authentification succeeded
3.4 Настройка файла переключения служб /etc/nsswitch
Добавляем следующие строки:
passwd: files winbind
group: files winbind
3.5 Проверка распознавания системой FreeBSD доменных пользователей:
Пример:
id Administrator
Ответ:
uid=10000(Administrator) gid=10005(пользователи домена)
groups=10005(пользователи домена) , 10004(администраторы домена) и т.д
3.6 Установка и настройка прокси-сервера Squid-2.5.stable9
Заходим в /usr/ports/www/squid и забиваем команду:
make install
Как и всегда все должно закачаться и поставиться автоматически.
Настраиваем конфигурационный файл /usr/local/etc/squid/squid.conf.
В нем должны присутствовать такие строки:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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 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 auth_param basic casesensitive off acl all src 0.0.0.0/0.0.0.0 acl squidusers proxy_auth REQUIRED(определяем группу юзеров) http_access allow squidusers(разрешаем им доступ) http_access deny all |
3.7 Выставляем права доступа на каталог /var/db/samba/winbindd_priveleged
Они должны быть 750(rwx-r-x—). Группой владельца должна быть группа squid.
3.8 Перезапускаем SQUID и проверяем работу системы. В браузере выставляем, чтобы он ходил через прокси, указываем номер порта, указынный в конфиге сквида. В случае использования Internet Explorer сквидовское окно с запросом авторизации не должно высвечиваться, то есть все будет абсолютно прозрачно. В случае Оперы, Мозиллы и т.д все-таки придется вбивать логин и пароль.
Примечание: Если учетные записи из домена Windows имеют русское написание, то хоть тресни – работать система не будет.