LINUX.ORG.RU
ФорумAdmin

squid

 , ,


0

1

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

Вот соответствующий блок в squid.conf

Example rule allowing access from your local networks.

Adapt localnet in the ACL section to list your (internal) IP >networks

from where browsing should be allowed

#http_access allow localnet #http_access allow localhost #http_access deny blacklist squid_deny http_access deny squid_deny http_access allow squid_allow #http_access allow blacklist squid_deny http_access deny all #http_access allow auth

squid_deny и squid_allow это группы в АД

Прошу прощения, не могу понять как помещать что-то под спойлер


Показывай весь конфиг(включая описание всех ACL), может у тебя где-то до этого авторизация стреляет.

Pinkbyte ★★★★★ ()
Ответ на: комментарий от Pinkbyte

Подскажите тогда, как здесь исходник правильно вставить? Чтобы абракадабры такой не было, как у меня выше

grraf ()
Ответ на: комментарий от grraf

Идем в гугл и читаем:

ext_kerberos_ldap_group_acl is an installed binary and allows Squid to connect to a LDAP directory to authorize users via LDAP groups. Options are specified as parameters on the command line, while the username (e.g. user , user@REALM , NDOMAINser ) to be checked against the LDAP directory are specified on subsequent lines of input to the helper, one username per line.

Если в кратце - твои ACL squid_allow и squid_deny требуют на вход комбинацию логин/пароль для проверки принадлежности к группе.

Если мне не изменяет память - авторизацию пара логин/пароль переданная в helper нигде не кэшируется(успешная пара логин/пароль, прошедшая авторизацию, кэшируется в браузере), так что в худшем случае(когда пользователь не состоит ни в группе squid_allow, ни в группе squid_deny) - у него спросят пароль ДВАЖДЫ и только потом будет отлуп

Вообще зачем тебе группа squid_deny? Судя по текущим раскомментированным правилам она тебе нафиг не нужна - разрешай доступ в интернет пользователям из определенной группы(там всё равно будет требоваться basic-авторизация, если Kerberos не отработает - например на Windows-машинах не в домене), остальные пусть падают на deny all

Или опиши задачу полностью словами, если текущие правила в конфиге ее не реализуют.

Pinkbyte ★★★★★ ()
Последнее исправление: Pinkbyte (всего исправлений: 3)
Ответ на: комментарий от Pinkbyte

У меня задача в следующем состоит. Определенным пользователям нужно полностью заблочить интернет, возможно разрешив несколько сайтов, они (пользователи) будут находиться в группе squid_deny. Все остальные просто ходят через прокси с разрешенным интернетом, они в группе squid_allow. Просто тем, кто в squid_allow не предлагает пройти авторизацию, то есть керберос вроде как отрабатывает.

Связь с AD проверял этими командами, все ОК.

Проверка Kerberos: /usr/lib64/squid/ext_kerberos_ldap_group_acl -a -i -g squid_deny -D AX.LOC

Проверка LDAP: /usr/lib64/squid/ext_ldap_group_acl -b «dc=ax,dc=loc» -P -R -K -D «squid@ax.loc» -w «squid» -f «(&(objectclass=person)(sAMAccountName=%v)(memberOf=cn=%g,OU=groups,DC=ax,DC=loc))» -h dc-01.ax.loc

Не могу понять, почему заблоченные пользователи вместо ошибки страницы видят это окошко с авторизацией, как это все-таки сделать правильно?

grraf ()
Ответ на: комментарий от Pinkbyte

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

"Решил проблемку)) пол дня возился, а тут за пару минут заработало. Последние 5 строк http_access: Было вот так: http_access allow INTERNET Safe_ports http_access allow localhost http_access deny CONNECT http_access deny manager http_access deny all

Поднял последнюю строчку выше, стало так: http_access allow INTERNET Safe_ports http_access allow localhost http_access deny all http_access deny CONNECT http_access deny manager

grraf ()
Ответ на: комментарий от Pinkbyte

Да, конечно можно сделать только одну группу пользователей squid_allow с разрешенным интернетом, а остальным по дефолту все блочить - эта схема работает, да. Но все-таки хочется и группу запрета иметь, чтобы добавлять туда неугодных пользователей и более гибко настраивать списки сайтов и т.д.

grraf ()
Ответ на: комментарий от grraf

Так, давай по порядку, делаешь список http_access вот так(порядок важен!). Все остальные строчки с http_access КОММЕНТИРУЕШЬ):

http_access deny squid_deny
http_access allow squid_allow
http_access deny all

Дальше, пробуешь авторизоваться пользователем из группы squid_allow, показываешь логи сквида.

Потом пробуешь тоже самое сделать от squid_deny - и снова показываешь логи

Для простоты пока давай забудем про Kerberos на клиентах, пробуй авторизацию через squidclient с самого сервера проверить(поэтому я выкинул правило разрешающее всё с localhost)

Pinkbyte ★★★★★ ()
Последнее исправление: Pinkbyte (всего исправлений: 3)
Ответ на: комментарий от Pinkbyte

