В случае установки блокировки всего входящего и/или исходящего трафика по протоколу IPv4 и/или IPv6 в МЭ, для корректной работы прокси-сервера необходимо добавить разрешающие правила, обеспечивающие обработку трафика через loopback:
Для IPv4-трафика:
# Для входящего трафика:
set firewall ipv4 input filter rule 5 action accept
set firewall ipv4 input filter rule 5 destination address 127.0.0.1
set firewall ipv4 input filter rule 5 description "Allow IPv4 loopback"
# Для исходящего трафика:
set firewall ipv4 output filter rule 5 action accept
set firewall ipv4 output filter rule 5 source address 127.0.0.1
set firewall ipv4 output filter rule 5 description "Allow IPv4 loopback"
Для IPv6-трафика:
# Для входящего трафика:
set firewall ipv6 input filter rule 5 action accept
set firewall ipv6 input filter rule 5 destination address ::1/128
set firewall ipv6 input filter rule 5 description "Allow IPv6 loopback"
# Для исходящего трафика:
set firewall ipv6 output filter rule 5 action accept
set firewall ipv6 output filter rule 5 source address ::1/128
set firewall ipv6 output filter rule 5 description "Allow IPv6 loopback"
Для указания порта по умолчанию, на котором прокси-сервер будет прослушивать запросы, необходимо ввести следующую команду:
set service webproxy default-port <portnumber>
где <portnumber> – номер порта. Возможно указание значения в диапазоне от «1025» до «65535». По умолчанию используется порт «3128».
Задать IPv4-адрес сетевого интерфейса, на котором прокси-сервер будет прослушивать запросы пользователей:
set service webproxy listen-address <x.x.x.x>
где <x.x.x.x> – IPv4-адрес. В целях обеспечения безопасности адрес прослушивания должен использоваться только в локальных/защищённых сетях.
Указать порт, на котором прокси-сервер будет прослушивать запросы:
set service webproxy listen-address <x.x.x.x> port <portnumber>
где <portnumber> – номер порта. Возможно указание значения в диапазоне от «1025» до «65535». По умолчанию применяется значение, заданное параметром «default-port».
В режиме прозрачного прокси данная команда определяет порт прослушивания HTTP-трафика для указанного IPv4-адреса. В непрозрачном режиме указанный порт используется для прослушивания как HTTP-, так и HTTPS-трафика на соответствующем IPv4-адресе.
Установить отличный от значения по умолчанию номер порта для указанного IPv4-адреса прокси, используемого для HTTPS трафика в прозрачном режиме работы прокси-сервера:
set service webproxy listen-address <x.x.x.x> https-port <portnumber>
где <portnumber> – номер TCP-порта, на котором прокси-сервер будет ожидать соединение. Возможно указание значения в диапазоне от «1025» до «65535». По умолчанию используется значение «3129».
Данная команда предназначена для перенастройки прокси-сервера на ожидание соединений по другому порту, отличному от используемого по умолчанию для HTTPS трафика. Перенастройка выполняется только для сетевого интерфейса, связанного с указанным IP-адресом.
Отключить прозрачный режим работы прокси-сервера на прослушиваемом адресе:
set service webproxy listen-address <x.x.x.x> disable-transparent
Данная команда предназначена для отключения прозрачного режима работы прокси-сервера для запросов, поступающих на сетевой интерфейс системы ARMA Стена, связанный с указанным IP-адресом. В случае отключения прозрачного прокси-сервера на клиентских машинах необходимо указать настройки прокси-сервера.
При настройке webproxy по умолчанию устанавливается прозрачный режим работы. Для корректной работы webproxy в прозрачном режиме также необходимо выполнить ручную настройку NAT (см. «Прозрачный режим прокси-сервера»).
Запретить доступ к веб-содержимому указанного типа:
set service webproxy reply-block-mime <тип_mime>
где <тип_mime> – тип mime, доступ к которому будет закрыт. Типы mime задаются в виде «тип/подтип». К примеру, тип mime видео в формате Quicktime выглядит как «video/quicktime», тип mime для файлов в формате PDF – как «application/pdf», а тип mime для файлов «.wav» – как «audio/wav».
Поддерживается блокирование типов mime, представленных в таблице (см. Таблица «Типы mime»).
Указать используемый метод аутентификации пользователей прокси:
set service webproxy authentication <method>
где <method> – метод аутентификации.
ARMA Стена поддерживает следующие методы аутентификации:
«kerberos» – аутентификация на основе протокола Kerberos;
«ldap» – аутентификация на основе протокола LDAP;
«ntlm» – аутентификация на основе протокола NTLM.
Указать максимальное количество запускаемых процессов аутентификации:
set service webproxy authentication children <number>
где <number> – количество процессов аутентификации. По умолчанию используется значение «5».
Указать временной интервал между запросами учётных данных пользователя:
set service webproxy authentication credentials-ttl <number>
где <number> – интервал, исчисляемый в минутах. По умолчанию используется значение «60».
Указать текст, который должен быть сообщён клиенту в схеме аутентификации:
set service webproxy authentication realm "ARMA proxy auth"
где «ARMA proxy auth» – текст, который будет отображаться пользователю при запросе имени пользователя и пароля.
Выключить кэширование данных, полученных с указанного домена в ответ на запросы пользователей:
set service webproxy domain-noncache <domain>
где <domain> – имя домена, данные с которого в кэш помещаться не будут. Если домен в команде не указан, то в кэш помещается всё содержимое, не противоречащее другим ограничениям.
Указать доменное имя, которое будет присоединяться к каждому URL, доменная часть которого не содержит точек, перед его дальнейшей обработкой:
set service webproxy append-domain <domain>
где <domain> – имя домена, которое будет присоединяться к доменной части URL. Например, если в рассматриваемой команде указано доменное имя «infowatch.ru», а запрос пользователя обращается по URL «www/abc.html», то в результате присоединения в дальнейшую обработку пойдёт URL «www.infowatch.ru/abc.html».
Указать размер кэша – хранилища для временного хранения содержимого:
set service webproxy cache-size <num>
где <num> – объём дискового пространства, указываемый в мегабайтах. Возможно указать значение в диапазоне от «0» до «4294967295». По умолчанию используется значение «0», т.е. кэширование не производится.
Ограничение входящей скорости передачи данных для определённых IP-адресов:
15.1 Команда создания списка контроля доступа:
set service webproxy limit <name>
где <name> – имя списка контроля доступа.
15.2 Команда установки максимальной входящей скорости передачи данных для указанного списка контроля доступа:
set service webproxy limit <name> speed <1-10000000>
где <1-10000000> – значение максимальной скорости передачи данных в Кбит/сек.
15.3 Команда добавления IP-адреса в указанный список контроля доступа:
set service webproxy limit <name> ip-address <ip>
где <ip> – IP-адрес в форматах <x.x.x.x>, <x.x.x.x/x> для IPv4 или <h:h:h:h:h:h:h:h> для IPv6.
Если в качестве значения параметра <ip> указан IP-адрес в формате <x.x.x.x/24>, то ограничение скорости будет действовать только для одного хоста. Если задан адрес <x.x.x.0/24>, то ограничение будет использоваться для всех хостов подсети.
Например, необходимо ограничить входящую скорость до 100 Мбит/сек для IP-адресов «10.0.0.1» и «10.0.0.2»:
set service webproxy limit limit_100mbit speed 102400
set service webproxy limit limit_100mbit ip-address 10.0.0.1
set service webproxy limit limit_100mbit ip-address 10.0.0.2
commit
save
Включение режима работы прокси-сервера:
set service webproxy http-access-mode <режим>
где <режим> – допускается указание следующих значений:
«allow» – разрешено все, что не запрещено;
«deny» – запрещено все, что не разрешено. Используется по умолчанию.
Включение режима симметричной многопроцессорной обработки (SMP) в прокси-сервере:
set service webproxy workers <n>
где <n> – количество рабочих процессов прокси-сервера. Возможно указать значение в диапазоне от «1» до «256». По умолчанию используется значение «1» – режим без SMP, запуск одного основного демона процесса Squid.
Рекомендуется устанавливать значение параметра «workers» не выше количества доступных процессорных ядер в системе. Превышение этого значения приводит к избыточной конкуренции за ресурсы ЦПУ, увеличению накладных расходов на переключение контекстов и снижению общей производительности.
Кроме того, не рекомендуется выделять все ядра процессора исключительно под прокси-сервер, поскольку это может негативно сказаться на работе других системных служб и фоновых процессов, необходимых для стабильной и безопасной эксплуатации устройства.
Примечание
При использовании более одного рабочего процесса (workers > 1) функция кэширования должна быть отключена. Для этого необходимо выполнить следующую команду:
set service webproxy cache-size 0
Примечание
Настройки параметра «workers» вступают в силу после перезапуска службы прокси-сервера. Перезапуск службы выполняется автоматически при сохранении настроек (выполнении команд «commit» и «save») с измененным значением параметра «workers». Вручную перезапустить сервис возможно с помощью следующей команды, используя УЗ «admin»:
Списки контроля доступа могут быть запрещающими или разрешающими.
Команда создания списка контроля доступа:
set service webproxy acl name <имя-списка> action [deny | allow]
где:
<имя-списка> – имя списка контроля доступа. Допускается использовать цифры, латинские буквы, а также символы «_» и «-»;
«deny» – запретить;
«allow» – разрешить.
Команда назначения приоритета для списка:
set service webproxy acl name <имя-списка> prior <приоритет>
где <приоритет> – численное значение в диапазоне от «1» до «999». Обязательный параметр.
Команды указания файла, содержащего перечень доменных имён или IP-адресов:
set service webproxy acl name <имя-списка> [destination | source] domain-list-file <имя-файла>
set service webproxy acl name <имя-списка> [destination | source] ip-address-list-file <имя-файла>
где:
«destination» – получатель;
«source» – отправитель;
<имя-файла> – имя файла с расширением «.txt», в котором каждое значение доменного имени или IP-адреса должно быть указано в отдельной строке, например:
example.com
example.net
При одновременном указании адресов и доменов для получателя/отправителя, проверка будет выполняться по обоим условиям. В случае несоответствия какого-либо условия, правило не будет применено.
Файлы, содержащие доменные имена или IP-адреса, должны располагаться в соответствующих директориях:
«/opt/vyatta/etc/config/files/configuration/service/webproxy/acl/name/destination/domain-list-file/» – доменные имена получателей;
В качестве примера приведён порядок изменения конфигурации прокси-сервера для блокирования доступа клиента к ресурсу «example.com/weapons».
Предварительно на ARMA Стена для настройки прокси-сервера введены следующие команды:
set service webproxy acl name DENY_DSTDOMAIN_30 action deny
set service webproxy acl name DENY_DSTDOMAIN_30 destination domain example.com/weapons
set service webproxy acl name DENY_DSTDOMAIN_30 prior 30
set service webproxy acl name DENY_SRCADDR_20 action deny
set service webproxy acl name DENY_SRCADDR_20 source ip-address 192.168.1.10
set service webproxy acl name DENY_SRCADDR_20 prior 20
set service webproxy listen-address 192.168.1.10
commit
save
Для настройки блокирования доступа к определённому URL необходимо выполнить следующие действия:
Перейти в УЗ суперпользователя:
admin@ngfwos:~$ sudo -i
Добавить в директорию «/etc/squid/» текстовый файл «block_urls.txt», содержащий URLPATH, доступ к которым требуется ограничить. В примере используется «/weapons».
Открыть с помощью текстового редактора файл конфигурации прокси-сервера «squid.conf», расположенный в директории «/etc/squid/» (см. Рисунок – Файл конфигурации прокси-сервера).
Сохранить изменения в файле конфигурации прокси-сервера «squid.conf».
Инициировать перезапуск службы:
root@ngfwos:~# systemctl restart squid
Выйти из УЗ суперпользователя:
root@ngfwos:~# exit
Примечание
При внесении каких-либо изменений в конфигурацию службы «webproxy» посредством команды «commit» или перезагрузке ARMA Стена будет выполнен откат настройки списков контроля доступа в файле «squid.conf» к предыдущему состоянию (см. Рисунок – Файл конфигурации прокси-сервера).
Фильтрация веб-запросов в системе ARMA Стена осуществляется с использованием URL-фильтров. По умолчанию функция URL-фильтрации отключена, и все запросы пропускаются без ограничений.
Существуют два типа URL-фильтров:
Глобальные фильтры – применяются ко всему трафику, источник которого не принадлежит ни одной группе пользователей.
Правила фильтрации, привязанные к группам пользователей – применяются только к трафику от пользователей, включённых в соответствующую группу.
Порядок обработки запросов
Система определяет принадлежность IP-адреса источника к какой-либо группе пользователей, для которой установлены правила фильтрации.
Если принадлежность установлена, к трафику применяются только правила указанной группы в порядке возрастания их номеров (от «1» до «1024»). При первом совпадении с правилом выполняется предписанное действие, после чего дальнейшая обработка запроса прекращается. Глобальные фильтры при этом не учитываются, даже если ни одно из правил группы не было применено.
Если IP-адрес не принадлежит ни одной группе или в привязанной группе отсутствуют правила, применяются глобальные фильтры.
Если ни один фильтр (ни глобальный, ни в правилах групп) не сработал, применяется действие, указанное в параметре «default-action».
Порядок проверки глобальных фильтров определяется приоритетом: фильтр с более высоким приоритетом обрабатывается первым. Приоритеты фильтров (1 – наивысший):
«local-ok» – разрешает доступ к указанному IP-адресу;
«local-block» – запрещает доступ к указанному IP-адресу;
«allow-ipaddr-url» – разрешает запросы, в URL которых вместо доменного имени сайта указан IP-адрес;
«block-category» – запрещает доступ по адресам из указанной категории;
«allow-category» – разрешает доступ по адресам из указанной категории;
«local-block-keyword» – блокирует запросы к содержимому, URL которого содержит указанный набор символов;
«local-block-url» – блокирует доступ к указанному URL;
«local-ok-url» – разрешает доступ к указанному URL;
«default-action» – задаёт действие, которое будет применяться ко всем запросам, не попавшим под имеющиеся фильтры.
Правила фильтрации могут включать дополнительные условия – например, привязку к временным интервалам или к источникам трафика. Фильтрация применяется только при выполнении всех условий, заданных в правиле.
Предупреждение
При создании правила фильтрации обязательно требуется его привязка к существующей группе пользователей. Правило, не привязанное ни к одной группе, приводит к нарушению корректной работы службы SquidGuard. В этом случае отключается вся URL-фильтрация (как глобальная, так и привязанная к группам) и весь веб-трафик пропускается без ограничений.
Примечание
Поскольку SquidGuard работает на уровне HTTP-запросов (а не IP-пакетов), он не может автоматически сопоставлять IP-адреса с доменными именами в HTTPS-трафике. Следовательно, блокировка по IP-адресу не гарантирует запрета доступа к соответствующему веб-ресурсу через HTTPS. Для полноценной блокировки доступа необходимо также настроить запрет на URL-адрес ресурса.
Альтернативный подход заключается в настройке правил межсетевого экрана для блокировки IP-адреса, связанного с данным ресурсом.
Запретить доступ к ресурсам из указанной категории:
set service webproxy url-filtering squidguard block-category <категория>
Разрешить запросы, в URL которых указан IP-адрес, а не доменное имя:
set service webproxy url-filtering squidguard allow-ipaddr-url
Задать действие, которое будет применяться ко всем запросам, не попавшим под имеющиеся фильтры:
set service webproxy url-filtering squidguard default-action <действие>
где <действие> – действие над запросами по умолчанию. Допустимые значения: «allow» – пропустить, «block» – блокировать. По умолчанию используется значение «allow».
Включить режим безопасного поиска на популярных поисковых системах:
set service webproxy url-filtering squidguard enable-safe-search
В настоящее время поддерживаются следующие поисковые системы: «Google», «Yahoo» и «Bing». По умолчанию режим безопасного поиска выключен.
Заблокировать доступ к указанному IPv4-адресу:
set service webproxy url-filtering squidguard local-block <x.x.x.x>
где <x.x.x.x> – IP-адрес, доступ к которому надо запретить.
Заблокировать запросы, URL которых содержит указанный в качестве ключа набор символов:
set service webproxy url-filtering squidguard local-block-keyword <ключ>
где <ключ> – простая строка символов или регулярное выражение, совпадение которых с чем-либо в URL вызовет блокировку содержащего URL-запроса.
Заблокировать доступ к указанному URL:
set service webproxy url-filtering squidguard local-block-url <адрес>
где <адрес> – URL, доступ к которому требуется закрыть. Вводить значение необходимо без «http://».
Разрешить доступ к указанному IP-адресу:
set service webproxy url-filtering squidguard local-ok <x.x.x.x>
где <x.x.x.x> – IP-адрес, доступ к которому необходимо разрешить.
Разрешить доступ к указанному URL:
set service webproxy url-filtering squidguard local-ok-url <адрес>
где <адрес> – URL, доступ к которому требуется разрешить. Вводить значение необходимо без «http://».
Включить журналирование URL-запросов:
set service webproxy url-filtering squidguard log [all | <категория>]
где:
«all» – включить журналирование всех URL-запросов;
<категория> – только запросы, относящиеся к указанной категории.
Указать URL, возвращаемый при попытке доступа к заблокированному ресурсу:
set service webproxy url-filtering squidguard redirect-url <адрес>
где <адрес> – URL, который будет возвращён в ответ на запросы по URL из «чёрного» списка. По умолчанию используется значение «block.ngfwos.net».
Примечание
При значении default-action block указанный <адрес> должен быть внесён в список исключений (например, через local-ok-url), иначе пользователь не получит страницу перенаправления.
Определить временной период, в течение которого будет действовать URL-фильтрация:
set service webproxy url-filtering squidguard time-period <имя_периода>
где <имя_периода> – имя временного периода.
13.1. Указать дни и временные интервалы действия периода:
set service webproxy url-filtering squidguard time-period <имя_периода> days <день> time <hh:mm-hh:mm>
где:
<день> – день, по наступлении которого указанный временной период приобретает актуальность. Поддерживаются следующие значения:
«Sun» – по воскресеньям;
«Mon» – по понедельникам;
«Tue» – по вторникам;
«Wed» – по средам;
«Thu» – по четвергам;
«Fri» – по пятницам;
«Sat» – по субботам;
«weekdays» – по будням;
«weekend» – по выходным (не праздничным) дням;
«all» – во все дни.
<hh:mm-hh:mm> – время, в течение которого актуален указанный временной период. Представление времени 24-часовое, формат диапазона «чч:мм-чч:мм» без пробелов. Если не указан временной период, то правило действует весь день «00:00-24:00».
13.2. Установить описание временного периода:
set service webproxy url-filtering squidguard time-period <имя_периода> description <описание>
где <описание> – краткое описание. Если описание содержит пробелы, то его необходимо заключить в двойные кавычки. Максимальная длина значения – «255» символов.
Отключить URL-фильтрацию без удаления конфигурации:
Для индивидуальной обработки трафика от различных пользователей используется механизм группирования по IP-адресам, подсетям, доменам или именам аутентифицированных пользователей.
Команды управления группами пользователей:
Создать группу пользователей:
set service webproxy url-filtering squidguard source-group <имя_группы>
где <имя_группы> – имя группы. Имя группы пользователей должно соответствовать следующим требованиям:
не должно начинаться с цифры;
первый символ должен быть латинской буквой (a–z, A–Z) или символом подчёркивания (_);
второй символ должен быть латинской буквой или символом подчёркивания (_);
третий символ должен быть латинской буквой или цифрой (0–9);
последующие символы (начиная с четвёртого, если есть) могут включать латинские буквы, цифры, символы подчёркивания (_), дефисы (-) и точки (.);
минимальная длина имени – три символа.
Добавить IPv4-адрес, подсеть или диапазон адресов в группу:
set service webproxy url-filtering squidguard source-group <имя_группы> address <адрес>
где <адрес> – IP-адрес в формате <x.x.x.x> или адрес IPv4-подсети в формате <x.x.x.x/x>. Также возможно указать диапазон IPv4-адресов в формате <x.x.x.x>-<x.x.x.x>.
Установить описание группы:
set service webproxy url-filtering squidguard source-group <имя_группы> description <описание>
где <описание> – краткое описание группы. Если описание содержит пробелы, то его необходимо заключить в двойные кавычки. Максимальная длина значения – «255» символов.
Добавить домен в группу:
set service webproxy url-filtering squidguard source-group <имя_группы> domain <домен>
где <домен> – название домена, который нужно включить в члены группы (например, «infowatch.ru»).
IP-адреса систем или подсетей пользователей должны успешно разрешаться по обратной зоне DNS в указанное доменное имя.
Добавить пользователя, успешно прошедшего аутентификацию, в члены группы:
set service webproxy url-filtering squidguard source-group <имя_группы> user <имя_пользователя>
где <имя_пользователя> – имя аутентифицированного пользователя, которого нужно включить в члены группы.
Создать правило фильтрации для группы пользователей:
set service webproxy url-filtering squidguard rule <номер> source-group <имя_группы>
где <номер> – уникальный номер правила. Возможно указать значение в диапазоне от «1» до «1024».
Для правил фильтрации групп пользователей доступны все параметры глобальной фильтрации.
Синтаксис написания параметров настроек правил фильтрации групп пользователей:
#Разрешить доступ к веб-содержимому по адресам из указанной категории в пределах правила:
set service webproxy url-filtering squidguard rule <номер> allow-category <категория>
#Запретить доступ к веб-содержимому по адресам из указанной категории в пределах правила:
set service webproxy url-filtering squidguard rule <номер> block-category <категория>
#Разрешить запросы в указанном правиле, у которых в URL указан IP-адрес, а не доменное имя:
set service webproxy url-filtering squidguard rule <номер> allow-ipaddr-url
#Задать действие по умолчанию для указанного правила:
set service webproxy url-filtering squidguard rule <номер> default-action <действие>
#Включить режим безопасного поиска на популярных поисковых системах для указанного правила:
set service webproxy url-filtering squidguard rule <номер> enable-safe-search
#Запретить доступ к указанному адресу IP или URL в пределах правила:
set service webproxy url-filtering squidguard rule <номер> local-block <x.x.x.x>
#Блокировать запросы к URL, если в нем содержится указанное ключевое значение в данном правиле:
set service webproxy url-filtering squidguard rule <номер> local-block-url <адрес>
#Блокировать в рамках правила запросы к содержимому, URL которого содержит указанный набор символов:
set service webproxy url-filtering squidguard rule <номер> local-block-keyword <ключ>
#Разрешить доступ к указанному адресу IP или URL в пределах правила:
set service webproxy url-filtering squidguard rule <номер> local-ok <x.x.x.x>
#Разрешить доступ по указанному IP или URL в пределах правила:
set service webproxy url-filtering squidguard rule <номер> local-ok-url <адрес>
#Включить в пределах указанного правила протоколирование запросов пользователей к адресам из определенной категории:
set service webproxy url-filtering squidguard rule <номер> log [all | <категория>]
#Изменить URL, содержимое которого возвращается вместо запрошенного при обращении к адресам из "чёрного" списка в указанном правиле:
set service webproxy url-filtering squidguard rule <номер> redirect-url <адрес>
#Задать промежуток времени, в течение которого указанное правило будет действовать:
set service webproxy url-filtering squidguard rule <номер> time-period <имя_периода>
Примечание
Минимально необходимый набор команд для корректной работы правила:
set service webproxy url-filtering squidguard source-group <имя_группы>
set service webproxy url-filtering squidguard source-group <имя_группы> address <адрес>
set service webproxy url-filtering squidguard rule <номер> source-group <имя_группы>
Интеграция с LDAP
Squidguard может осуществлять поиск в LDAP, используя заданные URL-адреса, если имя пользователя или IP-адрес не были найдены в существующем списке пользователей. Для этого применяются следующие команды:
Указать URL-адрес LDAP для поиска IP-адреса источника и добавить его в группы пользователей:
set service webproxy url-filtering squidguard source-group tests ldap-ip-search <ldap-ip>
где <ldap-ip> – URL-адрес LDAP для поиска IP-адреса источника. Возможно указать несколько LDAP URL. В LDAP URL необходимо использовать «%s» для ссылки на IP-адрес источника. Если поиск возвращает запись, то IP-адрес считается найденным, в противном случае выполняется попытка поиска следующего URL.
Указать URL-адрес LDAP для поиска имени пользователя и добавить его в члены группы:
set service webproxy url-filtering squidguard source-group tests ldap-user-search <ldap-user>
где <ldap-user> – URL-адрес LDAP для поиска неизвестного имени пользователя. Возможно указать несколько LDAP URL. В LDAP URL необходимо использовать «%s» для ссылки на имя пользователя. Если поиск возвращает запись, то пользователь считается найденным, в противном случае выполняется попытка поиска следующего URL.
Рисунок – Схема стенда для настройки прокси-сервера
Предварительно система ARMA Стена настроена следующим образом:
Настроена переадресация DNS:
set system name-server 8.8.8.8
set service dns forwarding cache-size 500
set service dns forwarding listen-address 192.168.4.1
set service dns forwarding allow-from 192.168.4.0/24
set service dns forwarding name-server 8.8.8.8
commit
save
Настроены правила NAT:
set nat source rule 10 outbound-interface name eth0
set nat source rule 10 source address 192.168.4.0/24
set nat source rule 10 translation address masquerade
commit
save
где:
«eth0» – интерфейс с доступом к сети интернет;
«192.168.4.0/24» – адрес сети интерфейса «eth1», который будет подменяться IP-адресом интерфейса «eth0».
Включена отправка ответов на локальные ICMP-запросы:
set firewall global-options all-ping enable
commit
save
В системе ARMA Стена по умолчанию транзитный трафик блокируется. Для разрешения такого трафика необходимо создать соответствующие правила в МЭ или изменить действие по умолчанию для транзитного трафика с «drop» на «accept» с помощью команды «set firewall <ipv4 | ipv6 | bridge> forward filter default-action accept».
На ПК «Client» после перезапуска сетевого интерфейса обеспечен доступ к сети Интернет.
Для настройки политик блокировки какого-либо ресурса необходимо ввести следующую команду:
set service webproxy url-filtering squidguard local-block-url youtube.com
set service webproxy url-filtering squidguard local-block-url rutube.ru
commit
save
В результате с ПК «Client» после перезапуска веб-браузера доступ к ресурсам «youtube.com» и «rutube.ru» будет запрещён.
В приведённой схеме видно, что ARMA Стена будет использоваться на границе сети, поэтому необходимо настроить двунаправленное преобразование сетевых адресов (NAT masquerade). Для работы прокси в прозрачном режиме необходимо будет настроить перенаправление портов (DNAT) http и https на порты прокси 3128 и 3129, соответственно. Для работы прокси в непрозрачном режиме использование DNAT не требуется.
Настройка NAT для перенаправления HTTPS и HTTP трафика на прокси-сервер
set nat destination rule 10 destination port 'https'
set nat destination rule 10 inbound-interface name 'eth1'
set nat destination rule 10 protocol 'tcp'
set nat destination rule 10 translation address '192.168.4.1'
set nat destination rule 10 translation port '3129'
set nat destination rule 20 destination port 'http'
set nat destination rule 20 inbound-interface name 'eth1'
set nat destination rule 20 protocol 'tcp'
set nat destination rule 20 translation address '192.168.4.1'
set nat destination rule 20 translation port '3128'
commit
save
Правило с приоритетом «10» определяет настройки NAT для перенаправления HTTPS-трафика на прокси-сервер. Правило с приоритетом «20» предназначено для перенаправления HTTP-трафика.
Просмотр настроенных правил для NAT:
admin@ngfwos# show nat destination
rule 10 {
destination {
port https
}
inbound-interface {
name eth1
}
protocol tcp
translation {
address 192.168.4.1
port 3129
}
}
rule 20 {
destination {
port http
}
inbound-interface {
name eth1
}
protocol tcp
translation {
address 192.168.4.1
port 3128
}
}
[edit]
admin@ngfwos#
Настройка NAT для маскировки адресов локальной сети
set nat source rule 30 outbound-interface name eth0
set nat source rule 30 source address 192.168.4.0/24
set nat source rule 30 translation address masquerade
commit
save
set service dns forwarding allow-from 192.168.4.0/24
set service dns forwarding listen-address 192.168.4.1
set service dns forwarding name-server 8.8.8.8
commit
save
Просмотр настроек системного DNS-сервера:
admin@ngfwos# show service dns
forwarding {
allow-from 192.168.4.0/24
listen-address 192.168.4.1
name-server 8.8.8.8 {
}
}
[edit]
admin@ngfwos#
admin@ngfwos# run generate pki ca install test
Enter private key type: [rsa, dsa, ec] (Default: rsa)
Enter private key bits: (Default: 2048)
Enter country code: (Default: GB)
Enter state: (Default: Some-State)
Enter locality: (Default: Some-City)
Enter organization name: (Default: NGFWOS)
Enter common name: (Default: ngfwos.net)
Enter how many days certificate will be valid: (Default: 1825)
Note: If you plan to use the generated key on this router, do not encrypt the private key.
Do you want to encrypt the private key with a passphrase? [y/N]
2 value(s) installed. Use "compare" to see the pending changes, and "commit" to apply.
[edit]
commit
save
В данном случае при создании сертификата все параметры были оставлены без изменений.
Просмотр сгенерированного сертификата УЦ:
admin@ngfwos# show pki
Must specify config path
ca test {
certificate MIIDpzCC..............
private {
key MIIEvAIBADAN............==
}
}
[edit]
admin@ngfwos#
set service webproxy listen-address 192.168.4.1 https-port 3129
set service webproxy listen-address 192.168.4.1 tls-bump ca-certificate test
set service webproxy listen-address 192.168.4.1 tls-bump enable
set service webproxy url-filtering squidguard allow-ipaddr-url
set service webproxy url-filtering squidguard local-block-url ya.ru
commit
DEPRECATION WARNING: URL filtering with SquidGuard is deprecated and
will be removed in the future NGFWOS versions.
save
В данном примере реализована блокировка доступа к сайту «ya.ru», при этом разрешены запросы, в URL которых вместо доменного имени сайта указан IP-адрес.
При разрешённом по умолчанию входящем и исходящем трафике в системе ARMA Стена прокси-сервер в прозрачном режиме обрабатывает соединения на портах 80/TCP и 443/TCP, перехватывая TCP-трафик, но не перенаправляя UDP-трафик на порту 443, вследствие чего QUIC-трафик передаётся напрямую от клиента к серверу, минуя прокси.
Блокировка QUIC-трафика может быть реализована с использованием правил МЭ или посредством службы контроля приложений «App Control».
Для фильтрации QUIC-трафика с использованием службы контроля приложений необходимо добавить правило фильтрации протокола quic и активировать службу СОВ в режиме IPS на интерфейсе, через который проходит интернет-трафик:
set app-control category protocols app quic
set suricata netmap interface <iname> copy-mode ips
set suricata enable yes
commit
save
При использовании межсетевого экрана для блокировки QUIC-трафика необходимо настроить правило, запрещающее UDP-трафик на порту 443. Ниже приведён пример конфигурации правила фильтрации для IPv4 в рамках стандартной политики обработки трафика:
set firewall ipv4 forward filter rule 10 action drop
set firewall ipv4 forward filter rule 10 destination port 443
set firewall ipv4 forward filter rule 10 protocol udp
Прозрачный режим не предполагает какой-либо дополнительной настройки ПО пользователей. Однако для корректной работы системы необходимо, чтобы на клиентских устройствах в качестве основного шлюза и DNS-сервера был указан IP-адрес ARMA Стена – «192.168.4.1». Если используется настройка подмены сертификата TLS-Bump, как показано в примере, то на компьютере пользователя необходимо установить сгенерированный сертификат УЦ (см. «Настройки подмены сертификата TLS-Bump»).
Для проверки работоспособности фильтра на компьютере «Client» необходимо открыть веб-браузер и перейти на сайт «ya.ru». В результате сайт будет заблокирован, и происходит перенаправление на страницу «block.ngfwos.net». При этом доступ ко всем остальным интернет-ресурсам открыт.
В качестве примера настройки SSO для прокси-сервера будет использоваться схема стенда, представленная на рисунке (см. Рисунок – Схема стенда для настройки SSO), со следующими параметрами:
домен Active Directory – «example.com»;
FQDN контроллера домена – «dc.example.com»;
контроллер домена является DNS-сервером сети «LAN»;
В качестве примера настройки SSO по протоколу Kerberos для прокси-сервера будет использоваться схема стенда, представленная на рисунке (см. Рисунок – Схема стенда для настройки SSO).
Сервер AD предварительно настроен следующим образом:
добавлены пользователи «ngfwos» и «user1»;
создан домен «example.com»;
сгенерирован файл «ngfwos.keytab» с помощью ввода в Powershell следующей команды:
Записи создаются в соответствии с руководством пользователя используемого DNS-сервера.
На ПК «Client» необходимо войти в домен «example.com» под пользователем «user1». В качестве DNS-сервера указать «192.168.4.200».
Настройка ARMA Стена для работы с Active Directory
Для настройки ARMA Стена необходимо в режиме конфигурирования ввести следующие команды:
set service webproxy authentication kerberos domain example.com
set service webproxy authentication kerberos domain-controller dc.example.com
set service webproxy authentication kerberos host ngfwos.example.com
где:
«example.com» – имя домена;
«dc.example.com» – FQDN контроллера домена;
«ngfwos.example.com» – FQDN текущего хоста;
set service webproxy authentication kerberos kdc dc.example.com
set service webproxy authentication kerberos keytab ngfwos.keytab
set service webproxy authentication kerberos realm EXAMPLE.COM
set service webproxy listen-address 192.168.4.1 port 2000
set service webproxy listen-address 192.168.4.1 disable-transparent
set service webproxy authentication enable
set system name-server 192.168.4.200
commit
save
где:
«dc.example.com» – FQDN сервера распространения ключей;
«ngfwos.keytab» – имя keytab-файла, расположенного в каталоге «/config/files/configuration/service/webproxy/authentication/kerberos/keytab»;
На ПК «Client» с помощью утилиты «Wireshark» выполнить захват трафика при подключении к какому-либо ресурсу сети Интернет.
В поле информации захваченного пакета «Proxy Authentication Required» будет присутствовать строка следующего вида: «Proxy-Authenticate: Negotiate\r\n».
В качестве примера настройки SSO по протоколу NTLMv2 для прокси-сервера будет использоваться схема стенда, представленная на рисунке (см. Рисунок – Схема стенда для настройки SSO).
Сервер AD предварительно настроен следующим образом:
добавлен пользователь «ngfwos»;
создан домен «example.com».
Примечание
Пользователь «ngfwos» должен обладать правами на добавления рабочих станций к домену.
Для использования SSO на настроенном прокси-сервере необходимо выполнить следующие шаги:
Настройка ARMA Стена для работы с Active Directory
Для настройки ARMA Стена необходимо в режиме конфигурирования ввести следующие команды:
set service webproxy authentication ntlm netbios-name NGFWOS
set service webproxy authentication ntlm username ngfwos
set service webproxy authentication ntlm plaintext-password examplePsw123
set service webproxy authentication ntlm realm EXAMPLE.COM
где:
«NGFWOS» – NetBIOS-имя устройства в верхнем регистре. Максимальная длина значения – «15» символов;
«ngfwos» – логин пользователя ARMA Стена в AD;
«examplePsw123» – пароль пользователя ARMA Стена в AD, приведён в качестве примера;
«EXAMPLE.COM» – realm.
Примечание
В случае использования аутентификации по протоколу NTLM на ARMA Стена, работающих в режиме отказоустойчивого кластера (см. «Отказоустойчивость»), для параметра «netbios-name» должны быть указаны отличающиеся значения на каждом ARMA Стена в составе кластера. Для обеспечения корректной работы отказоустойчивого кластера необходимо исключить синхронизацию параметра «netbios-name» (см. «Точечная синхронизация конфигурации») с помощью следующей команды:
set service config-sync section exclude service webproxy authentication ntlm netbios-name
Продолжить настройку аутентификации, введя следующие команды:
set service webproxy authentication ntlm workgroup EXAMPLE
set service webproxy authentication enable
где «workgroup» – параметр, указывающий NetBIOS-имя сервера AD, в верхнем регистре, например, «EXAMPLE». Значение должно соответствовать имени, расположенном в строке с меткой «<1C>» (см. Рисунок – Сервер AD: имена NetBIOS).
На сервере AD для отображения NetBIOS-имени сервера необходимо в командной строке ввести следующую команду:
После настройки аутентификации ввести следующие команды:
set service webproxy listen-address 192.168.4.1 port 2000
set service webproxy listen-address 192.168.4.1 disable-transparent
set system name-server 192.168.4.200
commit
save
где:
«192.168.4.1» – IP-адрес ARMA Стена;
«2000» – номер порта;
«192.168.4.200» – IP-адрес сервера AD.
Примечание
В случае появления ошибки «DNS update failed: NT_STATUS_INVALID_PARAMETER» в результате выполнения команды «commit» фактически работа сервиса не будет нарушена.
Примечание
При включении аутентификации NTLMv2 ARMA Стена не предлагает себя в качестве «Master Browser» (local master = no, preferred master = no, domain master = no, os level = 0).
Дополнительно возможно ограничить область действия службы NTLM-аутентификации, настроив её на прослушивание только определённого сетевого интерфейса. Конфигурирование осуществляется с использованием следующих команд:
Указание сетевого интерфейса, на котором веб-прокси будет ожидать входящие запросы с использованием NTLM-аутентификации:
set service webproxy authentication ntlm interface <iname>
где <iname> – имя физического или логического сетевого интерфейса, на котором разрешено принимать клиентские подключения, требующие NTLM-аутентификации.
Указание IPv4-адреса, привязанного к интерфейсу, на котором будет приниматься трафик для NTLM-аутентификации:
set service webproxy authentication ntlm interface-address <ip_address>
где <ip_address> – IPv4-адрес сетевого интерфейса.
Команда обязательна, если указан интерфейс прослушивания.
На ПК «Client» с помощью утилиты «Wireshark» выполнить захват трафика при подключении к какому-либо ресурсу сети Интернет.
В поле информации захваченного пакета «Proxy Authentication Required» будет присутствовать строка следующего вида: «Proxy-Authenticate: Negotiate\r\n».
В качестве примера настройки SSO по протоколу LDAP для прокси-сервера будет использоваться схема стенда, представленная на рисунке (см. Рисунок – Схема стенда для настройки SSO).
Сервер AD предварительно настроен следующим образом:
добавлены пользователи «ngfwos» и «user1»;
создан домен «example.com».
Для использования SSO на настроенном прокси-сервере необходимо выполнить следующие шаги:
Настройка ARMA Стена для работы с Active Directory
Для настройки ARMA Стена необходимо в режиме конфигурирования ввести следующие команды:
set service webproxy authentication children 15
set service webproxy authentication ldap base-dn CN=имя_группы,DC=example,DC=com
set service webproxy authentication ldap bind-dn CN=admin,DC=example,DC=com
set service webproxy authentication ldap filter-expression cn=%s
set service webproxy authentication ldap plaintext-password <examplePsw123>
Описание параметров:
«children» – задаёт количество дочерних процессов аутентификации, обрабатывающих LDAP-запросы.
«base-dn» – определяет базовый DN каталога LDAP, с которого начинается поиск пользователей. В примере указан корневой домен «example.com».
«bind-dn» – задаёт учётную запись с правами на чтение LDAP-каталога. В примере используется учётная запись «admin».
«filter-expression» – устанавливает фильтр поиска пользователя в каталоге. Выражение «cn=%s» означает, что поиск выполняется по полному имени, где «%s» заменяется на введённое имя пользователя.
«plaintext-password» – указывает пароль для учётной записи, заданной в параметре «bind-dn».
Примечание
При наличии пробелов в значениях параметров DN указанное значение должно быть заключено в двойные кавычки (").
set service webproxy authentication ldap server 192.168.4.200
set service webproxy authentication ldap port <portnumber>
set service webproxy authentication ldap username-attribute CN
set service webproxy authentication ldap version 3
set service webproxy listen-address 192.168.4.1 port 2000
set service webproxy listen-address 192.168.4.1 disable-transparent
set service webproxy authentication enable
set system name-server 192.168.4.200
commit
save
В качестве примера настройки подмены сертификата TLS-Bump будет использоваться схема стенда, представленная на рисунке (см. Рисунок – Схема стенда для настройки SSO).
Для настройки подмены сертификата TLS-Bump необходимо выполнить следующие действия:
Сгенерировать сертификат УЦ с помощью следующей команды:
admin@ngfwos# run generate pki ca install test
Enter private key type: [rsa, dsa, ec] (Default: rsa)
Enter private key bits: (Default: 2048)
Enter country code: (Default: GB)
Enter state: (Default: Some-State)
Enter locality: (Default: Some-City)
Enter organization name: (Default: NGFWOS)
Enter common name: (Default: ngfwos.net)
Enter how many days certificate will be valid: (Default: 1825)
Note: If you plan to use the generated key on this router, do not encrypt the private key.
Do you want to encrypt the private key with a passphrase? [y/N]
2 value(s) installed. Use "compare" to see the pending changes, and "commit" to apply.
[edit]
commit
save
В данном случае при создании сертификата все параметры были оставлены без изменений.
Просмотр сгенерированного сертификата УЦ:
admin@ngfwos# show pki
Must specify config path
ca test {
certificate MIIDpzCC..............
private {
key MIIEvAIBADAN............==
}
}
[edit]
admin@ngfwos#
Настроить функциональность TLS-Bump, введя следующие команды:
set service webproxy listen-address 192.168.4.1 tls-bump ca-certificate test
set service webproxy listen-address 192.168.4.1 tls-bump enable
commit
save
где «192.168.4.1» – IP-адрес ARMA Стена.
Cертификат УЦ сохраняется в каталог «/etc/squid/certs/test.pem».
На ПК «Client» импортировать сгенерированный сертификат в веб-браузер.
Например, в браузере Firefox необходимо открыть меню «Сертификаты», выбрать пункт «Просмотр сертификатов», а затем «Центры сертификации». После этого следует нажать кнопку «Импортировать» и выбрать файл «test.pem». В открывшемся окне необходимо установить все флажки и нажать кнопку «ОК».
В случае перевыпуска сертификата УЦ в системе ARMA Стена, необходимо удалить старый сертификат и установить новый на компьютере пользователя. Рекомендуется также очистить историю браузера на данном компьютере.
Отключение подмены сертификата TLS-Bump для определённых доменов.
Система ARMA Стена предоставляет возможность управления механизмом подмены сертификатов TLS-Bump путём создания списка исключений. Поддерживаются два метода добавления доменов в список исключений:
ручное добавление отдельных доменов;
загрузка списка доменов из внешнего файла.
Добавление отдельных доменов.
Для добавления конкретного домена в список исключений используется следующая команда в конфигурационном режиме:
set service webproxy nobump-site <domain>
где <domain> – полное доменное имя, для которого требуется отключить подмену сертификата TLS-Bump.
Добавление списка доменов.
Для массового добавления доменов используется команда:
set service webproxy nobump-sites-file sites.txt
где «sites.txt» – имя файла, расположенного в каталоге «/config/files/configuration/service/webproxy/nobump-sites-file/», содержащего список доменных имён, для которых отключается подмена сертификата TLS-Bump. В случае использования файла, расположенного в другом каталоге, необходимо указать полный путь к нему. Пример: «set service webproxy nobump-sites-file /config/sites.txt».
Пример структуры файла с доменами:
aliexpress.ru
youtube.com
Допускается одновременное использование обоих методов добавления исключений. При использовании обоих методов система формирует объединённый список исключений.
На ПК «Client» запустить веб-браузер и открыть любой сайт, использующий протокол HTTPS. В адресной строке нажать по иконке в форме замка и выбрать опцию защищённого соединения. Веб-браузер преобразует это соединение в защищённое.
Для настройки отправки расшифрованного HTTP-трафика на ICAP-сервер необходимо выполнить следующие команды:
set service webproxy icap-client enable
set service webproxy icap-client remote-address <address>
set service webproxy icap-client remote-port <port>
set service webproxy icap-client request location <service_name>
set service webproxy icap-client response location <service_name>
где:
<address> – IP-адрес ICAP-сервера в формате <x.x.x.x> для IPv4 или <h:h:h:h:h:h:h:h> для IPv6;
<port> – порт ICAP-сервера. Возможно указать значение в диапазоне от «1» до «65535»;
<service_name> – имя ICAP-сервер.
Дополнительные настройки:
в случае возникновения ошибки при отправке на ICAP-сервер, пропускать трафик дальше:
set service webproxy icap-client request bypass
установить поле в заголовке HTTP с отправкой имени пользователя прокси:
set service webproxy icap-client username-header <header>