Squid + AD + ntlm через раз запрашивает у пользователя пароль
Имеется корпоративная сеть, около 60 машин.
Возникла необходимость поднять прокси сервер.
Взял связку Samba + Squid
Ядро:
proxy2 ~ # uname -a Linux proxy2 2.6.39-gentoo-r3 #3 SMP Wed Aug 24 15:51:35 MSD 2011 x86_64 AMD Athlon(tm) 64 Processor 3000+ AuthenticAMD GNU/Linux
Сквид и самба:
net-proxy/squid-3.1.8 USE="epoll kerberos ldap mysql pam snmp ssl -caps -ecap -icap-client (-ipf-transparent) -ipv6 (-kqueue) -logrotate -nis (-pf-transparent) -postgres -radius -samba -sasl (-selinux) -sqlite -test -tproxy -zero-penalty-hit" net-fs/samba-3.5.11 USE="acl ads aio client ldap netapi pam readline server smbclient syslog winbind -addns -avahi -caps -cluster -cups -debug -doc -examples -fam -ldb -quota -smbsharemodes -smbtav2 -swat"
Вот конфиги (имя домена изменил на company.local):
/etc/samba/smb.conf
[global] workgroup = COMPANY netbios name = proxy2 server string = %h server (%v) load printers = no printing = bsd printcap name = /dev/null disable spoolss = yes log file = /var/log/samba/log.%m max log size = 1000 log level = 3 hosts allow = 192.168. map to guest = bad user nt acl support = yes nt status support = yes security = ads password server = pdc.company.local passdb backend = tdbsam realm = company.local encrypt passwords = true winbind use default domain = yes winbind uid = 10000-20000 winbind gid = 10000-20000 winbind enum groups = yes winbind enum users = yes winbind offline logon = true winbind cache time = 900 socket options = TCP_NODELAY SO_RCVBUF=16384 SO_SNDBUF=16384 interfaces = 192.168.0.1/24 local master = no os level = 0 domain master = no preferred master = no domain logons = no name resolve order = host lmhosts bcast unix charset = UTF-8 dos charset = 866 display charset = UTF-8 dns proxy = No
/etc/krb5.conf
[logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = COMPANY.LOCAL dns_lookup_realm = true dns_lookup_kdc = true ticket_lifetime = 24000 #forwardable = yes [realms] COMPANY.LOCAL = { kdc = pdc.company.local admin_server = pdc.company.local default_domain = company.local } [domain_realm] .company.local = COMPANY.LOCAL company.local = COMPANY.LOCAL
/etc/squid/squid.conf
http_port 192.168.0.9:8080 #debug_options ALL,1 33,2 #debug_options ALL,1 28,9 #debug_options ALL,1 33,2 28,9 access_log /var/log/squid/access.log squid cache_store_log none cache_log /var/log/squid/cache.log hosts_file /etc/hosts error_directory /usr/share/squid/errors/ru-ru cache_effective_user squid cache_effective_group squid auth_param negotiate program /usr/bin/ntlm_auth --helper-protocol=gss-spnego --require-membership-of="S-1-5-21-674429568-516021480-856271653-1304" auth_param negotiate children 30 auth_param negotiate keep_alive off auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp --require-membership-of="S-1-5-21-674429568-516021480-856271653-1304" auth_param ntlm children 30 auth_param ntlm keep_alive off auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic --require-membership-of="S-1-5-21-674429568-516021480-856271653-1304" auth_param basic children 5 auth_param basic credentialsttl 2 hours acl manager proto cache_object acl src_localhost src 127.0.0.0/8 acl src_company src 192.168.0.0/16 acl dst_localhost dst 127.0.0.0/8 acl http_proto proto http acl ftp_proto proto ftp acl ad_internet_users proxy_auth REQUIRED acl ssl_ports port 443 acl purge_method method PURGE acl head_method method HEAD #acl bad_sites url_regex -i "/etc/squid/bw.regex" acl Safe_ports port 80 88 21 443 563 70 210 1025-65535 acl dst_url_kav url_regex -i ^.*kaspersky\.com/.* http_access allow manager src_localhost http_access deny manager #http_access deny bad_sites http_access deny !Safe_ports http_access allow purge_method src_localhost http_access deny purge_method http_access deny head_method http_access allow src_company dst_url_kav http_access allow src_company ad_internet_users http_access allow src_localhost http_access deny all http_reply_access allow src_company hierarchy_stoplist cgi-bin ? acl QUERY urlpath_regex cgi-bin \? no_cache deny QUERY cache_mem 120 MB cache_dir ufs /usr/local/squid/cache 50000 64 512 ignore_expect_100 on
Доступность в интернет определяется принадлежностью к группе безопасности internet-users (S-1-5-21-674429568-516021480-856271653-1304) в AD
В принципе все работает, пока ходишь по инету, но есть 2 засады, которые я вылечить не смог и прошу Вашей помощи:
1. При аплоаде вложения в веб-интерфейсе mail.ru на 2-м, а иногда на 3-м файле начинает истерично запрашивать у пользователей логин и пароль для доступа на прокси сервер, в логах при это сыпятся такие сообщения:
1314794227.505 0 192.168.3.5 TCP_DENIED/407 5357 POST http://e.mail.ru/cgi-bin/attach_upload2? - NONE/- text/html
1314794497.769 0 192.168.3.5 TCP_DENIED/407 5379 POST http://e.mail.ru/cgi-bin/attach_upload2? - NONE/- text/html
как будто пользователи не отсылают логин и пароль для авторизации на прокси.... хотя стоит только обновить страницу, появляются GET запросы:
1314794492.247 60 192.168.3.5 TCP_MISS/200 374 GET http://mail.radar.imgsmail.ru/update? rinat DIRECT/217.69.129.191 image/gif
И авторизация вроде проходит нормально...
2. Регулярно в логах появляются запреты TCP_DENIED/407 притом как-то хаотично...
Куда копать что искать?
Все что нагуглил, это что вроде как IE отсылает параметры авторизации не каждый раз и только после ответов 407 отсылает повторно... но трабл то есть и на опере и в лисе....
Все проходит, если отключить проверку авторизации, все начинают ходить в интернет без ошибок, но мне так не надо
Заранее всех благодарю
- Для комментирования войдите или зарегистрируйтесь
Запустил в режиме отладки
Вот тут http://www.linofee.org/~jel/proxy/Squid/debug.shtml нашел описание секций для debug_options
Посмотрел, заголовки http запросов, все без исключения запросы приходят либо с заголовком Proxy-Connection: Keep-Alive, либо Proxy-Authorization: Negotiate, либо Proxy-Authorization: NTLM
Сегодня покопаюсь поглубже
flash
Если Вы выгружаете с новым их интерфейсов вложения, то там все на флеше, и нужно копать в его сторону.
На сколько я знаю, при "классическом" вложении все выгружается без проблем. минус только один - добавлять можно только по одному файлу.
по крайней мере на нашей проксе с авторизацией через AD именно так
Р.S эта проблема не только в майл.ру но и везде где нужно производить выгрузку через интерфейс написанный на флеше.
по первой проблеме - не
по первой проблеме - не разрешен метод POST, squid на это ругается
Не грусти, товарищ! Всё хорошо, beautiful good!
Попробуйте получить ситуацию
Попробуйте получить ситуацию с майл ру на не ие браузере, типа файрфокса или оперы.
Многие сквидадминиы советуют схему авторизации ntlm ставить впереди всех остальных. Утверждается что это такая особенность работы explorer.
В auth_param ntlm children поставьте сотню. Возможно при активном юзании инета не хватает процессов ntlm_auth
RUSPRG написал(а): Если Вы
Да именно с новым интерфейсом есть траблы.
Но тут такой момент, что когда работала ISA все было ок, т.е. методом исключения можно предположить, что squid внесит свою лепту.
нет на другие ресурсы они проходят все ок.
по сути я пробовал, добавил acl что мол все post allow, ситуация стала проявляться и на get запросах
ntml стояла раньше первой (negotiate не было вообще), но у нас firefox чаше попадается на компах и по статистике negotiate чаще приходит, я его поставил первым (вот тут http://wiki.squid-cache.org/Features/Authentication так рекомендованно). Ситуацию это не изменило.
Вроде как тоже показалось, что при активной нагрузке начинает сыпать в лог 407, но подтвердить не удалось, т.к. пользователи вызвыли и пока все работает allow all. Прочитал вот это http://www.gentoo.ru/node/16595 тоже сделал все что там описано. Думаю еще раз попробовать потестить.
НО! Погуглил, я нашел интересный пост, суть его в том, что вроде как ISA работает чуток иначе, она не проверяет авторизацию каждый раз, как делает это SQUID, а мелкомягкие, с целью повышения производительности, некоторое время не проверяют, а просто авторизируют по IP, вроде как это 80 сек, пожтому даже некоторые запросы, без заголовков Proxy-* проскакаивают... решения не было в блоге, но по сути проверить можно, накидать скриптик или даже свой helper написать, который после успешной авторизации 80 сек с данного IP пускает...
P.S. Сегодня попробвал радикально другой спрособ авторизации, через LDAP, ситуация аналогичная... :(
/
Тоже NTLM?
:wq
--
Live free or die
Anarchist
Нет, путем запроса на ldap сервер, используя squid helper squid_ldap_auth
auth_param basic program ...squid_ldap_auth...
тестил на файрфоксе
/
Тогда моя не понимать.
Эксплуатирую аналогичную связку (squid с basic-авторизацией на OpenLDAP-сервере).
Проблем не наблюдаю (клиенты разные, если за себя, то GNU IceCat).
:wq
--
Live free or die
Сам офигиваю...
Уже который день пытаюсь разобраться... врубил полную отладку, сквид пишет кучу информации в cache.log, реально среди нее найти то что нужно - это ПОДВИГ... но так и не нашел где теряются параметры авторизации...
смотрю пришедшие http заголовки, есть Proxy-authenticate negotiate (или ntlm) Proxy-Connection: Keep-Alive в запросах приходят, далее смотрю разбор acl-ов, а там бах. не авторизированный... :( в другой консоли у меня winbind -i смотрю, запрос прошел, имя пользователя домен и пароль проверили...
капец я в тупике... не могу понять где-же теряется ad_internet_users потом по идет 0
а должен быть 1....
я на какйото баг сквида напоролся или у меня руки не оттуда растут?
P.S. Как у свкида включить дебаг чтобы посмотреть как auth_param program выполняется?
Разрулил. Поэкспериментировав
Разрулил.
Поэкспериментировав пришел к выводу, что вызов external_acl с указанием %LOGIN работает так:
1. Клинет не прислал в заголовках логин и пароль -> acl не вызывается, в логах пишел что acl ответил 0
2. Клиент присылает логин и пароль, но они не верные -> acl не вызывается, в логах пишел что acl ответил 0
Написал на C свой внешний acl.
Вызываю так:
external_acl ... %SRC ...
external_acl ... %SRC %LOGIN ...
Далее проверяю, есть ли логин, да - то пишем что src такой-то это логин такой-то и его 80 минут пускаем в инет.
Сейчас работает нормально, уже 3-й день все ходят в инет и никто не заметил что вместо isa они используют squid.
Если нужно то могу вылжить листинг проги и конфигов
Нужно. На пасту, на вгетпасту
Нужно. На пасту, на вгетпасту
Пользуясь моментом, хочу передать привет друзьям, которые также пользуются "Моментом"
/
Протестую.
wgetpaste не нужно, лучше поделись своим опытом с Викой.
:wq
--
Live free or die
Приветствую я по поводу авторизации squda по ntlm
Уважаемый пионер вы писали на форуме что разрулили вопрос с неверной авторизацией сквида по ntlm
будьте добры если можно мне на мыло
ваше решение поподробнее с конфигами и скриптами
Заранее премного благодарен.
ПС Босс весь мозг съел...
/
ИМХО правильнее у Вики.
:wq
--
Live free or die
Привет
Привет Слава богу я нашел что это возможно. Я уже месяц копаю интернет не могу найти если есть возможности пошли мне на мыло
.
Спасибо.
Откуда вы беретесь такие.
Откуда вы беретесь такие. Всем на мыло и прочее. НЕт уж, ты тут подожди автора темы и попроси его выложить этоу кужа-то В ОБЩИЙ ДОСТУП. Вики вполне подойдет, согласен с анархистом. Чтобы потом такие же как ты не просили "вышли мне на мыло, да еще и разжуй все это"
Пользуясь моментом, хочу передать привет друзьям, которые также пользуются "Моментом"
Глубокоуважаемый, а ты не
Глубокоуважаемый, а ты не находиш, что
и
каким-то таинственным образом связаны?