Прокси-сервер

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

Основные настройки прокси-сервера

  1. Для указания порта по умолчанию, на котором прокси-сервер будет прослушивать запросы, необходимо ввести следующую команду:

set service webproxy default-port <portnumber>

где <portnumber> – номер порта. Возможно указание значения в диапазоне от «1025» до «65535». По умолчанию используется порт «3128».

  1. Задать IPv4-адрес сетевого интерфейса, на котором прокси-сервер будет прослушивать запросы пользователей:

set service webproxy listen-address <x.x.x.x>

где <x.x.x.x> – IPv4-адрес. В целях обеспечения безопасности адрес прослушивания должен использоваться только в локальных/защищенных сетях.

  1. Указать порт, на котором прокси-сервер будет прослушивать запросы:

set service webproxy listen-address <x.x.x.x> port <portnumber>

где <portnumber> – номер порта. Возможно указание значения в диапазоне от «1025» до «65535». По умолчанию используется значение «3128».

В режиме прозрачного прокси-сервер данная команда определяет порт прослушивания для указанного IPv4-адреса прокси, который будет использоваться для HTTP-трафика. В случае, если прокси-сервер работает в непрозрачном режиме, эта команда указывает порт, на котором будет прослушиваться весь трафик — как HTTP, так и HTTPS — для указанного IPv4-адреса прокси.

  1. Установить отличный от значения по умолчанию номер порта для указанного IPv4-адреса прокси, используемого для HTTPS трафика в прозрачном режиме работы прокси-сервер:

set service webproxy listen-address <x.x.x.x> https-port <portnumber>

где <portnumber> – номер TCP-порта, на котором прокси-сервер будет ожидать соединения. Возможно указание значения в диапазоне от «1025» до «65535». По умолчанию используется значение «3129».

Данная команда предназначена для перенастройки прокси-сервер на ожидание соединений по другому порту, отличному от используемого по умолчанию для HTTPS трафика. Перенастройка выполняется только для сетевого интерфейса, связанного с указанным IP-адресом.

  1. Отключить прозрачный режим работы прокси-сервер на прослушиваемом адресе:

set service webproxy listen-address <x.x.x.x> disable-transparent

Данная команда предназначена для отключения прозрачного режима работы прокси-сервер для запросов, поступающих на сетевой интерфейс системы ARMA Стена, связанный с указанным IP-адресом. В случае отключения прозрачного прокси-сервера на клиентских машинах необходимо указать настройки прокси-сервера.

  1. Запретить доступ к указанному домену:

set service webproxy domain-block <domain>

где <domain> – домен, доступ к которому нужно закрыть. Например, указание «facebook.com» в качестве аргумента закроет весь доступ к домену facebook.com и его поддоменам, а указание «.cn» закроет доступ ко всем сайтам доменной зоны Китая.

  1. Запретить доступ к веб-содержимому указанного типа:

set service webproxy reply-block-mime <тип_mime>

где <тип_mime> – тип mime, доступ к которому будет закрыт. Типы mime задаются в виде «тип/подтип». К примеру, тип mime видео в формате Quicktime выглядит как «video/quicktime», тип mime для файлов в формате PDF - как «application/pdf», а тип mime для файлов .wav - как «audio/wav».

