Мы — долго запрягаем, быстро ездим, и сильно тормозим.



www.lissyara.su —> www.lissyara.su —> squid+ad2008

squid+ad2008\kerberos+ldap и win7\ie8

Автор: opt1k.


В ближайшее время предстоит переход с 2003 windows server'a на 2008R2 и переход клиентов на windows 7. Я решил посмотреть как будет работать в этой ситуации старый софт. Установил под virtualbox'ом win2008,win7 и freebsd8.0. Настроил АД, ввёл в него клиента win7, на фряху поставил сквид, самбу. И тут грабли - internet explorer 8, который штатно идёт в вин7, не захотел работать со сквидом по ntlm. Гугл дал решение в правке то ли реестра, то ли политик безоспасности, но тут же была найдена рекомендация отказа от ntlm в пользу kerberos. Решил работать в этом направлении. Гугление дало решение в виде хелпера squid_kerb_ldap. С ним не получилось, последняя версия при компиляции выдавала ошибки, устранить которые я не смог, а более старая успешно собравшись отказалась работать. Уже отчаявшись я попробовал squid_kerb_auth и оно заработало! осталось лишь прикрутить авторизацию, для неё я остановился на squid_ldap_group. Как оказалось теперь можно не ставить тяжёлую самбу, но провалив попытки сгенерировать кейтаб другими способами пришлось делать это с помощью самбы.
Итак
uname -a
FreeBSD squid.testdomain.ru 8.0-RELEASE FreeBSD 8.0-RELEASE #0: 
Sat Nov 21 15:02:08 UTC 2009     
root@mason.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  amd64

Обновляем порты
cat /usr/local/etc/csup.conf
*default host=cvsup6.ru.FreeBSD.org
*default base=/usr
*default prefix=/usr
*default release=cvs tag=RELENG_8_0
*default delete use-rel-suffix
*default compress
ports-all tag=.

csup /usr/local/etc/csup.conf

Зависимые порты устанавливаются с дефолтными опциями.

Python собран без поддержки IPv6

Ставим самбу:
cd /usr/ports/net/samba34/
из опций
[X] ADS

cat /usr/local/etc/smb.conf
netbios name = squid
realm = TESTDOMAIN.RU
security = ADS
encrypt passwords = yes
password server = dc.testdomain.ru
workgroup = testdomain

Важно что бы hostname машины совпадало с netbios name.
realm - полное имя вашего домена
рабочая группа - netbios имя вашего домена
password server - адрес контроллера домена

cat /etc/resolv.conf
domain  testdomain.ru
nameserver      192.168.0.200

где 192.168.0.200 - адрес контроллера домена с поднятой ролью DNS сервера.

cat /etc/krb5.conf
[libdefaults]
      default_realm = TESTDOMAIN.RU
      dns_lookup_kdc = no
      dns_lookup_realm = no
      default_keytab_name = /etc/krb5.keytab

default_tgs_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
default_tkt_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
permitted_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5

[realms]
      TESTDOMAIN.RU = {
              kdc = dc.testdomain.ru
              admin_server = dc.testdomain.ru
      }

[domain_realm]
      .testdomain.ru = TESTDOMAIN.RU
      testdomain.ru = TESTDOMAIN.RU

проверим верность настройки kerberos, при успехе никаких сообщений быть не
должно(пользователь test должен существовать в АД):
kinit test
test@TESTDOMAIN.RU's Password:

Вводим самбу в домен:
rehash
net ads join -U test
Enter test's password:
Using short domain name -- TESTDOMAIN
Joined 'squid' to realm 'testdomain.ru'

Создаём кейтаб:
setenv KRB5_KTNAME FILE:/etc/krb5.keytab
net ads keytab CREATE
net ads keytab ADD HTTP
Warning: 
"kerberos method" must be set to a keytab method to use keytab functions.
Processing principals to add...

