20 | 02 | 2020

SquidGuard начало

 Что такое squidGuard

 

SquidGuard  это URL фильтр для прокси сервера squid. Он позволяет гибко фильтровать запрашиваемые пользователем страницы в соответствии с настроенными правилами доступа. Фильтр URL может осуществляться по ссылкам, доменам, регулярным выражениям. Имеется возможность задавать отдельные правила для групп разных пользователей.

Кроме блокирования страниц пользователь может быть перенаправлен на указанную страницу / сайт, либо его запрос может быть прозрачно заменен на нужную ссылку.

В пакете реализованы готовые настройки SafeSearch (безопасный поиск) для некоторых поисковых систем.

Интерфейс

Описание страниц (вкладок)  интерфейса

  • General Settings - содержит опции настройки логов, блэклиста и включения/выключения фильтра.
  • Common ACL - содержит настройки фильтрации URL для клиентов без групп.
  • Groups ACL - содержит настройки фильтров URL для групп клиентов.
  • Target Categories - содержит пользовательские категории фильтров URL.
  • Times - содержит список временных диапазонов для Groups ACL.
  • Rewrites - содержит список специальных правил замены URL.
  • Blacklist - содержит элементы обновления блэклиста.
  • Log - содержит различные журналы (логи, дампы файлов настроек).

Начальные настройки

 

После установки squidGuard необходимо сделать начальные настройки на странице General settings.

Прежде всего включаем чекбокс Enable для разрешения запуска squidGuard и решаем, будет ли использоваться блэклист (опции Blacklist) — готовая база данных разных URL по категориям.

При использовании блэклиста его нужно загрузить со стороннего сайта.

 

 

 

Шаги:

 

· Перейдите на вкладку General settings;

· Включите опцию Enable