Поддерживается блокирование следующих типов mime:

  • application/andrew-inset;

  • application/mac-binhex40;

  • application/mac-compactpro;

  • application/macbinary;

  • application/macwriteii;

  • application/msword;

  • application/octet-stream;

  • application/oda;

  • application/pdf;

  • application/pict;

  • application/postscript;

  • application/smil;

  • application/vnd.lotus-1-2-3;

  • application/vnd.mif;

  • application/vnd.ms-excel;

  • application/vnd.ms-powerpoint;

  • application/vnd.wap.wbxml;

  • application/vnd.wap.wmlc;

  • application/vnd.wap.wmlscript;

  • application/vnd.wap.wmlscriptc;

  • application/x-arj-compressed;

  • application/x-bcpio;

  • application/x-cdlink;

  • application/x-chess-pgn;

  • application/x-cpio;

  • application/x-csh;

  • application/x-deflate;

  • application/x-director;

  • application/x-dvi;

  • application/x-futuresplash;

  • application/x-gtar;

  • application/x-hdf;

  • application/x-javascript;

  • application/x-koan;

  • application/x-latex;

  • application/x-lha-compressed;

  • application/x-netcdf;

  • application/x-rpm;

  • application/x-sh;

  • application/x-shar;

  • application/x-shockwave-flash;

  • application/x-stuffit;

  • application/x-sv4cpio;

  • application/x-sv4crc;

  • application/x-tar;

  • application/x-tcl;

  • application/x-tex;

  • application/x-texinfo;

  • application/x-troff;

  • application/x-troff-man;

  • application/x-troff-me;

  • application/x-troff-ms;

  • application/x-ustar;

  • application/x-wais-source;

  • application/x-xpinstall;

  • application/xhtml;

  • application/zip;

  • audio/basic;

  • audio/midi;

  • audio/mpeg;

  • audio/x-aiff;

  • audio/x-pn-realaudio;

  • audio/x-realaudio;

  • audio/x-wav;

  • chemical/x-pdb;

  • chemical/x-xyz;

  • image/bmp;

  • image/gif;

  • image/ief;

  • image/jpeg;

  • image/png;

  • image/tiff;

  • image/vnd.djvu;

  • image/vnd.wap.wbmp;

  • image/x-cmu-raster;

  • image/x-portable-anymap;

  • image/x-portable-bitmap;

  • image/x-portable-graymap;

  • image/x-portable-pixmap;

  • image/x-rgb;

  • image/x-xbitmap;

  • image/x-xpixmap;

  • image/x-xwindowdump;

  • model/iges;

  • model/mesh;

  • model/vrml;

  • text/css;

  • text/html;

  • text/plain;

  • text/richtext;

  • text/rtf;

  • text/sgml;

  • text/tab-separated-values;

  • text/x-setext;

  • text/xml;

  • video/mpeg;

  • video/quicktime;

  • video/vnd.mpegurl;

  • video/x-msvideo;

  • video/x-sgi-movie;

  • www/mime;

  • x-conference/x-cooltalk.

  1. Включить аутентификации пользователей в прокси:

set service webproxy authentication enable
  1. Указать используемый метод аутентификации пользователей прокси:

set service webproxy authentication <method>

где <method> – метод аутентификации.

ARMA Стена поддерживает следующие методы аутентификации:

  • «kerberos» - аутентификация на основе протокола Kerberos;

  • «ldap» - аутентификация на основе протокола LDAP;

  • «ntlm» - аутентификация на основе протокола NTLM.

  1. Указать максимальное количество запускаемых процессов аутентификации:

set service webproxy authentication children <number>

где <number> – количество процессов аутентификации. По умолчанию используется значение «5».

  1. Указать временной интервал между запросами учётных данных пользователя:

set service webproxy authentication credentials-ttl <number>

где <number> – интервал, исчисляемый в минутах. По умолчанию используется значение «60».

  1. Указать текст, который должен быть сообщён клиенту в схеме аутентификации:

set service webproxy authentication realm "ARMA proxy auth"

где «ARMA proxy auth» – текст, который будет отображаться пользователю при запросе имени пользователя и пароля.

  1. Выключить кэширование данных, полученных с указанного домена в ответ на запросы пользователей:

set service webproxy domain-noncache <domain>

где <domain> – имя домена, данные с которого в кэш помещаться не будут. Если домен в команде не указан, то в кэш помещается всё содержимое, не противоречащее другим ограничениям.

  1. Указать доменное имя, которое будет присоединяться к каждому URL, доменная часть которого не содержит точек, перед его дальнейшей обработкой:

set service webproxy append-domain <domain>

где <domain> – имя домена, которое будет присоединяться к доменной части URL. Например, если в рассматриваемой команде указано доменное имя «infowatch.ru», а запрос пользователя обращается по URL «www/abc.html», то в результате присоединения в дальнейшую обработку пойдёт URL «www.infowatch.ru/abc.html».

  1. Указать размера кэша - хранилища для временного хранения содержимого:

set service webproxy cache-size <num>

где <num> – объём дискового пространства, указываемый в мегабайтах. Возможно указать значение в диапазоне от «0» до «4294967295». По умолчанию используется значение «0», т.е. кэширование не производится.

  1. Ограничение входящей скорости передачи данных для определённых IP-адресов:

    16.1 Команда создания списка контроля доступа:

    set service webproxy limit <name>
    

    где <name> - имя списка контроля доступа.

    16.2 Команда установки максимальной входящей скорости передачи данных для указанного списка контроля доступа:

    set service webproxy limit <name> speed <1-10000000>
    

    где <1-10000000> - значение максимальной скорости передачи данных в Кбит/сек.

    16.3 Команда добавления IP-адреса в указанный список контроля доступа:

    set service webproxy limit <name> ip-address <ip>
    

    где <ip> - IP-адрес в формате <x.x.x.x> для IPv4 или <h:h:h:h:h:h:h:h> для IPv6.

    Например, необходимо ограничить входящую скорость до 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
    
  2. Для просмотра параметров конфигурации прокси-сервер необходимо в режиме конфигурации ввести следующую команду:

show service webproxy

Пример просмотра параметров конфигурации прокси-сервер:

admin@ngfwos# show service webproxy
 icap-client {
     enable
     remote-address 127.0.0.1
     remote-port 1344
     request {
         location reqmod
     }
     response {
         location respmod
     }
 }
 listen-address 192.168.38.1 {
     https-port 3129
     tls-bump {
         ca-certificate ARMA
         enable
     }
 }
[edit]
admin@ngfwos#

URL-фильтрация

Фильтрация запросов осуществляется посредником ARMA Стена на основе URL-фильтров. По умолчанию фильтрация выключена, и все запросы пропускаются беспрепятственно.

Существуют два вида URL-фильтров: глобальные фильтры и правила фильтрации для групп пользователей. Сначала осуществляется проверка соответствия правилам до первого совпадения или попадания в диапазон. Если правила применить невозможно, то выполняется проверка соответствия глобальным фильтрам до первого совпадения или попадания в диапазон. Если и глобальные фильтры не применяются, то прокси выполняет действие по умолчанию, заданное командой.

Порядок перебора правил определяется их номерами - от «1» до «1024», по возрастанию. Порядок перебора фильтров (как внутри правил, так и глобальных) определяется их приоритетом - фильтр с высшим приоритетом сверяется первым. Ниже приведён перечень фильтров в соответствии с их приоритетами (1 — высший):

  1. «local-ok» - разрешает доступ к указанному IP-адресу;

  2. «local-block» - запрещает доступ к указанному IP-адресу;

  3. «allow-ipaddr-url» - разрешает запросы, в URL которых вместо доменного имени сайта указан IP-адрес;

  4. «block-category» - запрещает доступ по адресам из указанной категории;

  5. «allow-category» - разрешает доступ по адресам из указанной категории;

  6. «local-block-keyword» - блокирует запросы к содержимому, URL которого содержит указанный набор символов;

  7. «local-block-url» - блокирует доступ к указанному URL;

  8. «local-ok-url» - разрешает доступ к указанному URL;

  9. «default-action» - задаёт действие, которое будет применяться ко всем запросам, не попавшим под имеющиеся фильтры.

Правила предназначены для сужения области применения фильтров за счёт наложения дополнительных условий. В качестве этих условий выступают промежутки времени и информация об источнике запроса. В этом случае фильтры применяются только тогда, когда соблюдаются все указанные в правиле дополнительные условия (например, текущее время попадает в указанный в условии диапазон).

Примечание

Поскольку SquidGuard является редиректом, который работает на уровне HTTP-запросов, а не IP-пакетов, он не способен автоматически сопоставлять IP-адреса с доменными именами из HTTPS-запросов и наоборот. Таким образом, прокси-сервер не сможет ограничить доступ к ресурсу, если блокировка осуществляется исключительно по его IP-адресу. Для полноценной блокировки доступа необходимо также настроить запрет на URL-адрес ресурса.

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

Настройки глобальных URL-фильтров

  1. Разрешить доступ к адресам из указанной категории:

set service webproxy url-filtering squidguard allow-category <категория>

где <категория> – имя категории. Возможно указать следующие категории:

  • ads;

  • adult;

  • aggressive;

  • agressif;

  • arjel;

  • associations_religieuses;

  • astrology;

  • audio-video;

  • bank;

  • bitcoin;

  • blog;

  • celebrity;

  • chat;

  • child;

  • cleaning;

  • cooking;

  • cryptojacking;

  • dangerous_material;

  • dating;

  • ddos;

  • dialer;

  • doh;

  • download;

  • drogue;

  • drugs;

  • dynamic-dns;

  • educational_games;

  • examen_pix;

  • exceptions_liste_bu;

  • fakenews;

  • filehosting;

  • financial;

  • forums;

  • gambling;

  • games;

  • hacking;

  • jobsearch;

  • lingerie;

  • liste_blanche;

  • liste_bu;

  • local-block-default;

  • local-block-url-default;

  • mail;

  • malware;

  • manga;

  • marketingware;

  • mixed_adult;

  • mobile-phone;

  • phishing;

  • porn;

  • press;

  • proxy;

  • publicite;

  • radio;

  • reaffected;

  • redirector;

  • remote-control;

  • residential-proxies;

  • sect;

  • sexual_education;

  • shopping;

  • shortener;

  • social_networks;

  • special;

  • sports;

  • stalkerware;

  • strict_redirector;

  • strong_redirector;

  • translation;

  • tricheur;

  • tricheur_pix;

  • update;

  • violence;

  • vpn;

  • warez;

  • webhosting;

  • webmail.

  1. Запретить доступ к адресам из указанной категории:

set service webproxy url-filtering squidguard block-category <категория>
  1. Разрешить запросы, в URL которых указан IP-адрес, а не доменное имя:

set service webproxy url-filtering squidguard allow-ipaddr-url
  1. Задать действие, которое будет применяться ко всем запросам, не попавшим под имеющиеся фильтры:

set service webproxy url-filtering squidguard default-action <действие>

где <действие> – действие над запросами по умолчанию. Допустимые значения: «allow» - пропустить, «block» - блокировать. По умолчанию используется значение «allow».

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

set service webproxy url-filtering squidguard enable-safe-search

В настоящее время поддерживаются следующие поисковые системы: Google, Yahoo и Bing. По умолчанию режим безопасного поиска выключен.

  1. Запретить доступ к указанному IP-адресу:

set service webproxy url-filtering squidguard local-block <x.x.x.x>

где <x.x.x.x> – IP-адрес, доступ к которому надо запретить.

  1. Блокировка запросов к содержимому, URL которых содержит указанный в качестве ключа набор символов:

set service webproxy url-filtering squidguard local-block-keyword <ключ>

где <ключ> – простая строка символов или регулярное выражение, совпадение которых с чем-либо в URL вызовет блокировку содержащего URL-запроса.

  1. Блокировка запросов к содержимому, URL которых совпадает с указанным:

set service webproxy url-filtering squidguard local-block-url <адрес>

где <адрес> – URL, доступ к которому требуется закрыть. Вводить значение необходимо без «http://».

  1. Разрешить доступ к указанному IP-адресу:

set service webproxy url-filtering squidguard local-ok <x.x.x.x>

где <x.x.x.x> – IP-адрес, доступ к которому необходимо разрешить.

  1. Разрешить доступ к указанному URL:

set service webproxy url-filtering squidguard local-ok-url <адрес>

где <адрес> – URL, доступ к которому требуется разрешить. Вводить значение необходимо без «http://».

  1. Включить журналирование по URL:

set service webproxy url-filtering squidguard log [all | <категория>]

где:

  • «all» - включить журналирование всех URL-запросов;

  • <категория> – название категории.

  1. При обращении к адресу из «чёрного» списка возвращать указанный URL вместо запрошенного:

set service webproxy url-filtering squidguard redirect-url <адрес>

где <адрес> - URL, который будет возвращён в ответ на запросы по URL из «чёрного» списка. По умолчанию используется значение «block.ngfwos.net».

Примечание

В случае если по умолчанию установлен запрет на все запросы, необходимо внести <адрес> в список исключений.

  1. Отключить фильтрацию веб-содержимого без потери/стирания конфигурации:

set service webproxy url-filtering disable

Настройки групп пользователей URL-фильтрации

При выполнении некоторых задач может возникнуть необходимость обрабатывать запросы от одних пользователей иначе, чем от других. Для этого существует возможность применения команды «source-group», которая позволяет группировать пользователей по их IP-адресам или адресам сетей, к которым они подключены.

Команды настройки групп пользователей:

  1. Создать группу пользователей:

set service webproxy url-filtering squidguard source-group <имя_группы>

где <имя_группы> - название группы.

Данная команда позволяет создать пустую группу пользователей (контейнер), в которую впоследствии возможно будет добавить адреса IP или подсетей систем пользователей.

  1. Добавить указанный адрес или подсеть 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>.

  1. Задать текстовое описание указанной группы:

set service webproxy url-filtering squidguard source-group <имя_группы> description <описание>

где <описание> - краткое описание группы. Если описание содержит пробелы, то его необходимо заключить в двойные кавычки.

  1. Добавить пользователей, относящиеся к указанному домену, в члены группы:

set service webproxy url-filtering squidguard source-group <имя_группы> domain <домен>

где <домен> - название домена, который нужно включить в члены группы (например, infowatch.ru).

IP-адреса систем или подсетей пользователей должны успешно разрешаться по обратной зоне DNS в указанное доменное имя.

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

set service webproxy url-filtering squidguard source-group <имя_группы> user <имя_пользователя>

где <имя_пользователя> - имя аутентифицированного пользователя, которого нужно включить в члены группы.

  1. Объявить промежуток времени, который будет использоваться в правилах фильтрации:

set service webproxy url-filtering squidguard time-period <имя_промежутка>

где <имя_промежутка> - название промежутка.

6.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-часовое, формат диапазона «чч:мм-чч:мм». Можно указать несколько диапазонов (в пределах суточного времени) в формате «чч:мм-чч:мм, чч:мм-чч:мм», например, «09:00-14:00, 18:00-24:00». Если не указан временной промежуток, то правило действует весь день «00:00-24:00».

6.2. Задать текстовое описание указанного промежутка времени:

set service webproxy url-filtering squidguard time-period <имя_периода> description <описание>
  1. Создать правило фильтрации для группы пользователей:

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 <имя_группы>

Squidguard может осуществлять поиск в LDAP, используя заданные URL-адреса, если имя пользователя или IP-адрес не были найдены в существующем списке пользователей. Для этого применяются следующие команды:

  1. Указать 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.

  1. Указать 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.

Кэширующий прокси-сервер

В качестве примера настройки кэширующего прокси-сервера будет использоваться схема стенда, представленная на рисунке (см. Рисунок – Схема стенда для настройки прокси-сервера).

../../../_images/ngfw.rp.proxy_3.1.png

Рисунок – Схема стенда для настройки прокси-сервера

Примечание

В случае необходимости настройки прокси-сервера на ARMA Стена, входящих в состав отказоустойчивого кластера, следует учитывать особенности настройки, указанные в п. Настройка прокси-сервера ActiveSync в составе кластера настоящего руководства.

Предварительно система ARMA Стена настроена следующим образом:

  1. Настроена переадресации 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
    
  2. Настроены правила 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».

  3. Включена отправка ответов на локальные ICMP-запросы:

    set firewall global-options all-ping enable
    commit
    save
    
  4. В системе ARMA Стена по умолчанию транзитный трафик блокируется. Для разрешения такого трафика необходимо создать соответствующие правила в МЭ или изменить действие по умолчанию для транзитного трафика с «drop» на «accept» с помощью команды «set firewall <ipv4 | ipv6 | bridge> forward filter default-action accept».

На ПК «Client» после перезапуска сетевого интерфейса обеспечен доступ к сети Интернет.

Настройка прокси-сервера

Для настройки прокси-сервера необходимо ввести следующие команды:

set service webproxy listen-address 192.168.4.1 port 3128
set service webproxy listen-address 192.168.4.1 disable-transparent
commit
save

Обновление черного списка

Для обновления черного списка необходимо ввести следующую команду:

admin@ngfwos:~$ update webproxy blacklists

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 22.0M  100 22.0M    0     0  3622k      0  0:00:06  0:00:06 --:--:-- 4505k
Uncompressing blacklist...
Processing file and database /opt/vyatta/etc/config/url-filtering/squidguard/db/warez/domains
    [==================================================] 100 % done
Processing file and database /opt/vyatta/etc/config/url-filtering/squidguard/db/warez/urls
    [==================================================] 100 % done
...
Processing file and database /opt/vyatta/etc/config/url-filtering/squidguard/db/chat/urls
    [==================================================] 100 % done
admin@ngfwos:~$

После завершения процесса обновления необходимо перезапустить службу прокси:

admin@ngfwos:~$ restart webproxy

Настройка ПК «Client»

На ПК «Client» необходимо указать вручную следующие настройки прокси:

  • «HTTP прокси» – «192.168.4.1»;

  • «порт» – «3128»;

  • «HTTPS прокси» – «192.168.4.1»;

  • «порт» – «3128»;

  • «Не использовать прокси для» – «localhost 127.0.0.0/8; ::1».

Настройка политик блокировки

Для настройки политик блокировки какого-либо ресурса необходимо ввести следующую команду:

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