Ставим сквид:
cd /usr/ports/www/squid30/
из опций
[X] SQUID_KERB_AUTH
[X] SQUID_LDAP_AUTH

cat /usr/local/etc/squid/squid.conf
#порт на котором будет висеть сквид
http_port 3128
#директория под кеш и её параметры
cache_dir ufs /usr/squid/cache 8000 8 64
#лог доступа, полезен для отладки
access_log /var/log/squid/access.log squid

#сл. три строки - аутентификатор
auth_param negotiate program /usr/local/libexec/squid/squid_kerb_auth
#кол-во аутентификаторов 10 у меня хватает на сотню пользователей 
#(хватает и 4 на 100)
auth_param negotiate children 10
auth_param negotiate keep_alive on

#хелпер, который берёт информацию о принадлежности пользователя к группе из AD
external_acl_type ldap_search %LOGIN \
/usr/local/libexec/squid/squid_ldap_group \
-R -b "dc=testdomain,dc=ru" \
-f "(&(samaccountname=%v)(memberof=cn=%a,cn=users,dc=testdomain,DC=ru))" \
-D test@testdomain.ru -W /usr/local/etc/squid/authpw \
-K -h dc.testdomain.ru
acl i_allowed external ldap_search inter

acl AUTHENTICATED proxy_auth REQUIRED

acl localnet dst 192.168.0.0/24
#выпускаем всех кто прошёл kerberos аутентификацию на локальные сайты
http_access allow AUTHENTICATED localnet
#выпускаем в инет всех кто в нужной группе
http_access allow i_allowed
#всем остальным оставить попытки и заниматься своими обязанностями.
http_access deny all

Создаём файлик /usr/local/etc/squid/authpw и пишем туда пароль пользователя,
которому разрешено просматривать ldap каталог active directory.
Затем сменим владельца и доступ для безопасности.

chown squid:squid /usr/local/etc/squid/authpw
chmod 500 /usr/local/etc/squid/authpw

На контроллере домена в папке Users (именно в этой папке) создать группу
inter и поместить туда пользователей которым необходимо дать доступ в интернет.
В оснастке DNS добавляем 2 записи A и ptr для машины со сквидом
( у меня добавились автоматом после того как я ввёл самбу в домен ).
Проверяем работу ldap хелпера:
/usr/local/libexec/squid/squid_ldap_group \
-R -b "dc=testdomain,dc=ru" \
-f "(&(samaccountname=%v)(memberof=cn=%a,cn=users,dc=testdomain,DC=ru))" \
-D test@testdomain.ru -W /usr/local/etc/squid/authpw \
-K -h dc.testdomain.ru -d
test inter
OK

OK в случае если пользователь test принадлежит группе inter и ERR если нет.

В случае ошибок можно проверить доступность ldap каталога, примерно так:
ldapsearch -D "test@domain.com" -x -W -b "dc=testdomain,dc=ru" -h \
dc.testdomain.ru

результатом будет вывод содержимого ldap каталога.

mkdir /var/log/squid
chown squid:squid /var/log/squid
chown squid:squid /etc/krb5.keytab
mkdir -p /usr/squid/cache
chown -R squid:squid /usr/squid
rehash
squid -z
echo 'squid_enable="YES"' >> /etc/rc.conf
/usr/local/etc/rc.d/squid start

В ie прописываем в адресе прокси-сервервера squid.testdomain.ru и порт 3128.
Протестировано в ie8, ff 3.6

Замечу:
1)существует способ создания кейтаба без установки самбы, если кто то знает
как точно это делается - пожалуйста, сообщите мне.
2)поиск в лдап каталоге производится без шифрования, что плохо, попытки
исправить это я пока не предпринимал.
3)разделение по группам даёт массу возможностей по разгранечению доступа,
обрезанию скорости и т.д. всё это выходит за рамки данной заметки.
Тред на форуме

UPD0 07/03/2011
секцию логгинга убрал по просьбам.
Много проблем возникает из-за рассинхронизации времени на контроллере домена,
в комментариях попросили дать подсказку как с этим бороться:
Добавляем в cron следующее