Странно, что у разрешенного пользователя в логах довольно много строчек TCP_DENIED, хотя интернет полностью разрешен

grraf ()
Ответ на: комментарий от Pinkbyte

Логи пользователя (squid), который находится в группе SQUID_FullAccess (я переименовал squid_allow в SQUID_FullAccess) https://pastebin.com/5dUAarAp

Логи пользователя (test), который находится в группе SQUID_BlockedAccess (я переименовал squid_deny в SQUID_BlockedAccess) https://pastebin.com/uh92QbfZ

grraf ()
Ответ на: комментарий от Pinkbyte

Нашел обходной путь, этакий костыль, как это можно сделать. Если навесить на SQUID_BlockedAccess 1) acl Time time 0:00-23:59 2) http_access deny SQUID_BlockedAccess Time, то в принципе схема работает. Но опять таки, хочется конечно понять в чем причина выскакивающего окошка с авторизацией, если стоит условие http_access deny SQUID_BlockedAccess

grraf ()
Ответ на: комментарий от grraf

Надо врубать отладку хелпера, возможно баг

По логам для SQUID_BlockedAccess кажется будто авторизация тупо не проходит(до squid не доходит логин пользователя)

Pinkbyte ★★★★★ ()
Последнее исправление: Pinkbyte (всего исправлений: 2)
Ответ на: комментарий от grraf

Если проверку делал с реальной машины(а не через squidclient) и прокси прописан глобально в системе, то там могут ломиться все кому не лень(а не только браузер). Только вот логин/пароль ты вводил в браузере

Pinkbyte ★★★★★ ()
Ответ на: комментарий от grraf

По идее да, squid эти сообщения сам должен запихать в лог(смотря как он у тебя настроен), по умолчанию оно должно по идее в cache.log свалиться

Pinkbyte ★★★★★ ()
Ответ на: комментарий от grraf

раз в секунду и количество не выше 1/30... да, похоже лучше включить отладку и в нём и посмотреть что там не так

Pinkbyte ★★★★★ ()
Ответ на: комментарий от Pinkbyte

Добавил в squid.conf строку debug_options ALL,1 33,3 28,9

Очистил полностью cache.log и зашел через пользователя с запрещенным интернетом на один сайт, вот что получилось в логах:

https://pastebin.com/VQtxCWgL

На что здесь обратить внимание? Слишком длинная простыня получилась.

grraf ()
Ответ на: комментарий от grraf

Ты, наверное, будешь нервно смеяться, но:

Файлы были удалены из-за достижения лимита на количество скачиваний

Я, если что, только один раз по ссылке перешел - и там уже такое

Pinkbyte ★★★★★ ()
Ответ на: комментарий от Pinkbyte

Но вот опять же, если бы керберос не работал, то allow группы так же запрашивали авторизацию, а ее просят только те группы, на которые падает условие deny, вот что странно. Такая же картина, если deny навесить на список сайтов

grraf ()
Ответ на: комментарий от grraf

Видимо придется ограничиться условием deny Time 0:00-23:59

grraf ()
Ответ на: комментарий от grraf

Есть ли в ней какой-то баг в Kerberos - затрудняюсь сказать, быстрый гуглинг ничего такого не выдает. Но если есть возможность обновить - лучше обновить

Update: судя по Changelog фиксы для ext_kerberos_ldap_group_acl точно были

Pinkbyte ★★★★★ ()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от Pinkbyte

Подскажите в таком случае еще такой момент, скачал с сайта wget’ом нужный архив, распаковал, а как его дальше поверх установить? Или это я скачал исходники, и мне сейчас нужно как-то собрать сквид на их основе?

grraf ()
Ответ на: комментарий от grraf

Мммм... я бы не советовал собирать руками, лучше из пакетов ставить. Что за дистрибутив стоит на сервере? Может можно обновить его? Хотя squid 2016 года разлива намекает, что не обновлялись ОЧЕНЬ ДОЛГО

Pinkbyte ★★★★★ ()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от Pinkbyte

Вот тоже непонятно, стоит Сentos7, разумеется перед началом я обновлял систему (yum update), может репозитории какие-то нужно подключать, чтобы он последнюю версию скачал?

grraf ()
Ответ на: комментарий от grraf

3.5.20-17 - последняя версия в дистрибутиве CentOS 7, судя по всему. 17 - это количество бэкпортов от самой CentOS, так что совсем критические ошибки там должны исправляться.

Можно подключить репозитарий от авторов squid, правда неофициальный, там будет четвертый squid

Pinkbyte ★★★★★ ()
Последнее исправление: Pinkbyte (всего исправлений: 2)
Ответ на: комментарий от Pinkbyte

Поставил Ubuntu-Server 20.04.2, у squid версия 4.10 Точно такая же проблема :с

В cache.log вот такие значения: https://pastebin.com/ZBqHPRTQ

Можно вообще как-то проверить, есть ли связь с группой в AD?

grraf ()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.