Фильтрафия и кеширования данных из web#
Настройка веб-прокси#
Настройка поведения посредника производится посредством отдачи поддерживаемых им команд через интерфейс командной строки либо через графический веб-интерфейс системы Numa Edge. Перечень поддерживаемых команд, их параметры и задаваемое ими поведение прокси рассмотрены ниже.
Примеры настройки фильтрации#
На рисунке показана схема сети, на которой основаны приведённые ниже примеры. Предположим следующее:
- устройства из внутренней сети компании пользуются ресурсами Интернет через систему Numa Edge;
- фильтрация и кэширование веб-содержимого обеспечиваются веб-прокси, входящим в состав системы Numa Edge;
- веб-прокси не запущен, его конфигурация пуста.
Примеры сквозные, то есть учитывают друг друга. В самом первом из них настраивается привязка прокси к интерфейсу с адресом 192.168.1.254, после чего его (прокси) можно будет запустить (что и происходит по команде commit
).
Настройка NAT#
В приведенной выше схеме видно, что Numa Edge будет использоваться на границе сети, поэтому необходимо настроить двунаправленное преобразование сетевых адресов (NAT masquerade). Помимо этого, вначале будет настроен прокси в "прозрачном" режиме и для его работы необходимо будет настроить перенаправление портов (DNAT) http и https на порты прокси 3128 и 3129, соответственно. Для работы прокси в "непрозрачном" режиме использование DNAT не требуется.
Настройка NAT для перенаправления HTTPS трафика на прокси сервер.#
Пример - Настройка правила 10 для IPv4 NAT#
- Создаем правило 10 для IPv4 NAT:
- Указываем, что данное правило будет использоваться для преобразования сетевого адреса и порта получателя:
- Правило будет работать с пакетами, приходящими на интерфейс локальной сети (eth2):
- Указываем адрес, на который будут перенаправляться пакеты:
- Данное правило будет работать для протокола TCP. Это необходимый параметр для того, чтобы указать порт, на который будет перенаправляться трафик:
- Перенаправляем HTTPS-трафик:
- На порт 3129, который слушает прокси сервер:
- Применяем текущие настройки:
- Просмотр настроенного правила для NAT:
Настройка NAT для перенаправления HTTP трафика на прокси сервер.#
Пример - Настройка правила 20 для IPv4 NAT#
- Создаем правило 20 для IPv4 NAT:
- Указываем, что данное будет использоваться для преобразования сетевого адреса и порта получателя:
- Правило будет работать с пакетами, приходящими на интерфейс локальной сети (eth2):
- Указываем адрес, на который будут перенаправляться пакеты:
- Данное правило будет работать для протокола TCP. Это необходимый параметр для того, чтобы указать порт, на который будет перенаправляться трафик:
- Перенаправляем HTTP-трафик:
- На порт 3128, который слушает прокси сервер:
- Применяем текущие настройки:
- Просмотр настроенного правила для NAT:
Настройка NAT для маскировки адресов локальной сети#
Пример - Настройка правила 30 для IPv4 NAT#
- Создаем правило 30 для IPv4 NAT:
- Указываем, что данное будет использоваться для двунаправленного преобразования сетевых адресов и портов:
- Правило будет работать с пакетами, уходящими с WAN интерфейса (eth1):
- Применяем текущие настройки:
- Просмотр настроенного правила для NAT:
Настройка системного DNS сервера и службы кеширующего DNS#
При установлении соединения с веб-сервером прокси-сервер получает информацию о доменном имени в заголовке "Host" протокола HTTP, либо поле SNI протокола TLS. Далее, прокси сервер самостоятельно получает значение IP адреса, соответствующее данному доменному имени, путем обращения с DNS-серверу. Ввиду этого необходимым требованием для корректной работы прокси-сервера является наличие настроенного системного DNS сервера. Также по соображениям безопасности и во исполнение требований RFC 2616 секции 14.23 значение IP адреса назначения HTTP/HTTPS пакета должно соответствовать заголовку Host/полю SNI. В случае их несовпадения, прокси-сервер будет фиксировать в системном журнале предупреждение о данном несоответствии. Далее, в зависимости от значения атрибута service webproxy host-verify-policy
:
- strict (по умолчанию) – соединение будет прервано, клиенту будет отправлен HTTP ответ с кодом 409;
- warning – соединение будет продолжено.
Во избежание данного поведения рекомендуется использовать либо общий кеширующий DNS сервер между клиентами и прокси-сервером, либо настроить на Numa Edge кеширующий DNS сервер. В этом примере производится настройка системного DNS сервера.
Пример - Настройка системного DNS сервера#
- В качестве системного DNS сервера укажем IP-адрес Яндекс DNS:
- Применение изменений:
- Просмотр получившейся конфигурации:
Теперь необходимо настроить службу кеширующего DNS, который будет общаться к вышестоящему DNS серверу и кешировать ответы.
Пример - Настройка службы кеширующего DNS#
- В качестве IP адреса, который будет слушать кеширующий DNS укажем адрес 192.168.1.254:
- Применение изменений:
- Просмотр получившейся конфигурации:
Блокировка сайтов без подмены сертификата#
Данный пример описывает минимальные настройки для работы прокси сервера. Приводится конфигурация, которая позволяет блокировать доступ к домену vk.com, при открытии сайта через протокол HTTPS.
Пример - Запрет доступа к отдельным адресам#
- Включение ожидания запросов на интерфейсе с адресом 192.168.1.254:
- Включение поддержки фильтрации HTTPS-трафика:
- Блокировка доступа к домену vk.com с помощью анализа поля SNI в сообщении Client Hello:
- Применяем текущие настройки:
- Просмотр минимальной настройки прокси сервера:
Создание удостоверяющего центра#
Создание удостоверяющего центра необходимо для генерации подменных сертификатов, при разрыве клиентского SSL-соединения. В этом примере создается УЦ, который генерирует RSA сертификаты с длинной ключа 1024 байта.
Пример - Создание УЦ для генерации подменных сертификатов#
- Создание узла конфигурации удостоверяющего центра:
- Задание размера ключа, который будет использоваться в качестве ключевой пары для сертификата УЦ, и всех подписанным им сертификатов:
- В качестве типа ключа используется RSA:
- Срок действия сертификата удостоверяющего центра задается равным 5 годам:
- Для сертификата УЦ задается значение Common Name, указывающее его принадлежность:
- Применение конфигурации:
- Просмотр примененной конфигурации:
-
Далее данный сертификат необходимо выгрузить из Numa Edge командой операционного режима:
-
Выход из конфигурационного режима в операционный:
- Экспорт сертификата УЦ в домашний каталог пользователя admin. Так же поддерживается возможность экспорта на съемный носитель (без указания атрибута to), либо экспорт на удаленные узлы, используя протоколы SCP, FTP и TFTP:
Сертификат будет экспортирован в архив, который будет необходимо распаковать и добавить в список доверенных УЦ на клиентских устройствах.
Включение подмены сертификатов для прокси-сервера#
Данный пример описывает настройку прокси сервера для перехвата HTTPS соединений с последующей подменой сертификата веб сайта. Для этого необходимо описать домены, соединения к которым должно быть перехвачено. Далее необходимо указать сертификат УЦ, который будет генерировать подменные сертификаты веб-сайтов.
Поскольку технология перехвата соединений включает в себя установку TLS соединения с требуемым веб-сервером со стороны Numa Edge, то на него необходимо импортировать корневые сертификаты доверенных УЦ. Обратите внимание, что если в процессе эксплуатации необходимо будет удалить один из корневых сертификатов УЦ, то после этого необходимо будет запустить службу webproxy, поскольку она кеширует сертификаты во внутреннем хранилище.
Пример - Включение функционала с подменой сертификатов#
- Переход в конфигурационный режим:
- Регулярное выражение обозначающее все возможные домены, где символ "." описывает любой символ, а символ "*" – любое количество повторений:
- В качестве УЦ, который будет генерировать подменяемые сертификаты указывается ранее созданный УЦ:
- Применение конфигурации:
Примечание
Обратите внимание, что действия ssl bump-server
и ssl block-server
могут применяться одновременно, при этом блокировка является более приоритетным действием. В данном примере блокировка домена vk.com продолжает работать, несмотря на включение подмены сертификатов для всех доменов.
Блокировка отдельных адресов (URL)#
Команды примера ниже при помощи фильтра local-block явно указывают отдельные адреса (вне категорий), запросы к которым будут блокироваться.
Пример - Запрет доступа к отдельным адресам#
- Запрет доступа к веб-сайту YouTube:
- Запрет доступа к веб-сайту Facebook:
- Применение изменений:
- Просмотр текущей конфигурации веб-прокси в этом контексте:
- Запрет доступа к веб-сайту YouTube:
Проверка работы фильтров#
Проверить работу фильтров можно обращением с соответствующим запросом через веб-прокси к адресату в Интернет и последующим просмотром журнала событий в поисках свидетельства такого обращения. При этом должна быть включена запись информации о срабатывании фильтров в журналы (протоколирование).
Просмотреть содержимое журнала событий, например, по фильтру local-block из предыдущего примера, можно при помощи команды (запрещающие фильтры помещают адреса в так называемый "чёрный" список - blacklist).
Команда в примере ниже включает протоколирование запросов по адресам, закрытым фильтром local-block из предыдущего примера.
Пример - Включение протоколирования#
- Включение протоколирования всего, что перехватывается фильтром
local-block
. Параметр default добавляется автоматически для верхнеуровневых списков,так как могут иметь место и другие списки local-block, задаваемые в соответствии с правилами 'squidguard rule xxx': - Применение изменений:
- Просмотр текущей конфигурации веб-прокси в этом контексте:
Фильтрация по категории данных#
Команды из примера ниже включат блокирование адресов из заранее определённых в Numa Edge категорий "реклама" (banner), "шпионское ПО" (spyware) и "азартные игры" (gambling).
Пример – Включение фильтрации по категориям адресов#
- Включение блокирования адресов из категории "реклама":
- Включение блокирования адресов из категории "шпионское ПО":
- Включение блокирования адресов из категории "азартные игры":
- Применение изменений:
- Просмотр текущей конфигурации веб-прокси в этом контексте:
Фильтрация по ключевому слову#
Команды из примера ниже запрещают доступ к сайтам, адреса которых содержат указанную последовательность символов. В этом примере блокируется доступ ко всем сайтам в доменной зоне Китая (".cn").
Пример – Включение фильтрации по ключевому слову#
- Запрет доступа ко всем сайтам доменной зоны Китая:
- Применение изменений:
- Просмотр текущей конфигурации веб-прокси в этом контексте:
Допуск к отдельным сайтам#
Команды из примера ниже разрешают доступ к отдельным сайтам из заблокированных категорий. В этом примере открывается доступ к сайту по фиктивному адресу www.company-banner.com, хотя он (в рамках примера) числится в категории "реклама", доступ к сайтам из которой закрыт. Такое возможно благодаря тому, что приоритет фильтра local-ok выше приоритета фильтра block-category и соответствующее разрешающее действие сработает раньше запрещающего и тем самым остановит сверку.
Пример – Допуск к отдельным сайтам#
- Предоставление пользователям доступа к фиктивному сайту www.company-banner.com:
- Применение изменений:
- Просмотр текущей конфигурации веб-прокси в этом контексте:
Перенаправление запросов пользователей#
По умолчанию, в ответ на запрос пользователя к заблокированному сайту возвращается страница другого, заранее определённого сайта. Адрес этой страницы задаётся при помощи команды redirect-url
, также можно указать причину (по сути - категорию), по которой доступ по запрошенному пользователем адресу был закрыт. Команды из примера ниже указывают системе Numa Edge показывать страницу с категорией и адресом заблокированного сайта, к которому пытается обратиться пользователь.
Пример - Установка адреса страницы с сайта-подмены для заблокированных адресов#
- Установка адреса нужной страницы. Приведённый в примере URL вызовет обращение. Этот скрипт вернёт страницу с заблокированным адресом и причиной, по которой доступ к URL был закрыт (обратите внимание на регистр символов в URL - в рамках HTTP он имеет значение):
- Применение изменений:
- Просмотр текущей конфигурации веб-прокси в этом контексте:
Поддержка разных групп пользователей#
До этого момента во всех примерах подразумевалось, что все пользователи равноправны. Однако, при решении каких-то задач может возникнуть потребность обрабатывать запросы одних пользователей не так, как запросы других. Команда source-group
позволяет сгруппировать пользователей по IP-адресам их систем, либо по адресам сетей, к которым относятся их системы.
Пример – Настройка доступа в зависимости от группы#
- Очистка существующей конфигурации в отношении фильтрации запросов:
- Применение изменений:
- Регулярное выражение обозначающее все возможные домены, где символ "." описывает любой символ, а символ "*" – любое количество повторений:
- Возвращать в ответ на запросы к заблокированным сайтам титульную страницу сайта google.ru:
- Создание группы для администраторов (с единственным IP-адресом):
- Создание группы для учителей (с одной подсетью):
- Создание группы для учащихся (с первой из двух подсетей):
- Создание группы для учащихся (со второй из двух подсетей):
- Создание правила для фильтрации запросов от группы ADMIN. В данном случае ограничений нет:
- Создание правила для фильтрации запросов от группы TEACHERS:
- Запрет доступа пользователей из группы TEACHERS к сайтам из категории “porn” ("сайты с порнографическим содержимым"):
- Запрет доступа пользователей из группы TEACHERS к сайтам из категории “shopping” ("сайты интернет-магазинов"):
- Создание правила для фильтрации запросов от группы STUDENTS:
- Запрет доступа пользователей из группы STUDENTS к сайтам из категории “warez” ("краденое/взломанное ПО"):
- Запрет доступа пользователей из группы STUDENTS к сайтам из категории “drugs” ("наркотики"):
- Запрет доступа пользователей из группы STUDENTS к сайтам из категории “filehosting” ("файлообмен"):
- Запрет доступа пользователей из группы STUDENTS к сайтам из категории “audio-video” ("аудио-видео содержимое"):
- Применение изменений:
- Просмотр текущей конфигурации веб-прокси в этом контексте:
Учёт разных промежутков времени#
В предыдущем примере правила фильтрации применялись независимо от момента времени. Для привязки связанных с группой правил фильтрации к промежуткам времени вроде будних дней и времени суток применяется команда time-period.
Команды из примера ниже показывают, как добавить в правила фильтрации учёт временных промежутков. В этом примере вводится новое правило с номером 25, в котором пользователям из группы TEACHERS закрывается доступ к сайтам из категории «porn» во внеучебное время (временной интервал AFTERHOURS), при этом остальные категории не блокируются. Вместе с тем существующее правило 20 дополняется временным промежутком SCHOOLHOURS, благодаря чему оно актуально только в учебные часы. В результате получается, что в учебные часы у пользователей группы TEACHERS закрыт доступ к сайтам из категорий «porn» и «shopping», а во внеучебные - только к «porn».
Пример – Применение правил в определённое время суток#
- Определение временного периода под названием SCHOOLHOURS, обозначающего рабочие (учебные) часы:
- Определение временного периода под названием AFTERHOURS, обозначающего нерабочее время:
- Уточнение правила 20 этим промежутком времени - теперь оно актуально только во время учебных часов:
- Создание нового правила для фильтрации запросов от группы TEACHERS ("преподаватели") во внеучебное время:
- Правило 25 актуально только во внеучебное время:
- Закрытие доступа пользователей из группы TEACHERS к сайтам только из категории “porn”:
- Применение изменений:
- Просмотр текущей конфигурации веб-прокси в этом контексте:
Работа с "белым" списком#
Распространённым способом фильтрации веб-содержимого является предоставление доступа ко всем сайтам за исключением некоторых заблокированных (составляющих, таким образом, "чёрный" список). Однако, бывают ситуации, когда необходимо, наоборот, закрыть доступ ко всем сайтам за исключением некоторых разрешённых (составляющих "белый" список). В примере ниже показано создание "белого" списка.
Пример – Определение "белого" списка#
- Очистка существующей конфигурации:
- Применение изменений:
- Регулярное выражение обозначающее все возможные домены, где символ "." описывает любой символ, а символ "*" – любое количество повторений:
- Возвращать в ответ на запросы к заблокированным сайтам титульную страницу сайта google.ru:
- Запрещение доступа ко всем сайтам в качестве действия по умолчанию (т.е. если явно не указано иное):
- Разрешение доступа к сайту “numatech.ru”:
- Разрешение доступа к сайту “yandex.ru”:
- Разрешение доступа к сайту “google.ru”:
- Применение изменений:
- Просмотр текущей конфигурации веб-прокси в этом контексте:
Настройка аутентификации пользователей на основе NTLM#
В примере ниже приведена настройка аутентификации пользователей прокси-сервера на основе NTLM. На рисунке приведена используемая схема сети.
Для корректной работы аутентификации на основе NTLM должны быть выполнены следующие условия:
- Настройка клиентской машины:
- Пользователь должен быть членом домена и находится в базе данных контроллера домена Microsoft Active Directory. Компьютер клиента должен находиться в базе контроллера домена.
- В настройках прокси веб-обозревателя должно быть установлено полное доменное имя (FQDN) прокси-сервера (или IP-адрес) и номер порта (например, 3128).
- Настройка сервера Microsoft Active Directory:
- Должен быть настроен сервер Active Directory.
- Должен быть настроен сервер DNS. На сервере DNS должна быть создана запись с доменным именем прокси-сервера.
- В домене необходимо создать учетную запись для прокси-сервера с правами на ввод компьютеров в домен.
- В данном примере предполагается следующее:
- На компьютере под управлением Windows, являющимся PDC, настроен домен TESTDOMAIN.LOCAL.
- В настройке сервера DNS создана запись с доменным именем для прокси-сервера edge.testdomain.local.
- PDC имеет IP-адрес 192.168.1.100.
- В базе AD создана учетная запись для прокси-сервера с правами администратора.
Помимо этого необходимо удалить настройки перенаправления http и https трафика, настроенные ранее, для работы прокси в "прозрачном" режиме.
Для настройки аутентификации пользователей прокси на основе NTLM, необходимо выполнить следующие шаги в режиме настройки:
Пример – Удаление настроенных выше правил для "прозрачного" режима#
- Удаление перенаправления https трафика на порт 3129:
- Удаление перенаправления http трафика на порт 3128:
- Применение изменений:
Пример – Настройка аутентификации пользователей прокси на основе NTLM#
- Отключение "прозрачного" режима работы прокси-сервера:
- Установка аутентификации клиентов на основе NTLM:
- Указание имени компьютера в домене:
- Указание пароля для учетной записи, созданной в AD для прокси сервера:
- Указание адреса контроллера домена:
- Указание имени пользователя:
- Указание имени домена:
- Фиксация конфигурации:
Настройка аутентификации пользователей на основе LDAP#
Numa Edge поддерживает возможность проверки подлинности клиентов прокси с использованием службы каталогов на основе протокола LDAP. Для этого необходимо настроить параметры подключения к серверу LDAP, для этого используется ветвь конфигурации system ldap-server
.
При использовании аутентификации пользователей возможна работа только в непрозрачном режиме прокси, при этом на клиентском ПО должны быть соответствующим образом прописаны настройки прокси-сервера.
При использовании аутентификации на основе LDAP, пользователю выдается приглашение на ввод регистрационного имени и пароля.
В примере ниже приведена настройка параметров подключения к серверу LDAP.
Пример – Настройка параметров подключения к серверу LDAP#
- Указание имени привязки, используемого для подключения к серверу LDAP:
- Указание IP-адреса сервера LDAP:
- Указание базового DN, в котором будет осуществляться поиск:
- Указание пароля для аутентификации на сервере LDAP:
- Указание используемого для подключения к серверу LDAP номера сетевого порта:
- Указание корневого объекта каталога, начиная от которого необходимо производить поиск учетных записей пользователей:
- Указание корневого объекта каталога, начиная от которого необходимо производить поиск учетных записей пользователей:
- Фиксация конфигурации:
В примере ниже приведена настройка параметров прокси-сервера для включения аутентификации на основе протокола LDAP.
Пример – Включение аутентификации на основе LDAP в параметрах прокси-сервера#
- Указание аутентификации на основе LDAP:
- Отключение прозрачного режима:
- Фиксация конфигурации: