squid принудительно отключает открытые соединения при перезагрузке acl

Я пытаюсь создать админ-сайт, который контролирует доступ в Интернет. Когда я разрешаю доступ на этот сайт к клиентскому ip, сайт записывает этот ip в файл acl и перезагружает squid. Это нормально работает - доступ разрешен. И когда я удаляю ip и перезагружаю squid, клиент блокируется. Но когда я уже присоединился к Google (https!), Доступ к Google все еще возможен. После нескольких минут бездействия доступ также блокируется. Чтобы кто-то мог построить туннель и оставить доступ в Интернет для них.

Можно ли принудительно отключить открытые сеансы CONNECT?

небольшой пример:

acl allowed_dst dstdomain "/etc/squid/allowed_dst"
acl allowed_clients src "/etc/squid/allowed_clients"

http_access allow allowed_dst
http_access allow allowed_clients
http_access deny all
0
задан 22 July 2016 в 02:00
1 ответ

В настоящее время нет возможности делать то, что вы запрашиваете внутри Squid.

http_access ACLs оцениваются только при возникновении HTTP-запросов. Как только сообщение CONNECT установило слепой TCP туннель для отправки клиентских данных через него перестает быть HTTP, так что даже если Squid будет обрабатывать ACL заново, у него не будет причин обрабатывать правила http_access когда-либо снова для туннеля.

Есть также много других ACL решений, которые могли бы иметь место и должны быть пересмотрены. Некоторые из них зависели бы от предыдущих значений ACL и данных, которые больше не существуют. Это не так просто, как просто разрешить или запретить клиенту.

Лучшее, что нужно сделать, это иметь свой скрипт, который удаляет ACL записи после перезагрузки Squid, прерывая на уровне TCP любые соединения, которые эти клиенты имеют с прокси-сервером. В Linux для этого есть инструмент "conntrack"

.
1
ответ дан 4 December 2019 в 16:33

Теги

Похожие вопросы