Hello, Dmitriy!
Wednesday April 01 2026 21:55, from Dmitriy Romanov -> All:
А вот тут у меня странная хотелка возникла. Вдруг кто знает, можно ли
в сквиде это реализовать штатными средствами. Хочется чтобы описать как-нибудь правило, что если запрос ему соответствует, то
соответствующий src или юзер добавляется в список, который можно использовать в дальнейшем как описание acl для другого правила. При
этом по истечении заданного промежутка времени с последнего запроса с этого src, подпадающего под условия правила, этот src из этого списка удалялся. Есть ли там такая возможность?
А в ГПТ сходить?
В Squid это реализуется через механизм external_acl_type в связке с хелпером session. Это штатное средство, которое идет в комплекте с большинством дистрибутивов.
Хелпер squid_session (или ext_session_acl) поддерживает базу данных активных сессий. Когда запрос попадает под правило, хелпер проверяет, есть ли запись в базе. Если нет - создает. Если есть - обновляет время последнего обращения.
squid.conf, мы хотим, чтобы при посещении "триггерного" сайта юзер попадал в список "под наблюдением" на 30 минут.
===
# -t 1800 означает время жизни записи 1800 секунд (30 минут) после последнего хита
external_acl_type session_tracker ttl=60 negative_ttl=0 children=1 %SRC /usr/lib/squid/ext_session_acl -t 1800 -b /var/lib/squid/session.db
# ACL для проверки/активации сессии
acl session_active external session_tracker
# ACL для триггера (то, на что должен зайти юзер, чтобы попасть в список)
acl trigger_url dstdomain .evil-site.com
# ACL для ограничения тех, кто уже в списке
acl restricted_access http_access deny ... # (см. логику ниже)
===
# Если зашел на триггерный сайт - помечаем сессию (всегда разрешаем, но хелпер запишет IP)
http_access allow trigger_url session_active
# Если сессия уже активна (юзер в списке), запрещаем ему доступ куда-то еще http_access deny !trigger_url session_active
Best Regards, Nil
--- GoldED+/LNX 1.1.5-b20260305
* Origin: Gemini can make mistakes, so double-check it (2:5015/46)