Просмотр настроек правила «30» для NAT:

admin@ngfwos# show nat source source rule 30
 outbound-interface {
     name eth0
 }
 source {
     address 192.168.4.0/24
 }
 translation {
     address masquerade
 }
[edit]
admin@ngfwos#

Настройка системного DNS-сервера:

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-адрес.

Просмотр настроек прокси-сервера:

admin@ngfwos# show service webproxy
 authentication {
     ldap {
         base-dn ru
     }
 }
 listen-address 192.168.4.1 {
     https-port 3129
     tls-bump {
         ca-certificate test
         enable
     }
 }
 url-filtering {
     squidguard {
         allow-ipaddr-url
         local-block-url ya.ru
     }
 }
[edit]
admin@ngfwos#

Настройка ПК «Client»:

Прозрачный режим не предполагает какой-либо дополнительной настройки ПО пользователей. Однако для корректной работы системы необходимо, чтобы на клиентских устройствах в качестве основного шлюза и 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»;

  • ПК «Client» введён в домен «example.com»;

  • FQDN ARMA Стена – «ngfwos.example.com».

../../../_images/ngfw.rp.proxy_5.1.png

Рисунок – Схема стенда для настройки SSO

Аутентификация по протоколу Kerberos

В качестве примера настройки SSO по протоколу Kerberos для прокси-сервера будет использоваться схема стенда, представленная на рисунке (см. Рисунок – Схема стенда для настройки SSO).

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

  • добавлены пользователи «ngfwos» и «user1»;

  • создан домен «example.com»;

  • сгенерирован файл «ngfwos.keytab» с помощью ввода в Powershell следующей команды:

    ktpass -princ HTTP/ngfwos.example.com@EXAMPLE.COM -mapuser ngfwos@EXAMPLE.COM -pass examplePsw123 -crypto RC4-HMAC-NT -ptype KRB5_NT_PRINCIPAL -out C:\ngfwos.keytab
    

Полученный файл «ngfwos.keytab» перенесён на ARMA Стена и расположен по пути «/home/admin/ngfwos.keytab».

Для использования SSO на настроенном прокси-сервере необходимо выполнить следующие шаги:

  1. Добавить DNS-записи на DNS-сервере.

  2. Настроить ARMA Стена для работы с Active Directory.

  3. Настроить прокси на ПК «Client».

Добавление DNS-записей

На DNS-сервере необходимо создать записи:

  • Запись 1:

    • «Имя» – «ngfwos»;

    • «Полное доменное имя» – «example.com.»;

    • «IP-адрес» – «192.168.4.1»;

  • Запись 2:

    • «Имя» – «user1»;

    • «Полное доменное имя» – «example.com.»;

    • «IP-адрес» – «192.168.4.100»;

  • Запись 3:

    • «Имя» – «dc»;

    • «Полное доменное имя» – «example.com.»;

    • «IP-адрес» – «192.168.4.200».

Записи создаются в соответствии с руководством пользователя используемого DNS-сервера.

На ПК «Client» необходимо войти в домен «example.com» под пользователем «user1». В качестве DNS-сервера указать «192.168.4.200».

Настройка ARMA Стена для работы с Active Directory

Для настройки ARMA Стена необходимо в режиме конфигурирования ввести следующие команды:

set service webproxy authentication kerberos domain example.com

где «example.com» – имя домена;

set service webproxy authentication kerberos domain-controller dc.example.com

где «dc.example.com» – FQDN контроллера домена;

set service webproxy authentication kerberos host ngfwos.example.com

где «ngfwos.example.com» – FQDN текущего хоста;

set service webproxy authentication kerberos kdc dc.example.com

где «dc.example.com» – FQDN сервера распространения ключей;

set service webproxy authentication kerberos keytab /home/admin/ngfwos.keytab

где «/home/admin/ngfwos.keytab» – путь к файлу «ngfwos.keytab»;

set service webproxy authentication kerberos realm EXAMPLE.COM

где «EXAMPLE.COM» – realm;

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

где:

  • «192.168.4.1» – IP-адрес ARMA Стена;

  • «2000» – номер порта;

set system name-server 192.168.4.200

где «192.168.4.200» – IP-адрес сервера AD.

Зафиксировать изменения с помощью ввода команд «commit» и «save».

Настройка прокси на ПК «Client»