· Если будет использоваться Blacklist, включите опцию Blacklist и введите в поле Blacklist URL адрес архива блэклиста (к примеру http://www.shallalist.de/Downloads/shallalist.tar.gz );

· Если для доступа в сети используется прокси-сервер, расположенный не на pfSense, в поле Blacklist Proxy необходимо ввести его адрес и порт в формате Proxy:Port;

· Сохраните настройки кнопкой Save.

 

Если используется Blacklist, то загрузите базу данных со стороннего сайта

· Перейдите на вкладку Blacklist;

· Введите в поле Blacklist Update адрес архива блэклиста ( к примеру http://www.shallalist.de/Downloads/shallalist.tar.gz );

· Нажмите кнопку Download и ждите, пока закончится загрузка;

· В течении следующих 10-30 минут после загрузки будет происходить перестройка внутренней базы, поэтому придется некоторое время подождать еще. Статус загрузки и обработки будет отображаться ниже.

 

 

Замечания по Blacklist:

  • Если вы переустановили squidGuard, который до этого работал с blacklist, то базу данных можно попытаться восстановить из локальной копии архива ( путь Blacklist URL = /tmp/blacklist.tar.gz ). Так же можно вернуться к базовому блэклисту, поставляемому с пакетом, нажатием кнопки Restore Default.
  • Функция загрузки blacklist реализована с использованием JavaScript. На некоторых версиях Internet Explorer она может не работать. В таком случае используйте FireFox или Crome.
  • Кстати, если вы захотите задать вопрос о функции автоматическом обновлении блэклиста, то посмотрите на время обновления базы. Эта функция не добавлена именно из-за очень долгой процедуры обработки архива программой squidGuard. Но опытные специалисты без труда смогут сделать вызов функции обновления из скрипта и поместить ее в cron.

 

 

Переходим на страницу Common ACL

 

Здесь содержаться общая  настройки для пользователей для которых не определены особые правила фильтрации. Для базовой настройки достаточно заполнить эту страницу. Для отображения правил фильтрации необходимо нажать Target Rules List.

 

 

Если был включен и загружен блэклист, то Target Categories будет содержать список категорий базы данных адресов, как на рисунке ниже. Иначе, будет присутствовать только строка Default access [all] (самая нижняя в списке).

 

 

 

Описание:

Target Rules — это поле содержит правила фильтрации адресов URL. Каждое из правил может иметь 4 состояния:

- - -

не определено

категория адресов не будет фильтроваться

white

белый список

адреса URL из этой категории будут всегда разрешены, эта опция используется для задания списка исключений

allow

разрешено

разрешение адресов из этой категории. Адреса URL этой категории будут разрешены, если нигде больше не запрещены.

deny

запрещено

запрещение адресов URL из этой категории

 

Самое последнее правило Default access [all]—самое важное. Оно определяет как будут обрабатываться все прочие адреса URL, которые не попали не в одну из выбранных категорий. Эта опция имеет всего два состояния : allow и deny. С ее помощью можно запретить _все_ и разрешить только некоторые категории адресов правилами выше. Или можно разрешить _все_ и исключить некоторые нежелательные категории адресов.

 

Шаги:

· В списке Target Categories задайте правила для разных категорий адресов URL.

· В списке Target Categories задайте правило Default access [all]

· Для запрета использования IP адресов в URL отметьте опцию Not to allow IP addresses in URL.

· Выберите режим Redirect mode и при необходимости заполните поле Redirect info.

· Для включения безопасного поиска в поисковых системах включите опцию Safe Search.

· Опции Rewrite и Enable log оставьте без изменений (сейчас они не нужны).

· Нажмите на кнопку Save для сохранения изменений.

 

Базовая настройка squidGuard завершена.

 

Теперь самое важноеперейдите на страницу General settings и нажмите на кнопку Apply.

 

Это позволит применить все наши настройки и запустить squid / squidGuard с новыми настройками. Программа squidGuard в текущей версии не может перечитать свою конфигурацию без перезапуска, поэтому для исключения ненужных перезагрузок программы была добавлена отдельная кнопка применения изменений Apply.

 

 

 

SquidGuard Target

 

Что такое Target Categories

 

Это списки адресов URL, которые вы можете задать. При этом одновременно можно использовать имена доменов, адреса и регулярные выражения.

 

 

Создание собственных списков Target Categories

 

Для этого необходимо перейти на соответствующую страницу. Чтобы добавить новую группу, необходимо нажать кнопку «плюс». Для изменения и удаления групп есть кнопки e” и х”. Прошу заметить, что вам не доступны категории из списка блэклиста. Здесь вы можете управлять только пользовательскими (собственными) списками.

 

Пользовательские списки Target Categories:

 

 

Шаги:

  • Перейти на страницу Target Categories
  • Нажать кнопку +” для добавления
  • Нажать кнопку e” для изменения
  • Нажать кнопку x” для удаления
  • После редактирования формы нажать кнопку Save.

 

При добавлении/изменении новой категории (списка) вам будет предложена следующая форма для заполнения:

 

 

 

Шаги:

  • Введите уникальное имя, которое не должно повторять ни одно из используемых в других списках squidGuard;
  • Заполните обязательно хотя бы одно из полей domains, urls list, expressions.
  • Выберите тип Redirect mode, и заполните при необходимости поле Redirectлибо оставьте их как есть (noneпусто)
  • Введите описание вашей категории в поле Description.
  • Нажмите Save для сохранения результатов.

Теперь ваша Target Categories будет доступной в списке правил Target Rules в Common/Groups ACL.

 

Описание:

  • Domains содержит список доменов вида yahoo.com msn.com ya.ru
  • URL List содержит адреса без префиксов. К примеру best.my.com/download .
  • Expressions регулярные выражения, позволяющие фильтровать адреса по маске

 

Немного о регулярных выражениях: 

Это очень мощное средство, позволяющее минимальными правилами фильтровать большие группы адресов. Даже в таком урезанном виде, как в squidGuard. Токены (части)  регулярного выражения группируются скобками так же, как и в математических выражениях. Разделителем 'или' служит знак вертикальной черты ' | '. Знак точка '. '  служит для обозначения любого единичного знака. Знак звездочка '*' служит для обозначения любого количества предыдущих знаков. То есть '.*' будет означать последовательность любых символов. При необходимости внести в выражения символы, используемые как служебные, перед ними нужно поставить знак слеш: '\\', '\.', '\*'.

Примеры

  •  video|audio|games фильтр всех адресов, содержащих одно из перечисленных слов
  •  (download|downloads|file|files|image|picture|flash).*\.(exe|dll|wav|gif|zip|tar) фильтрует адресаскачивания исполняемых файлов и архивов.
  •  (.*\.(zip|rar|cab|mp3|avi|mpg|swf|exe|mpeg|mp.|mpv|mp3))|(\/download.|\/mp3.*)  фильтрует скачивание некоторых видов архивов и мультимедийных файлов.

Для применения всех сделанных изменений необходимо нажать кнопку Apply на странице General page.

 

SquidGuard Times

Что такое Times

 

Это списки времени, которые задают период действия правил Destination rules. Списки могут как простыми (рабочее/нерабочее время), так и довольно сложными (праздники, выходные, ...). Поэтому они были вынесены в отдельную форму

 

Создание списков Times

 

Для создания списков времени необходимо перейти на страницу Times. Здесь, как и на странице Target Categories, вы можете видеть таблицу со списками Times. Назначение кнопок управления строками таблицы такое же, поэтому останавливаться на нем не будем а перейдем сразу к форме редактирования.

 

 

Шаги:

  • Добавить уникальное имя, которое больше не используется нигде в списках squidGuard.
  • Задать значения Values (кнопки управления строками +', 'e и x такие-же, как и в предыдущей таблице.)
  • Ввести комментарий.
  • Нажать Save для сохранения.

 

После сохранения ваши списки готовы к использованию в конфигурации squidGuard.

 

Описание:

В форме указаны форматы даты/времени допустимые для ввода. В форме через кнопку ‘+’ можно добавить несколько строк, описывающих интервалы времени.

В простом случае для любого дня будет присутствовать единственная строка вида

[ Weekly | all | * | time_range ]. 

Это означает, что запись охватывает промежутки времени “time_range” в любой день недели.

Более сложные конструкции можно получить добавлением новых строк и выбором дней / дат.

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

 

Даты нужно вводить в формате yyyy.mm.dd. Можно задавать не только одиночную дату, или диапазон вида date1-date2, но и использовать маску '*’ в качестве любого из символов.

 

ВажноДля каждого из элементов Groups ACL вы сможете применить только один элемент времени Times, поэтому в этот элемент нужно внести все необходимые промежутки времени.

 

Примеры:

 

Даты

2009.10.21

2009.01.15-2009.12.15

*.01.* - значит любой месяц любого года.

 

Рабочее время понедельник и вторник с 8:00 до 18:00 перерывом на обед с 12:00 до 13:00

weekly mon –date disabled— 08:00-12:00

weekly mon –date disabled— 13:00-18:00

weekly tue   –date disabled— 08:00-12:00

weekly tue   –date disabled— 13:00-18:00

 

ВНИМАНИЕ:

Списки времени используются ТОЛЬКО в правилах Group ACL. На странице Common ACL эта опция отсутствует. Особенности применения списков Times читайте в разделе Groups ACL.

 

Для применения всех сделанных изменений необходимо нажать кнопку Apply на странице General page.

SquidGuard Rewrites

Что такое Rewrites

Функция фильтра Rewrites позволяет 'на лету' заменять URL частично или полностью на указанные значения. Это может понадобиться для решения специфических задач. К примеру эта функция используется в механизме фильтра SafeSearch. Применение Rewrites происходит к URL, уже после фильтрации по категориям, поэтому к заблокировнным адресам правила Rewrites не применяются (что вполне логично).

 

Создание Rewrites

 

Для создания правил Rewrites необходимо перейти на одноименную страницу. Здесь находятся стандартные элементы управления + добавить, ‘e изменить, ‘x удалить.

Шаги создания правил Rewrite:

  • Добавьте уникальное имя, которое больше не используется нигде в списках squidGuard
  • Нажмите '+' в поле Rewrite rule для создания очередной записи.
  • Заполните поля Target URL, Replace to URL и Opt .
  • Повторите предыдущие два пункта при необходимости.
  • Введите описание правила в поле Description .
  • Сохраните правила нажатием кнопки Save.

 

 

Описание:

Имя Rewrite должно быть уникально в пределах пакета squidGuard.

В поле Target URL вносится  адрес (часть) URL или регулярное выражение.

В поле Replace to URL вносится замещающий адрес (часть адреса)

Поле Opt содержит управляющую опцию поведения правила:

--- без модификации поведения
no case ротключить регистрозависимость
redirect перенаправить на результирующую страницу с модификатором "страница перемещена по указанному адресу" ( 302: )
no case + redirect комбинация предыдущих двух опций

 

Для использования выберите сохраненное правило Rewrite в общем или групповом ACL.

 

SquidGuard Groups ACL

Что такое Group ACL

Group ACL (access control list) - это набор правил фильтрации для отдельный группы пользователей. Обычно Group ACL применяются для расширенной фильтрации разной сложности для отдельных групп пользователей.

 

Создание Group ACL

 Для создания нового ACL необходимо перейти на страницу Group ACL. Здесь находятся стандартные элементы управления + добавить, ‘e изменить, ‘x удалить.

 

Форма редактирования параметров Group ACL похожа на страницу Common ACL, но в тоже время есть ряд отличий — появились поля Client (source), Order  и Time.

 

Шаги:

  • Добавьте уникальное имя, которое больше не используется нигде в списках squidGuard
  • Заполните полe Client (source)
  • Заполнить левую колонку правил Target rules
  • Поля Order, Time и Rewrite сейчас не нужны
  • Установить опцию Not to allow IP addresses in URL для запрещения использования IP адресов в URL.
  • Установить Redirect mode в нужный режим и при необходимости заполнить поле Redirect.
  • Заполнить комментарий в поле Description.
  • Для сохранения изменений нажать кнопку Save.

 

Описание:

 Имя ACL должно быть уникально в пределах пакета squidGuard.

 

В поле  Client (source) вносим IP адреса, диапазоны адресов, подсети и домены. Это поле определяет группу пользователей, к которым будут  применяться правила данной ACL.

 

Важно: Старайтесь не допускать перекрывания одних и тех же пользователей разными ACL. В противном случае может получиться не то, что вы ожидаете от своих настроек. Исключение может составлять случай, когда вы задаете для большой группы правила и хотите для некоторых ее пользователей сделать исключения. Об этом читайте ниже.

 

 

Заполнение правил Destination rules производим так же, как и для соответствующего пункта на странице Default. Сейчас заполняем только левую колонку, так как правая пока нам не нужна. О случаях ее применения будет сказано дальше.

 

 

По использованию полей  Not allow IP addresses in URL и  Redirect никаких отличий от подобных пунктов на странице Default отличий нет.

Поля Rewrite и Overtime rewrite пока не нужны, их использование будет оговорено далее.

 

Исключения с использованием ACL

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

 

К примеру, имеется большая группа пользователей, для которых задана своя ACL. И из этой группы необходимо сделать несколько исключений (VIP или BAD персоны). Мы можем создать для каждого из них (или для всех вместе) ACL, которую необходимо поместить перед общей ACL группы. Тогда при подключении таких пользователей для них будет срабатывать персональная ACL, так как она будет расположена выше по списку, а до общей для группы ACL очередь просто не дойдет.  Для перемещения ACL по списку (выше/ниже) служит поле Order.

 

  • 1 ACL VIP   10.0.0.10 10.0.0.11 10.0.0.25
  • 2 ACL BAD 10.0.0.18 10.0.0.19 10.0.0.151
  • 3 ACL GROUP 10.0.0.0/24

 

Порядок ACL в списке 

Так как порядок ACL в списке очень важен, пришлось добавить поле Order для управления его позицией. Вы можете нажатием кнопок вверх/вниз установить нужную позицию данного ACL. После сохранения список будет перестроен.

 

Время в ACL 

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

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

Для начала необходимо на странице Times задать список времени. Каждый ACL может использовать только один список времени.

Выбирая в поле формы ACL какой-нибудь элемент Time мы включаем в работу второй (правый) список правил Destination rules.

 

ВНИМАНИЕ: Списки правил Destination rules в ACL с применением времени Times работают следующим образом:

  • Если локальное время pfSense удовлетворяет диапазонам в списке выбранного Time, то применяется левая колонка правил Destinations rules. Это так называемый OnTime (во-времени).
  • Иначе применяется правая колонка правил Destination rules. Это так называемый OverTime (вне времени).

 

ВАЖНО: Многие делают ошибки настраивая несколько ACL на одну и ту же группу пользователей с применением разных списков времени. ЭТО работать НЕ БУДЕТ!  Только один ACL + Time на каждую группу пользователей. И только два набора правил OnTime и OverTime.

 

Рекомендации по использованию списков времени в ACL.

 

Если вы собираетесь использовать списки Times для своих пользователей, и еще не совсем хорошо понимаете принципы работы squidGuard, могу предложить следующую схему настроек.

  • На странице Default в правилах Destination rules сбрасываем все настройки в ‘—’. Конечное правилоDefault access[all] ставим в deny. То есть мы запретили всех не-ACL пользователей. Теперь будет видно, попадают наши пользователи в ACL или нет.
  • Создаем ACL группы со всеми его правилами (левая колонка правил!), за исключением настроек времени. Проверяем доступ. Если доступ отсутствует — внимательно смотрим правила и полеSource еще раз. После успешной настройки:
  • Настраиваем список Times странице Times.
  • Выбираем список времени в нашей ACL группы и настраиваем правую колонку правил OverTime .
  • Необходимо убедиться, что pfSense настроен на нужный часовой пояс и время выставлено правильно.
  • Проверяем работу правил в соответствии со списками времени (OnTime/OverTime).
  • После успешной настройки ACL для всей группы можно аналогично приступить к настройке ACLисключений из этой крупы (см. выше), либо настраиваем ACL для других групп. Можно также вернуть настройки страницы Default для прочих пользователей, но при использовании времени я бы не рекомендовал этого делать.

 Для применения всех сделанных изменений необходимо нажать кнопку Apply настранице General page.

Еще статьи...

  1. SquidGuard разное