The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Использование request_body_max_size в acl"
Отправлено Slayeruga, 14-Май-09 12:20 
Здравствуйте.
В нашей организации запрещен интернет для пользователей во избежание утечки информации. Я решил обойти эту проблему, используя squid и попробывать дать интернет. Нашел в squid.conf параметр request_body_max_size и он реально блокирует отправку файлов большего размера, чем задам. Но этот параметр един для squid и штатными средствами нельзя использовать его в acl, а групп у меня 4. Ну, не запускать же 4 squid'а на одной машине?
Основная идея такова: 1 группе дать возможность отправлять файлы без ограничений; 2 группе ограничить request_body_max_size до 30кб, для возможности отправки сообщений на форумах; 3 группе дать возможность отправлять не более 3х мегабайт (отчетность в бухгалтерии); 4-ой группе дать request_body_max_size до 3кб, дав доступ чисто для открытия страниц (компьютер для общего доступа в интернет). Доступ в интернет дан только к белому списку сайтов, поэтому здесь исключается возможность использовать тунелль, который соединяет клиента с сайтом методом CONNECT или GET, что позволяет избежать обхода моих блокировок на отправку файлов.

Натолкнулся на основном сайте кальмара на вот такую темку: http://www.squid-cache.org/mail-archive/squid-users/200404/1...
Цитирую:

======================================================
> Can I use "request_body_max_size" inside a acl ?

There only is one single limit in this directive.

But it is possible to invent a new acl for this using the external acl
interface. request_body_max_size looks into the Content-Length request
header, available to external_acl_type as %{Content-Length}

This silly shell script should work

#!/bin/sh
while read line; do
  set -- $line
  length="$1"
  limit="$2"
  if [ "$length" -le "$2" ]; then
     echo OK
  else
     echo ERR
  fi
done

Use this as

external_acl_type request_body %{Content-Length} /path/to/above/script

acl request_max_20MB request_body 20971520

This acl can then be used in http_access to match requests up to the given
size. If you need different sizes just define new acls with different
limits in bytes (20971520 == 20480 * 1024 == 20480 KB)
============================================================

В сообщении видно, что возможно использовать внешний acl, используя парамерт которым может являтся обычный скрипт. Опция request_body_max_size в squid ищет параметр Content-Length, т.е. размер, в заголовке запроса и сравнивает его со своим параметром. Если размер заголовка больше, чем задано, то этот запрос блокируется. За внешние acl отвечает опция external_acl_type. Если создать скрипт, как описано выше и прописать его в external_acl_type, то squid нормально запускается и вместе с ним запускается 5 родительских процессов с названием этого скрипта, в моём случае он называется request_body.sh

external_acl_type request_body %{Content-length} /home/request_body.sh

Тут все нормально. Далее пытаюсь присвоить ему acl в squid.conf вот так:

acl request1 request_body 100000

И тут squid отваливается с такой ошибкой:

2009/05/14 14:10:49| aclParseAclLine: Invalid ACL type 'request_body'
FATAL: Bungled squid.conf line 104: acl request_body 100000
Squid Cache (Version 2.7 STABLE3): Terminated abnormally.

т.е., если я правильно понял, после определения внешнего acl, нужно присвоить acl со своим именем и параметром в байтах, в данном случае 100000 байт. Но squid падает с такими настройками. Кто-нибудь сталкивался с подключением внешних acl или видит где моя ошибка? уже 2 дня бьюсь.

P.s. Моя система Debian Lenny 5.0.1 и squid 2.7 STABLE3, установленный из apt.
P.p.s. Эта тема вроде затрагивалась на opennet, но найти я её не смог. А тема очень актуальна для многих организаций.

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру