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 написал(а): Если Вы

RUSPRG написал(а):
Если Вы выгружаете с новым их интерфейсов вложения, то там все на флеше, и нужно копать в его сторону.
На сколько я знаю, при "классическом" вложении все выгружается без проблем. минус только один - добавлять можно только по одному файлу.

по крайней мере на нашей проксе с авторизацией через AD именно так

Р.S эта проблема не только в майл.ру но и везде где нужно производить выгрузку через интерфейс написанный на флеше.

Да именно с новым интерфейсом есть траблы.
Но тут такой момент, что когда работала ISA все было ок, т.е. методом исключения можно предположить, что squid внесит свою лепту.

winterheart написал(а):
по первой проблеме - не разрешен метод POST, squid на это ругается

нет на другие ресурсы они проходят все ок.
по сути я пробовал, добавил acl что мол все post allow, ситуация стала проявляться и на get запросах

wi написал(а):
Попробуйте получить ситуацию с майл ру на не ие браузере, типа файрфокса или оперы.
Многие сквидадминиы советуют схему авторизации ntlm ставить впереди всех остальных. Утверждается что это такая особенность работы explorer.
В auth_param ntlm children поставьте сотню. Возможно при активном юзании инета не хватает процессов ntlm_auth

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, ситуация аналогичная... :(

/

pioneer3232 написал(а):
P.S. Сегодня попробвал радикально другой спрособ авторизации, через LDAP, ситуация аналогичная... :(

Тоже NTLM?

:wq
--
Live free or die

Anarchist

Anarchist написал(а):
pioneer3232 написал(а):
P.S. Сегодня попробвал радикально другой спрособ авторизации, через LDAP, ситуация аналогичная... :(

Тоже NTLM?

Нет, путем запроса на ldap сервер, используя squid helper squid_ldap_auth

auth_param basic program ...squid_ldap_auth...

тестил на файрфоксе

/

pioneer3232 написал(а):
Anarchist написал(а):
pioneer3232 написал(а):
P.S. Сегодня попробвал радикально другой спрособ авторизации, через LDAP, ситуация аналогичная... :(

Тоже NTLM?

Нет, путем запроса на 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.

Если нужно то могу вылжить листинг проги и конфигов

Нужно. На пасту, на вгетпасту

Нужно. На пасту, на вгетпасту

Пользуясь моментом, хочу передать привет друзьям, которые также пользуются "Моментом"

/

Tzar написал(а):
Нужно. На пасту, на вгетпасту

Протестую.
wgetpaste не нужно, лучше поделись своим опытом с Викой.

:wq
--
Live free or die

Приветствую я по поводу авторизации squda по ntlm

Уважаемый пионер вы писали на форуме что разрулили вопрос с неверной авторизацией сквида по ntlm
будьте добры если можно мне на мыло

ваше решение поподробнее с конфигами и скриптами
Заранее премного благодарен.
ПС Босс весь мозг съел...

/

misterx написал(а):
Уважаемый пионер вы писали на форуме что разрулили вопрос с неверной авторизацией сквида по ntlm
будьте добры если можно мне на мыло

ваше решение поподробнее с конфигами и скриптами
Заранее премного благодарен.
ПС Босс весь мозг съел...

ИМХО правильнее у Вики.

:wq
--
Live free or die

Привет

Привет Слава богу я нашел что это возможно. Я уже месяц копаю интернет не могу найти если есть возможности пошли мне на мыло

.
Спасибо.

Откуда вы беретесь такие.

Откуда вы беретесь такие. Всем на мыло и прочее. НЕт уж, ты тут подожди автора темы и попроси его выложить этоу кужа-то В ОБЩИЙ ДОСТУП. Вики вполне подойдет, согласен с анархистом. Чтобы потом такие же как ты не просили "вышли мне на мыло, да еще и разжуй все это"

Пользуясь моментом, хочу передать привет друзьям, которые также пользуются "Моментом"

Глубокоуважаемый, а ты не

Глубокоуважаемый, а ты не находиш, что

Vusal написал(а):
Я уже месяц копаю интернет не могу найти

и

Vusal написал(а):
если есть возможности пошли мне на мыло

каким-то таинственным образом связаны?

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".