LINUX.ORG.RU
ФорумAdmin

Squid 5.8 держать ACL с юзерами на внешней БД

 


0

1

Добрый день!

Установлен squid 5.8. Ubuntu20. Есть потребность использовать что то типа динамических ACL. К примеру есть три типа ACL. Каждый тип ACL работает со своими cache_peer. Авторизация происходит чрз радиус. Хотелось бы чтоб был инструмент чтоб можно было кидать юзера в тот или иной acl используя БД и не делать -k reconfigure.

Есть external_acl_type, но так как я использую slow_acl - этот тип acl не работаtт с cache_peer_access.

Есть еще annotations - но чет не пойму как их юзать.

Кто то что то подобное делал? - Может есть и другие решения ?

Возможно есть, но очень хитрое.

Общая идея: мы можем добавлять свой заголовок в запрос клиента по условию из любых acl.

Проверка наличия заголовка в запросе через acl req_header - это fast acl.

c annotate_transaction/annotate_client видимо так же, но без использования заголовков.

https://squid-dev.squid-cache.narkive.com/DV9pKRT4/rfc-annotate- transaction-acl

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

Сделал так:

Создаем external_acl, который юзает скрипт, скрипт смотрит в БД и возвращает OK или ERR, в зависимости есть юзер в БД или нет.

Задаем тип ext:

external_acl_type ext_proxy_all_group-1 %LOGIN %DST /usr/local/bin/proxy_all_group-1.py

Создаем ACL (Slow ACL):

acl proxy_group-1_acl external ext_proxy_all_group-1

Далее добавляем хедер к этому acl

request_header_add X-D_Group-1 group1 proxy_group-1_acl

Далее создаем ACL уже для cache_peer_access

acl proxy_group-1_acl_allow req_header X-D_Group-1 proxy_group-1_acl

Далее уже этот ACL (Fast acl) используем в cache_peer

cache_peer_access proxy_group-1 allow proxy_all_acl_allow cache_peer_access proxy_group-1 deny all

Но не работает! Получаю 500 при запросе! При этом сквид на конфиг не ругается

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

Отладка сквидовых acl достаточно трудоёмко занятие.

Включай отладку для внешних ACL (82,3) и для Access Control (28,4) в debug_options и смотри что не сработало.

описание всех отладочных секций есть в файле debug-sections.txt

vel ★★★★★
()
Последнее исправление: vel (всего исправлений: 1)
29 октября 2024 г.

Я сделал еще проще:

acl fake_addr dst 192.168.1.1

#создаем целевой slow acl, передавая внешнему хелперу параметр

acl restricted external sql_speedTemplate restricted

…..

#активируем slow acl директивой http_access

http_access allow restricted fake_addr

…..

http_access deny all

Проще говоря, любой slow acl можно активировать директивой http_access для какого-нибудь левого адреса.

anonymous
()