ntpdate dc

где DC имя или IP вашего контроллера домена.
Чем чаще будет выполнятся, тем лучше, у меня раз в 5 минут.
Замечу что на клиенте windows xp internet explorer 6 не захотел работать,
после апдейта до 8 версии всё заработало.
Так же был протестирован FireFox 3.6.15.
Тестовый стенд:

%uname -a
FreeBSD squid.testdomain.ru 8.2-RELEASE FreeBSD 8.2-RELEASE #0: 
Thu Feb 17 02:41:51 UTC 2011     
root@mason.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  amd64

autoconf-2.68       Automatically configure source code on many Un*x platforms
autoconf-wrapper-20101119 Wrapper script for GNU autoconf
gettext-0.18.1.1    GNU gettext package
gmake-3.81_4        GNU version of 'make' utility
help2man-1.39.1     Automatically generating simple manual pages from program o
libexecinfo-1.1_3   A library for inspecting program's backtrace
libiconv-1.13.1_1   A character set conversion library
libtool-2.4         Generic shared library support script
m4-1.4.15,1         GNU m4
openldap-client-2.4.24 Open source LDAP client implementation
p5-Locale-gettext-1.05_3 Message handling functions
perl-5.10.1_3       Practical Extraction and Report Language
pkg-config-0.25_1   A utility to retrieve information about installed libraries
python27-2.7.1_1    An interpreted object-oriented programming language
samba35-3.5.6_2     A free SMB and CIFS client and server for UNIX
squid-3.1.11        HTTP Caching Proxy
talloc-2.0.1_1      Hierarchical pool based memory allocator
tdb-1.2.1_1,1       Trivial Database



размещено: 2010-04-29,
последнее обновление: 2011-03-07,
автор: opt1k

оценить статью:

*, 2010-05-31 в 20:37:43

допиши про синхронизацию ntp с контролером домена

в /etc/krb5.conf секция логинг не работает либо допиши как создать файлы под логи либо убрать секцию вообще))

к net ads keytab CREATE и net ads keytab ADD HTTP
добавь ключ -U так как на тачке авторизирован не под доменной учеткой

ие8 и фуфлефокс 3.6 и хром работают
сафари и опера не работают
касперски апдейт не работает

уточни самба 34 стэйбл? если нет то думаю лучше указать /usr/ports/net/samba
kinit test.user не совсем понятно должно быть так kinit administrator@GOOGLE.COM

уточни на win2k3 будет работать?
утосни на win2k3 с hisec policy будет работать?

*, 2010-05-31 в 20:54:16

напиши про wireshark как отловить ошибки в кербе (хотябы самый минимум)
это уже скорее в раздел траблшутинга
ну и csup счас мало кто пользуется да и новичкам меньше команд вводить когда есть portsnap

напиши про /usr/local/libexec/squid/squid_kerb_auth
как можно проверить

если на squid27 который стэйбл работает то лучше его указать по понятным причинам)))

удачи))

*, 2010-06-01 в 17:44:40

McLeod095 извиняюсь ХУЛИ эту ссылку приводить?
даже под никсами она уже не актуальна можно все через апт поставить со всеми хелперами
да тематика у нашего сайта бсд а не никсы

Alex, 2011-10-28 в 15:37:00

> Замечу:
> 1)существует способ создания кейтаба без установки самбы, если кто то знает
> как точно это делается - пожалуйста, сообщите мне.

ниже ответ если актуально

