Squid настройка URL-фильтрации по спискам

Перед многими системными администраторами встает вопрос ограничения доступа пользователей к тем или иным ресурсам сети интернет. В большинстве случаев в ресурсоемкой и сложной контент фильтрации нет необходимости, вполне достаточно URL-списков. Реализовать такой метод вполне возможно средсвами прокси-сервера squid не привлекая стороннего ПО.

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

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

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

Прежде всего создадим файл списка. Располагаться он может в любом месте, но будет логично разместить его в конфигурационной директории /etc/squid3

touch /etc/squid3/blacklist

и приступим к его заполнению. При указании URL следует использовать RegExp синтаксис, мы не будем подробно останавливаться на этом вопросе, так как это выходит за рамки статьи, подробнее с правилами RegExp можно ознакомиться здесь. Для примера заблокируем популярные соцсети:

vk\.com
odnoklassniki\.ru

Обратите внимание, точка в RegExp является служебным симоволом и поэтому должна быть экранирована символом \ (обратный слеш).

В конфигурационном файле squid (/etc/squid3/squid.conf) создадим acl список, в который включим хосты или пользователей, для которых будет производиться фильтрация.

acl url_filtred src 192.168.1.221-192.168.1.225

В нашем случае фильтрация включена для всех хостов в диапазоне адресов 192.168.1.221-225, т.е. мы будем фильтровать интернет только для определенной группы пользователей.

Затем подключим наш список:

acl blacklist url_regex -i "/etc/squid3/blacklist"

Ключ -i указывает на то, что список нечувствителен к регистру.

Теперь перейдем в секцию правил и перед правилом

http_access allow localnet

укажем:

http_access deny blacklist url_filtred

Еще раз обратим ваше внимание, что все правила в squid обрабатываются последовательно, до первого вхождения, поэтому если мы разместим более общее правило перед более частным, то оно работать не будет. То же самое справедливо и для перекрывающихся правил — сработает самое первое.

Сохраним изменения и перезапустим squid:

sudo service squid3 restart

Попробуем посетить сайт из списка, если все сделано правильно, то вы увидите сообщение squid о запрете доступа к данному ресурсу.

В дальнейшем вы можете дополнять списки, не забывая каждый раз после этого перезапускать squid.

Рассмотрим немного иную ситуацию, требуется фильтровать интернет для всех, кроме определенной группы. В этом случае создадим acl для исключенных пользователей:

acl url_no_filtred 192.168.1.210 192.168.1.211

и изменим запрещающее правило следующим образом:

http_access deny blacklist !url_no_filtred

Также вы можете использовать несколько URL-списков и списков доступа, гибко регулируя доступ для разных групп пользователей.

Вернемся к регулярным выражениям. Допустим, что нам нужно заблокировать не ресурс целиком, а его часть, тогда составим строку таким образом, чтобы она обязательно содержала нужную часть адреса, например строка:

my\.mail\.ru

Заблокирует доступ к социальной сети Мой мир, но не будет препятствовать доступу к Майл.ру.
В качестве строки можно использовать не только доменное имя, но и его часть. Так если мы внесем в список простую строку

mail

то это приведет к блокировке всех ресурсов, у которых данное сочетание входит в доменное имя, т.е. и mail.ru и hotmail.com. Поэтому к составлению списков, особенно содержащих короткие простые сочетания, нужно подходить осторожно.

Рассмотрим простой, но показательный пример. Допустим нужно заблокировать известный сайт auto.ru и его поддомены. Если мы, не долго думая, напишем

auto\.ru

То вместе с требуемым порталом будут заблокированы все сайты имеющие данное сочетание в имени, например abc-auto.ru. Есть о чем задуматься. Если с поддоменами все просто, достаточно написать

\.auto\.ru

и все что содержит точку перед искомым адресом будет заблокировано, то с основным доменом сложнее, самое время вспомнить про полный формат адреса:

http\:\/\/(www\.)?auto\.ru

Теперь будут заблокированы только адреса начинающиеся с http://auto.ru, конструкция (www\.)? обозначает, что префикс www c точкой могут быть, а могут не быть. Зато другие сайты, содержащие auto.ru будут нормально открываться.

Напоследок рассмотрим еще одну ситуацию, как сделать, чтобы на заблокированом сайте были доступны некоторые страницы. Например, страничка компании в Вконтакте или вы хотите обезопасить определенные адреса от случайного попадания под фильтр в будущем. Для этого следует добавить к системе «белый» список. Создадим файл списка:

touch /etc/squid/whitelist

внесем в него нужные адреса, для примера разблокируем страничку Вконтакте новостного портала Утро.ру:

vk\.com\/na_utro_ru

Подключим лист:

acl whitelist url_regex -i "/etc/squid/whitelist"

и добавим правило перед запрещающим, в итоге должно получиться:

http_access allow whitelist
http_access deny blacklist url_filtred

Так как разрешающее правило расположено раньше, то указанные в «белом» листе ресурсы будут доступны, несмотря на то, что будут попадать под правила «черного».

Как видим, технология URL-фильтрации по спискам при помощи squid очень проста и позволяет в кратчайшие сроки ограничить доступ к нежелательным ресурсам.

Взято с Interface31 ( Автор: Уваров А.С.)

 

 

 

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Комментарии:

Оставить комментарий

Вы должны быть авторизованы, чтобы разместить комментарий.