Ru-Board.club
← Вернуться в раздел «В помощь системному администратору»

» SQUID (только под *nix)

Автор: S1NT3Z
Дата сообщения: 02.06.2015 08:26
Здравствуйте, помогите мне решить такую задачу.

Настроил сквид и три типа авторизации - Kerberos, NTLM, Basic

Все работает, кроме Basic авторизации. Т.е. если присутсвует basic авторизация то появляются следующие проблемы: Перестают работать какие-либо программы использующие интернет через прокси, кроме самого браузера эксплорер. Т.е. получается что в одних либо просто не идет соединение, в других появляется окно запроса авторизации на прокси. И что удивительно, не принимающее какие либо учетные данные.

Если из конфига полностью убрать Basic авторизацию, то все начинает работать исправно и как нужно.

В чем может быть проблема? Basic авторизация нужна, т.к. иногда приходится выходть в интернет с компьютера не в домене, под доменными учетными записями.

Пример текущих настроек:


Код: # Negotiate Kerberos and NTLM authentication
auth_param negotiate program /usr/lib/squid3/negotiate_wrapper_auth --ntlm /usr/bin/ntlm_auth --diagnostics --helper-protocol=squid-2.5-ntlmssp --kerberos /usr/lib/squid3/negotiate_kerberos_auth -r -s HTTP/user@domain.LOCAL
auth_param negotiate children 200 startup=50 idle=10
auth_param negotiate keep_alive on

# Only NTLM authentication
auth_param ntlm program /usr/bin/ntlm_auth --diagnostics --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 100 startup=20 idle=5
auth_param ntlm keep_alive on

# Basic authentication via ldap for clients not authenticated via kerberos/ntlm
auth_param basic program /usr/lib/squid3/basic_ldap_auth -v 3 -P -R -b "DC=domain,DC=local" -D user@domain.LOCAL -W /etc/squid3/conf_param_ldappass.txt -f sAMAccountName=%s -h 172.12.12.1
auth_param basic children 10
auth_param basic realm "Proxy Server Basic authentication!"
auth_param basic credentialsttl 2 hours
Автор: Renua
Дата сообщения: 03.06.2015 08:55
S1NT3Z
а что показывает
Код: /usr/lib/squid3/basic_ldap_auth -v 3 -P -R -b "DC=domain,DC=local" -D user@domain.LOCAL -W /etc/squid3/conf_param_ldappass.txt -f sAMAccountName=%s -h 172.12.12.1
Автор: Alukardd
Дата сообщения: 04.06.2015 21:53
Renua
А чего тут странного-то? Конечно решилась, только смысл теперь у неё совсем другой и вы разрешили всем авторизованным ходить на ЛЮБОЙ url.
У меня вместо /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic используется /usr/lib/squid3/squid_ldap_auth. И вроде всё норм, кто может пройти прозрачную ntlm аутентификацию у того нету окна с логином/паролем.
Автор: niko7
Дата сообщения: 07.06.2015 09:31
Squid 2.7.STABLE9, FreeBSD 7.3, находится за роутером. На роутере прописано правило при обращении на порт 7000 перенаправлять на squid. При обращении с локальной машины работает, а при обращении через интернет не работает. Как настроить Squid, для подключения к нему через интернет?
Автор: vlary
Дата сообщения: 07.06.2015 15:43
niko7
Цитата:
Как настроить Squid, для подключения к нему через интернет?
Прозрачный сквид через интернет?! Чего добиться хочешь?
Автор: niko7
Дата сообщения: 07.06.2015 20:48
vlary
Цитата:
Чего добиться хочешь?
Нужно чтобы при обращении на squid через интернет обращающийся выходил в интернет через этот squid. Не получается сейчас так, как причину найти не понимаю, в squid.conf http_port 7000 при обращении на этот порт через интернет не работает. В настройках браузера пишу ip squid и порт 7000.
Автор: vlary
Дата сообщения: 07.06.2015 21:17
niko7
Цитата:
В настройках браузера пишу ip squid и порт 7000.
Очень странно. Если сквид слушает на 7000 порту и по внутреннему,
и по внешнему айпи, то все работает прекрасно. Сам этим пользовался, чтобы
открывать сайты в локальной сети. Чтобы открывались и внешние,
должно быть разрешение в акцесс-листах. Ибо задача делать из своего сквида
анонимный прокси надеюсь не стоит? Ну а дальше смотрим логи сквид,
на что именно он возражает.
Автор: niko7
Дата сообщения: 08.06.2015 10:53
vlary
Подскажите по настройке squid для доступа из интернета прописал в squid.conf acl localnet src х.х.х.0/24, х.х.х.0 это подсеть с которой обращаюсь через интернет. Не работает.
Автор: vlary
Дата сообщения: 08.06.2015 11:48
niko7
Цитата:
Подскажите по настройке squid для доступа из интернета
acl localnet src х.х.х.0/24 у.у.у.0/24
http_access allow localnet
И еще. Если порт 7000 для прозрачного прокси, то должен быть еще один, для непрозрачного.
Вот его и прописывать в браузере
Автор: niko7
Дата сообщения: 08.06.2015 12:36
vlary
Спасибо за помощь, заработало . Прописал http_access allow localnet после acl localnet src х.х.х.0/24, было в конце файла прописано. Добавил еще forwarded_for off. Получилось то, что нужно.
Цитата:
у.у.у.0/24
Это другая подсеть? Они просто через пробел пишутся?
Автор: vlary
Дата сообщения: 08.06.2015 17:20
niko7
Цитата:
Это другая подсеть? Они просто через пробел пишутся?
Да. Это я обозначил разрешенную глобалку и локалку.
Можно добавить еще нужных сетей/хостов. Пишутся через пробел, результат - логическое ИЛИ
А в http_access allow/deny результат параметров - логическое И.
Автор: niko7
Дата сообщения: 08.06.2015 18:05
vlary
В сети в которую получаю трафик от этого прокси есть компьютер с CentOs, думаю на него squid тоже поставить и сделать шлюзом чтобы раздавать полученный интернет в сети. Может можно как-то проще сделать?
Цитата:
Можно добавить еще нужных сетей/хостов. Пишутся через пробел, результат - логическое ИЛИ
В acl localnet пишутся через пробел подсети, хосты?
Автор: vlary
Дата сообщения: 08.06.2015 23:33
niko7
Цитата:
Может можно как-то проще сделать?
Squid не обязан стоять на шлюзе.
Также их можно каскадировать, т.е. местный сквид получает трафик от
вышестоящего сквида, и раздает его клиентам.
А проще всего это прописать клиентам в этой сети твой сквид, и разрешить пользоваться.
Цитата:
В acl localnet пишутся через пробел подсети, хосты?
Именно. Как подсети, так и одиночные хосты.
Если маска не указана, подразумевается /32.

Автор: niko7
Дата сообщения: 09.06.2015 13:44
vlary
Цитата:
Также их можно каскадировать, т.е. местный сквид получает трафик от
вышестоящего сквида, и раздает его клиентам.

cache_peer x.x.x.x parent 7000 7 proxy-only default
never_direct allow localnet
Правильно так прописать?
Нашел этот пример в интернете, что означает параметр 7?
Автор: Renua
Дата сообщения: 09.06.2015 14:03
Alukardd

Цитата:
А чего тут странного-то? Конечно решилась, только смысл теперь у неё совсем другой и вы разрешили всем авторизованным ходить на ЛЮБОЙ url.
У меня вместо /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic используется /usr/lib/squid3/squid_ldap_auth. И вроде всё норм, кто может пройти прозрачную ntlm аутентификацию у того нету окна с логином/паролем.

для squid_ldap_auth еще какие параметры прописаны или только указываете на способ авторизации?


Добавлено:
как же тогда правильно написать что после авторизации необходимо проходить проверку на группы? и осуществлять доступ согласно им. Если не трудно, можете показать свой конфиг?
Автор: vlary
Дата сообщения: 09.06.2015 14:54
niko7
Цитата:
Нашел этот пример в интернете, что означает параметр 7?
Я думаю, что это нужно искать не в интернете, а на офсайте сквида. Там все расписано.
Лично у меня сквид один, посему точного значения параметров не помню.
Автор: Renua
Дата сообщения: 16.06.2015 14:55
Alukardd
А можете показать ваш конфиг, как у вас сделана авторизация и аутентификация?
не могу понять: либо выходит окошко с запросом логина и пароля, либо пускает на все сайты. а так чтоб совместить (чтоб не было окошка авторизации и отрабатывали списки запрета) не получается(((((
Автор: Siryx
Дата сообщения: 26.06.2015 11:46
Можете помочь со сквидом и доверенным доменом.

Имеется 2 домена у которых имеются доверительные двухстороние отношения и надо чтобы авторизация шла на 1 сервере прокси.

Установил, настроил прокси с керберос, нтлм, лдап на один домен - там все хорошо работает, а вот на другой не получается.
ext_ldap_group_acl никак не может найти пользователя в группе первого домена с пользователем второго домена. В логах этот пользователь, по сравнению с другими проявляется как domain\\user, и соотвественно в группе найти не может. В ручную тоже не находит, даже с сидом.

Как настроить авторизацию с доверительными отношениями ?

Конфиг могу приложить.
Автор: ipmanyak
Дата сообщения: 26.06.2015 13:09
Siryx Попробуй указать трастовые домены в конфиге кербероса, почитай тут последний пост http://squid-web-proxy-cache.1019090.n4.nabble.com/Single-Forest-Multiple-Domains-kebreos-setup-squid-kerb-ldap-td2021022.html


Автор: Siryx
Дата сообщения: 30.06.2015 13:41
ipmanyak

Попробовал - не получилось, все также без изменений. В логах из другого дормена лезет пользователь domain\\user и конечно по ЛДАП не может проверить наличие в доменной группе группе.

Автор: yakostik
Дата сообщения: 03.07.2015 20:16
Здравствуйте подскажите где у меня может быть проблема
Поставил Убунти сервер 14-й
На него Squid3 и настроил авторизацию через AD
Вроде бы все работает но есть несколько моментов
1. Переодически в sqstat вижу что идет накопление запросов которые не распределены по пользователям и висеть там могут до 2-3 минут случается такое чаще всего в момент когда количество Юзеров переваливает за 100 и количество коннектов приближается к 1000 потом все проходит и запросы без пользователей висят не более 1 -2 сек что в принципе считаю нормальным.
2. Это то как распределена память
5628MB negotiate_kerbe
119MB ext_ldap_group_
117MB apache2
112MB squid3
у меня всего возможно подключение около 2500 клиентов максимум но в среднем в сети висит около 250 активных и еще около 100 тех у кого просто запущена аська, скайп или что то подобное.
В конфиге поставил


Код: # Negotiate Kerberos and NTLM authentication
auth_param negotiate program /usr/lib/squid3/negotiate_wrapper_auth --ntlm /usr/bin/ntlm_auth --diagnostics --helper-protocol=squid-2.5-ntlmssp --kerberos /usr/lib/squid3/negotiate_kerberos_auth -r -s HTTP/kis.may.com@MAY.COM
auth_param negotiate program /usr/lib/squid3/negotiate_kerberos_auth -r -s HTTP/kis.may.com@MAY.COM.UA
auth_param negotiate children 2250 startup=20 idle=25
auth_param negotiate keep_alive off

и при работе с группами

external_acl_type ldap_group ttl=3600 ipv4 children-max=2250 children-startup=50 %LOGIN /usr/lib/squid3/ext_ldap_group_acl -d -P -R -K -b "dc=may,dc=com" -f "(&(sAMAccountName=%v)(memberOf:1.2.840.113556.1.4.1941:=cn=%a,ou=Internet Sharing,dc=may,dc=com))" -D "squid@my.com" -w "Gfccgjhn201#" -h dc1.may.com
Автор: Alukardd
Дата сообщения: 03.07.2015 22:01
yakostik
Цитата:
Как по мне как то многовато памяти кушает авторизация.
Так а на кой ляд вам столько children'ов? Поставьте штук 25.
Автор: yakostik
Дата сообщения: 03.07.2015 22:28
Да вот нигде не смог найти описание сколько же их нужно только в одном месте упоминали что на 10% больше чем клиентов.

А как быть с первым вопросом почему сквид долго решат пустить пользователя или нет?
Автор: Alukardd
Дата сообщения: 03.07.2015 22:56
yakostik
А Вы уверены что squid именно над этим вопросом задумывается? Надо дэбажить что бы понять почему он подвисает... Попробуйте в момент тупления strace'ом подключиться, мб что удасться там разглядеть.
И как это выглядит со стороны клиента/браузера? У него 2минуты страница открывается?
Мб у Вас КД иногда начинает висеть над бесконечной проверкой по external_acl...
Автор: yakostik
Дата сообщения: 03.07.2015 23:12
Да у пользователя именно висит открытие страницы и все.
Пытался переключать на другие КД все равно после какого-то момента начинает жутко тупить, через время все проходит

Подцепиться к процессу как так?
strace -f squid3

просто раньше такого не делал

Да забыл сказать он не полностью виснит те конекты что работали так и работают и трафик идет не отрабатывают только новые.
А вот новые пользователи или новые коннекты старых пользователей трудно сказать скорее всего и то и другое
Автор: Alukardd
Дата сообщения: 04.07.2015 00:07
yakostik
Отследить только новые будет тяжелее...
strace'ом пользовать так: strace -f -p <SQUID_PID>
SQUID_PID можно взять из ps, это pid родительского процесса. Если раньше не пользовались ни когда strace'ом и нету знания о ядерных вызовах, то будет тяжело сразу взять анализ работающего многопоточного приложения...
Автор: yakostik
Дата сообщения: 06.07.2015 14:48
сегодня при затыке посмотрел статистику в cachemgr.cgi

Negotiate Authenticator Statistics:
program: /usr/lib/squid3/negotiate_kerberos_auth
number active: 350 of 350 (0 shutting down)
requests sent: 30665
replies received: 30664
queue length: 250
avg service time: 5279 msec

при этом статистика обработки групп вот такая

External ACL Statistics: ldap_group
Cache size: 1178
program: /usr/lib/squid3/ext_ldap_group_acl
number active: 20 of 60 (0 shutting down)
requests sent: 1178
replies received: 1178
queue length: 0
avg service time: 0 msec

вопрос нельзя ли как то заставить negotiate_kerberos_auth кешировать удачную авторизацию пользователя потому что у меня создается ощущение что он на каждый объект который качает с инета пытается авторизоваться чем собственно дико загружает загружает пройессы авторизации.

Автор: Alukardd
Дата сообщения: 06.07.2015 17:03
yakostik
Такие подробности я уже не знаю, в таком ключе как у Вас я уже лет 5 как не использую Squid.

дока
Автор: Renua
Дата сообщения: 07.07.2015 17:05
Народ, поделитесь рабочим конфигом авторизации с AD по ntlm_auth, ldap_auth с групповыми политиками. а то у меня постоянное окно авторизацию запршивает. Благодарю
Автор: yakostik
Дата сообщения: 07.07.2015 22:29
Renua
А причем тут политики не путайте теплое с мягким.
От АД вы можете взять только проверку пароля и группу в которую входит пользователь скажем для того что бы поработать с листами доступа или скоростью и все.

У меня юзается керберос и ntlm конфиг выше приводил по сути те две строки это единственное что надо.
Если хватает только кербероса то для авторизации достаточно вот этого

auth_param negotiate program /usr/lib/squid3/negotiate_kerberos_auth -r -s HTTP/kis.may.com@MAY.COM
auth_param negotiate children 350 startup=20 idle=25
auth_param negotiate keep_alive off

а проверка групп так и остается

external_acl_type ldap_group ttl=3600 ipv4 children-max=50 children-startup=50 %LOGIN /usr/lib/squid3/ext_ldap_group_acl -d -P -R -K -b "dc=may,dc=com" -f "(&(sAMAccountName=%v)(memberOf:1.2.840.113556.1.4.1941:=cn=%a,ou=Internet Sharing,dc=may,dc=com))" -D "squid@my.com" -w "Gfccgjhn201#" -h dc1.may.com

затем просто в конфиге раскидываете пользователей по acl на основании членства в группе как то так
acl unblocksyte external ldap_group unBlockSite
или так
acl Unlim4mb external ldap_group "/etc/squid3/group/unlim4mb.txt"
файл нужен для того что бы правильно вычитывать группу с пробелом в имени потому что при тестирование из консоли прокатывает подмена пробела на %20, а вот при работе из конфига нет потому юзаю файл где всего одна строка с именем группы с пробелами как в АД

А по поводу пароля есть два варианта либо у Вас не настроена самба для ntlm или krb5 для кербероса либо если это единичный случай то пользователь мог тупо неверно забить пасс руками


Добавлено:
ДА и еще отвечаю на свои же вопросы может кому поможет
количество деток для проверки группы может быть очень маленьким они практически не нагружаются (у меня запустилось всего 10 работали 2 первых), количество деток для самого кербероса где то в половину от количества запросов в сек которые обрабатывает сквид.

Ну и про затык, лично мне помогла добавка в файл /etc/default/squid3 таких строк

KRB5RCACHETYPE=none
export KRB5RCACHETYPE

Сегодня сервер отработал день, переварил судя по логу больше чем полтора миллиона проверок авторизации и на все про все запустил всего 45 чилдренов причем 800к проверок взял на себя первый процесс авторизации остаток распредилился по остальным 13 ну и на чилдренах номер 15 и ниже висит от 10 до 2 авторизаций.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687

Предыдущая тема: Неполадки в работе DHCP сервера


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.