/usr/src/packages/BUILD/squid_kerb_proxy_auth$ cat README
1) Patch 2.6.STABLE13 with my patch file and extract my source to squid's src directory.
2) Run configure with CFLAGS="-I/usr/kerberos/include" LDFLAGS="-L/usr/kerberos/lib -Wl,-R/usr/kerberos/lib" LIBS="-lgssapi_krb5 -lkrb5" ./configure  (this assumes MIT Kerberos)
3) Configure Kerberos with AD as kdc
4) Create a keytab with an AD user (This will be the user for authenticating squid to the ISA server) as follows
#ktutil
ktutil:  addent -password -p markus@WINDOWS2003.HOME -k 1 -e rc4-hmac
Password for markus@WINDOWS2003.HOME:
ktutil:  wkt mm.keytab
ktutil:  quit
5) Set the keytab environment variable in the squid startup file with:
export KRB5_KTNAME=FILE:/etc/squid/mm.keytab
6) Add a line to squid.conf like
cache_peer  isa.windows2003.home       parent    8080 0  proxy-only no-query  login=NEGOTIATE
7) Contol parent access via never_direct or similar
never_direct allow all


Create a keytab for a user:

MIT

#ktutil
ktutil:  addent -password -p markus@SUSE.HOME -k 1 -e rc4-hmac
Password for markus@SUSE.HOME:
ktutil:  wkt mm.keytab
ktutil:  quit

Heimdal

#ktutil  -k mm_heim.keytab add
Principal: markus@SUSE.HOME
Encryption type: arcfour-hmac-md5
Key version: 1
Password:
Verifying password - Password:

Андрей, 2012-01-27 в 20:23:19

Генерить keytab можно еще и с помощью ktpass на виндовом сервере например так:
C:\Program Files\Support Tools>ktpass -princ HTTP/proxy1.domain.ru@DOMAIN.RU -mapuser proxy1 -crypto rc4-hmac-nt -pass "pass" -ptype KRB5_NT_SRV_HST -out proxy1.keytab
rc4-hmac-nt - т.к. 2003 домен

При установке из портов на FreeBSD 9.0 уперся в проблему, единственным симптомом которой, помимо отказа в доступе, были записи в логе
squid_kerb_auth: ERROR: gss_accept_sec_context() failed:  Miscellaneous failure (see text). unknown mech-code 0 for mech unknown
2012/01/25 20:35:09| AuthenticateNegotiateHandleReply: Error validating user via Negotiate. Error returned 'BH gss_accept_sec_context() failed:  Miscellaneous failure (see text). unknown mech-code 0 for mech unknown'
При этом на машине пользователя klistом билетик обнаруживался и в трафике между пользователем и прокси обмен токенами происходил. На прокси kinit и squid_kerb_auth_test отрабатывали нормально.
До конца причину подобного поведения я так и не понял  , но насторожило найденное описание проблем связки heimdal и шифрования rc4-hmac-nt.
Заработало так:
1. Установил из портов kerberos MIT
2. Использовал хелпер с  [url=http://sourceforge.net/projects/squidkerbauth/files/squidkerbauth/] (1.0.7), и указал при сборке ./configure --enable-mit=/usr/local
что интересно через squid пользователи авторизуются нормально а squid_kerb_auth_test выдает ошибку

Siro, 2012-08-31 в 18:52:13

http://wiki.squid-cache.org/ConfigExamples/Authenticate/WindowsActiveDirectory
Там проверенный способ создания keytab.
/usr/ports/sysutils/msktutil

Mox, 2014-02-07 в 16:23:50

Есть статья попонятней, без самбы и работают вложенные группы http://timp87.blogspot.ru/2014/02/squid-ad.html


Оставьте свой комментарий:
Ваше имя:   *
e-mail:  
жирный
наклонный
подчёркнутый
ссылка
цвет
Нынешний год:   *
 


Хостинг HOST-FOOD

2014-07-27, lissyara
gmirror

Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9

Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
подписка

    вверх      
Статистика сайта
Сейчас на сайте находится: 10 чел.
За последние 30 мин было: 82 человек
За сегодня было
1912 показов,
719 уникальных IP
 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0332 секунд
Из них PHP: 46%; SQL: 54%; Число SQL-запросов: 28 шт.
Исходный размер: 60947; Сжатая: 15277