На ПК «Client» указать настройки прокси для следующих параметров:

  • «HTTP прокси» – «ngfwos.example.com»;

  • «Порт» – «2000»;

  • «Также использовать этот прокси для HTTPS» – флажок установлен.

Проверка

На ПК «Client» с помощью утилиты «Wireshark» выполнить захват трафика при подключении к какому-либо ресурсу сети Интернет.

В поле информации захваченного пакета «Proxy Authentication Required» будет присутствовать строка следующего вида: «Proxy-Authenticate: Negotiate\r\n».

Аутентификация пользователей по протоколу NTLMv2

В качестве примера настройки SSO по протоколу NTLMv2 для прокси-сервера будет использоваться схема стенда, представленная на рисунке (см. Рисунок – Схема стенда для настройки SSO).

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

  • добавлены пользователи «ngfwos» и «user1»;

  • создан домен «example.com».

Для использования SSO на настроенном прокси-сервере необходимо выполнить следующие шаги:

  1. Добавить DNS-записи на DNS-сервере (см. Добавление DNS-записей).

  2. Настроить ARMA Стена для работы с Active Directory.

  3. Настроить прокси на ПК «Client» (см. Настройка прокси на ПК «Client»).

Настройка ARMA Стена для работы с Active Directory

Для настройки ARMA Стена необходимо в режиме конфигурирования ввести следующие команды:

set service webproxy authentication ntlm netbios-name NGFWOS

где «NGFWOS» – NetBIOS-имя устройства в верхнем регистре;

set service webproxy authentication ntlm password examplePsw123

где «examplePsw123» – пароль пользователя ARMA Стена в AD, приведён в качестве примера;

set service webproxy authentication ntlm username user1

где «user1» – логин пользователя ARMA Стена в AD;

set service webproxy authentication ntlm realm EXAMPLE.COM

где «EXAMPLE.COM» – realm;

set service webproxy authentication ntlm workgroup EXAMPLE

где «EXAMPLE» – NetBIOS-имя домена AD, в верхнем регистре;

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

где:

  • «192.168.4.1» – IP-адрес ARMA Стена;

  • «2000» – номер порта;

set system name-server 192.168.4.200

где «192.168.4.200» – IP-адрес сервера AD.

Зафиксировать изменения с помощью ввода команд «commit» и «save».

Проверка

На ПК «Client» с помощью утилиты «Wireshark» выполнить захват трафика при подключении к какому-либо ресурсу сети Интернет.

В поле информации захваченного пакета «Proxy Authentication Required» будет присутствовать строка следующего вида: «Proxy-Authenticate: Negotiate\r\n».

Аутентификация пользователей LDAP

В качестве примера настройки SSO по протоколу NTLMv2 для прокси-сервера будет использоваться схема стенда, представленная на рисунке (см. Рисунок – Схема стенда для настройки SSO).

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

  • добавлены пользователи «ngfwos» и «user1»;

  • создан домен «example.com».

Для использования SSO на настроенном прокси-сервере необходимо выполнить следующие шаги:

  1. Добавить DNS-записи на DNS-сервере (см. Добавление DNS-записей).

  2. Настроить ARMA Стена для работы с Active Directory.

  3. Настроить прокси на ПК «Client» (см. Настройка прокси на ПК «Client»).

Настройка ARMA Стена для работы с Active Directory

Для настройки ARMA Стена необходимо в режиме конфигурирования ввести следующие команды:

set service webproxy authentication children 15
set service webproxy authentication ldap base-dn DC=example,DC=com
set service webproxy authentication ldap bind-dn CN=admin,CN=Users,DC=example,DC=com
set service webproxy authentication ldap filter-expression cn=%s
set service webproxy authentication ldap password <examplePsw123>

где <examplePsw123> – пароль УЗ;

set service webproxy authentication ldap server 192.168.4.200

где «192.168.4.200» – IP-адрес сервера AD.

set service webproxy authentication ldap port <portnumber>

где <portnumber> – порт. По умолчанию используется порт «389»;

set service webproxy authentication ldap username-attribute CN

где «CN» – имя атрибута DN;

set service webproxy authentication ldap version 3

где «3» – версия протокола LDAP;

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

где:

  • «192.168.4.1» – IP-адрес ARMA Стена;

  • «2000» – номер порта;

set system name-server 192.168.4.200

где «192.168.4.200» – IP-адрес сервера AD.

Зафиксировать изменения с помощью ввода команд «commit» и «save».

Проверка

Для проверки на ПК «Client» необходимо в веб-браузере инициировать подключение к какому-либо сайту и ввести учётные данные пользователя.

Настройки подмены сертификата TLS-Bump

В качестве примера настройки подмены сертификата TLS-Bump будет использоваться схема стенда, представленная на рисунке (см. Рисунок – Схема стенда для настройки SSO).

Предварительно настроена аутентификация пользователей по протоколу NTLM (см. Аутентификация пользователей по протоколу NTLMv2).

Для настройки подмены сертификата TLS-Bump необходимо выполнить следующие действия:

  1. Сгенерировать сертификат УЦ с помощью следующей команды:

    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#
    
  2. Настроить функционал 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.

  3. На ПК «Client» импортировать сгенерированный сертификат в веб-браузер.

    Например, в браузере Firefox необходимо открыть меню «Сертификаты», выбрать пункт «Просмотр сертификатов», а затем «Центры сертификации». После этого следует нажать кнопку «Импортировать» и выбрать файл test.pem. В открывшемся окне необходимо установить все флажки и нажать кнопку «ОК».

Примечание

В случае перевыпуска сертификата УЦ в системе ARMA Стена, необходимо удалить старый сертификат и установить новый на компьютере пользователя. Рекомендуется также очистить историю браузера на данном компьютере.

Проверка

На ПК «Client» запустить веб-браузер и открыть любой сайт, использующий протокол HTTPS. В адресной строке нажать по иконке в форме замка и выбрать опцию защищенного соединения. Веб-браузер преобразует это соединение в защищённое.

Группы пользователей

Для управления группами необходимо наличие конфигурации SSO по протоколу «Kerberos» или «NTLM».

Для запрета доступа пользователям какой-либо группы AD необходимо ввести следующую команду:

set service webproxy user-group <groupname> access <groupname>

где <groupname> – имя группы пользователей. Приведено в качестве примера.

Для блокирования доступа пользователей группы к определённым доменам необходимо ввести следующие команды:

set service webproxy user-group <groupname> access permit
set service webproxy user-group <groupname> block-domain .youtube.com

где «.youtube.com» – доменное имя.

Параметры ICAP-клиента

Для настройки отправки расшифрованного 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>
    

где <header> - заголовок имени пользователя.

Прокси-сервер ActiveSync

Команды для настройки хранилища сертификатов:

set pki certificate <cert_name> certificate <bas64 data>
set pki certificate <cert_name> private key <bas64 data>
set pki ca <ca_cert_name> certificate <bas64 data>

где:

  • <cert_name> – имя сертификата;

  • <bas64 data> – сертификат в формате PEM;

  • <ca_cert_name> – название узла конфигурации определяемого удостоверяющего центра.

Команды для настройки прокси-сервера Active Sync:

set service active-sync-proxy service <name> backend-address <hostname>
set service active-sync-proxy service <name> port <port>
set service active-sync-proxy service <name> certificate <cert_name>
set service active-sync-proxy service <name> ca-certificate <ca_cert_name>
set service active-sync-proxy kerberos domain <domain.xx>
set service active-sync-proxy kerberos domain-controller <domain-controller>
set service active-sync-proxy kerberos host <proxy-test>
set service active-sync-proxy kerberos kdc <x.x.x.x>
set service active-sync-proxy kerberos keytab </home/ngfwos/proxy-test.keytab>
set service active-sync-proxy kerberos realm <TEST.RU>

где:

  • <name> – имя прокси-сервер ActiveSync;

  • <hostname> – доменное имя или IPv4-адрес почтового сервера;

  • <port> – порт почтового сервера. Возможно указать значение в диапазоне от «1» до «65535». По умолчанию используется значение «443»;

  • <domain.xx> – имя домена, в котором находится ARMA Стена;

  • <domain-controller> – доменное имя или IPv4-адрес контроллера домена;

  • <proxy-test> – имя хоста ARMA Стена в Active Directory;

  • <x.x.x.x> – IP-адрес или доменное имя центра распределения ключей. Обычно IP-адрес совпадает с адресом контроллера домена;

  • </home/ngfwos/proxy-test.keytab> – путь к *.keytab файлу на устройстве, сгенерированного для текущего хоста. Приведен в качестве примера;

  • <TEST.RU> – realm в Active Directory.

Примечание

Для работы сервиса необходимо загрузить файл «*.keytab» на устройство.