Гостевой портал
 
Управление гостевыми пользователями

NGFW позволяет создавать списки гостевых пользователей. Данная возможность может быть полезна для гостиниц, публичных Wi-Fi, сетей интернет, где необходимо идентифицировать пользователей и предоставить им доступ на ограниченное время.

Гостевые пользователи могут быть созданы заранее администратором системы или пользователям может быть предоставлена возможность самостоятельной регистрации в системе с подтверждением через SMS или email.

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

Наименование

Описание

Шаг 1. Создать администратора гостевых пользователей (опционально).

  • В разделе Администраторы нажать кнопку Добавить и создать профиль администратора, разрешающий Гостевой портал для чтения и записи в закладке Разрешения для веб-консоли. Данный профиль дает доступ в консоль управления временными пользователями.

  • Создать учетную запись администратора и назначить ей созданную роль.

Более подробно о создании администраторов NGFW смотрите соответствующий раздел руководства.

Шаг 2. Создать группу, в которую будут помещены гостевые пользователи. Группа необходима для удобства управления политиками доступа гостевых пользователей.

В консоли NGFW в разделе Группы нажать на кнопку Добавить и создать группу, отметив поле Группа для гостевых пользователей. Более подробно о создании групп пользователей смотрите соответствующий раздел руководства.

Шаг 3. Подключиться к консоли управления Гостевого портала.

В браузере перейти на адрес https://IP_NGFW:8001/ta Для авторизации необходимо использовать логин и пароль администратора устройства или администратора гостевых пользователей, созданного на шаге 1.

Шаг 4. Создать список пользователей.

В консоли нажать на кнопку Добавить и заполнить поля:

  • Количество пользователей.

  • Комментарий.

  • Дата и время окончания — время, когда учетная запись гостевого пользователя будет отключена.

  • Длина пароля — определяет длину пароля для создаваемого пользователя.

  • Сложность пароля — определяет сложность пароля для создаваемого пользователя. Возможны варианты:

  • Цифры.

  • Буквы + цифры.

  • Буквы + цифры + спецсимволы.

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

  • Группа — созданная на шаге 2 группа, в которую будут помещены создаваемые пользователи.

Список созданных пользователей можно посмотреть в разделе Пользователи консоли управления временными пользователями.

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

Наименование

Описание

Шаг 1. Создать профиль оповещения SMPP (для подтверждения через SMS) или SMTP (для подтверждения через email).

В разделе Библиотеки ➜ Профили оповещений нажать кнопку Добавить и создать профиль оповещения SMPP или SMTP. Более подробно о создании профилей оповещения смотрите раздел руководства Профили оповещений.

Шаг 2. Создать группу, в которую будут помещены гостевые пользователи. Группа необходима для удобства управления политиками доступа временных пользователей.

В консоли NGFW в разделе Группы нажать на кнопку Добавить и создать группу, отметив поле Группа для гостевых пользователей. Более подробно о создании групп пользователей смотрите соответствующий раздел руководства.

Шаг 3. Создать профиль Captive-портала, в котором указать использование профиля оповещений, для отсылки информации о созданной учетной записи.

В разделе Пользователи и устройства в подразделе Captive-профили создать профиль, указав в нем использование созданного ранее профиля оповещения. Указать в качестве страницы авторизации шаблон Captive portal: email auth или Captive portal: SMS auth, в зависимости от способа отправки оповещения. Настроить сообщение оповещения, группу, в которую будут помещены временные пользователи, времена действия учетной записи. Более подробно о создании профилей оповещения смотрите раздел руководства Профили оповещений.

Шаг 4. Создать правило Captive-портала, которое будет использовать созданный на предыдущем шаге Captive-профиль.

В разделе Пользователи и устройства ➜ Captive-портал создать правило, которое будет использовать созданный ранее Captive-профиль. Более подробно о создании правил Captive-портала смотрите раздел руководства Настройка Captive-портала.

Протокольные анализаторы

В данном разделе будут рассмотрены поля протоколов ICMP, TCP, UDP, HTTP.

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

ПримечаниеУказание параметров разных протоколов приведёт к ошибке.

ICMP

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

Наименование

Описание

.icmp.type

Проверка типа ICMP.

Доступно использование следующих операторов: =, !=.

.icmp.code

Проверка значения кода ICMP.

Доступно использование следующих операторов: =, !=.

.icmp.id

Проверка значений идентификаторов ICMP.

Доступно использование следующих операторов: =, !=.

.icmp.checksum

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

Доступно использование следующих операторов: <, >, <=, >=, =, !=.

.icmp.data_size

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

Доступно использование следующих операторов: <, >, <=, >=, =, !=. Если заданы несколько условий, то они объединяются логическим оператором И.

Примеры:

UASL(.name="Ping Death"; .protocol=icmp; .data_size>32000)
UASL(.name="Ping Death"; .icmp.data_size>32000)

TCP

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

Наименование

Описание

.tcp.sport

Проверка номера порта или диапазона портов источника.

Доступно использование следующих операторов: =, !=.

.tcp.dport

Проверка номера порта или диапазона портов назначения.

Доступно использование следующих операторов: =, !=.

.tcp.window_size

Проверка размера окна TCP.

Поддерживаются следующие операторы: <, >, <=, >=, =, !=.

.tcp.checksum

Проверка контрольной суммы, использующейся для проверки на наличие ошибок при передаче и/или приеме отправленного пакета.

Доступно использование следующих операторов: <, >, <=, >=, =, !=.

.tcp.seq

Проверка значения порядковых номеров TCP.

Поддерживаются следующие операторы: <, >, <=, >=, =, !=.

Доступно использование модификатора relative — проверка относительно начального номера последовательности.

Применение:

.tcp.seq=<value>,relative;

где <value> - порядковый номер TCP.

.tcp.flags

Проверка TCP-флагов:

.tcp.flags=[<mod>]<tcp_flags>;

где <mod> — модификатор.

       <tcp_flags> — флаг TCP, который может быть указан как в буквенном, так и в числовом (десятеричной или шестнадцатеричной системах) форматах.

Флаги:

  • 0 — флаги не установлены;

  • F, 1, 0X001 — FIN;

  • S, 2, 0X002 — SYN;

  • R, 4, 0X004 — RST;

  • P, 8, 0X008 — PSH;

  • A, 16, 0X010 — ACK;

  • U, 32, 0X020 — URG;

  • E, 64, 0X040 — ECE;

  • C, 128, 0X080 — CWR;

  • N, 256, 0X100 — NS.

Модификаторы:

  • * — должен быть установлен хотя бы один из заданных флагов, остальные не проверяются;

  • + — должны быть установлены все заданные флаги, остальные не проверяются;

  • ! — все заданные флаги должны быть сброшены, остальные не проверяются;

  • !0 — должен быть установлен хотя бы один флаг (любой).

Важно! Если ни один из модификаторов не указан, то должны быть установлены все заданные флаги (строгое соответствие), остальные - сброшены.

.tcp.data_size

Размер полезной нагрузки пакета TCP (без учета заголовков).

Поддерживаются следующие операторы: <, >, <=, >=, =, !=.

Возможно указание как .data_size, тогда параметр будет относится к протколам TCP и UDP.

UDP

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

Наименование

Описание

.udp.sport

Проверка номера порта или диапазона портов источника.

Доступно использование следующих операторов: =, !=.

.udp.dport

Проверка номера порта или диапазона портов назначения.

Доступно использование следующих операторов: =, !=.

.udp.checksum

Проверка контрольной суммы.

Доступно использование следующих операторов: <, >, <=, >=, =, !=.

.udp.data_size

Размер полезной нагрузки пакета UDP (без учета заголовков).

Поддерживаются следующие операторы: <, >, <=, >=, =, !=.

Возможно указание как .data_size, тогда параметр будет относится к протколам TCP и UDP.

HTTP

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

Наименование

Описание

.uri

Проверка поля идентификатора ресурса (URI).

.header

Проверка произвольных заголовков HTTP.

.body

Проверка тела содержимого запроса или ответа HTTP.

.host

Проверка доменного имени узла.

Модификаторы области поиска

.no_case

Модификатор no_case позволяет осуществлять поиск, заданный параметром .pattern, без учета регистра символов.

Пример:

UASL(.id=XXX; .name="XXX"; .pattern="Host: "; .pattern="google.com";)

.where

Модификатор .where используется для указания области поиска сигнатуры:

.where=<MODE>;

где <MODE> может принимать следующие значения:

Наименование

Описание

packet_origin

Областью поиска является весь пакет без протокольного декодера.

uri

Область поиска — поле URI заголовка HTTP.

host

Областью поиска для HTTP-сессии является поле Host (до переноса строки).

header

Областью поиска для HTTP-сессии являются http заголовки, smtp и pop3 команды, заголовки протоколов tls и ssh.

body

Областью поиска является содержимое пакетов HTTP.

file

Областью поиска являются: декодированное http содержимое, вложения в eml, ftp-data сессии.

.service

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

.service=<MODE>;

где <MODE> может принимать следующие значения:

Наименование

Описание

http

Разбор протокола HTTP.

Пример:

UASL(.name="block.google"; .protocol=tcp; .service=http; .host="google.com";)

.distance, .within, .at, .startin

Данные модификаторы позволяют:

Наименование

Описание

.distance

Пропустить заданное количество байтов (RANGE) от начала или последнего найденного блока.

Задаётся в формате:

.distance=<RANGE> [,<MODE>];

где <RANGE> — это целое число, начиная с 0.

Опциональные параметры (<MODE>) будут рассмотрены далее.

Например, следующая запись задаёт пропуск 10 байтов с начала для первого шаблона или от последнего найденного для второго и последующего шаблонов:

.distance=10;

Пример использования опциональных параметров:

  • пропустить 10 байтов от начала:

    .distance=10, start;
  • пропустить 10 байтов от последнего найденного шаблона:

    .distance=10, match;

.within

Сканировать в заданном интервале (RANGE) от начала или последнего найденного блока (шаблон полностью попадает в заданный интервал).

Задаётся в формате:

.within=<RANGE> [,<MODE>];

где <RANGE> — это целое число, начиная с 1.

Опциональные параметры (<MODE>) будут рассмотрены далее.

Например, следующая запись задаёт поиск с 1-го по 10-й байт с начала для первого шаблон или от последнего найденного для второго и последующего шаблона:

.within=10;

Пример использования опциональных параметров:

  • поиск с 1-го (с начала) по 10-й байт:

    .within=10, start;
  • поиск в диапазоне 10 байтов после последнего найденного шаблона:

    .within=10, match;

.startin

Сканировать в заданном интервале (RANGE) от начала или последнего найденного блока (для совпадения в заданный интервал может попадать только начало шаблона).

Задаётся в формате:

.startin=<RANGE> [,<MODE>];

где <RANGE> — это целое число, начиная с 1.

Опциональные параметры (<MODE>) будут рассмотрены далее.

.at

Проверять наличие шаблона в заданной позиции.

Важно! Данный модификатор не совместим с модификаторами .distance и .within.

Задаётся в формате:

.at=<RANGE> [,<MODE>];

где <RANGE> — это целое число, начиная с 0.

Опциональные параметры (<MODE>) будут рассмотрены далее.

В следующей таблице представлены опциональные параметры:

Наименование

Описание

start

Поиск с начала потока данных.

Важно! Является значением по умолчанию для первого шаблона.

packet

Сканирование с начала пакета.

reverse

Поиск с конца пакета (удобно для проверки Next Protocol в ESP).

match

Поиск от последнего найденного шаблона.

Важно! Является значением по умолчанию для второго и последующего шаблона.

lastmark

Сканирование от последней метки, выставленной с помощью .mark pset.

ПримечаниеЕсли опциональный параметр для модификаторов .distance и .within совпадают, то отсчёт значения модификатора .within производится от значения .distance.

Например, запись:

.distance=10,match; .within=5,match

задаёт поиск в диапазоне с 10-го по 15-й байт от последнего найденного шаблона.

Примеры:

UASL(.name="sock5.proxy.detect"; .protocol=tcp; .flow=from_client; .seq=1,relative; .pattern="|05 01 00|"; .within=1;)
UASL(.name="block.google"; .protocol=tcp; .service=http;.pattern="google.com"; .within=512;)

.protocol

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

.protocol=<MODE>;

где <MODE> может принимать следующие значения:

  • icmp: анализ трафика протокола ICMP.

  • udp: анализ трафика протокола UDP.

  • tcp: анализ трафика протокола TCP.

ПримечаниеМожно задать только один протокол. Если протокол не указан, то сигнатура применяется только к трафику TCP и UDP.

Пример:

UASL(.name="block.google"; .protocol=tcp; .pattern="google.com";)

Фильтрация по портам

Для задания проверки TCP/UDP-портов используйте параметры:

  • .src_port — для проверки портов источника:

  • .dst_port — для проверки портов назначения:

Доступно использование следующих выражений:

Наименование

Описание

.src_port=<port_number>;

.dst_port=<port_number>;

Указание конкретного порта источника и/или назначения.

.src_port!=<port_number>;

.dst_port!=<port_number>;

Проверка всех портов кроме указанного.

.src_port=:<port_number>;

.dst_port=:<port_number>;

Проверка всех портов, номер которых меньше или равен номеру указанного порта.

.src_port!=:<port_number>;

.dst_port!=:<port_number>;

Проверка всех портов, номер которых больше указанного.

.src_port=<port_number>:;

.dst_port=<port_number>:;

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

.src_port!=<port_number>:;

.dst_port!=<port_number>:;

Проверка всех портов, номер которых меньше указанного.

.src_port=<port_number1>:<port_number2>;

.dst_port=<port_number1>:<port_number2>;

Проверка портов, находящихся в указанном диапазоне (port_number1 и port_number2 включительно).

.src_port!=<port_number1>:<port_number2>;

.dst_port!=<port_number1>:<port_number2>;

Проверка всех портов, не входящих в указанный диапазон (т.е. проверяются порты с номерами менее port_number1 и более port_number2).

Примеры:

.src_port=1000:;  # '>= 1000'
.dst_port=5060;
.dst_port=1000:;
.dst_port=2000:8000;  # '>= 2000 and <= 8000'
.dst_port!=2000:8000;  # '< 2000 and > 8000' 

Фильтрация по IP-адресам

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

.src_addr[!]=<IP_address/subnet>;

.dst_addr[!]=<IP_address/subnet>;

Допустимы следующие форматы указания IP-адресов:

  • A.B.C.D;

  • A.B.C.D/E;

  • A.B.C.D:E.

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

.src_addr=[<IP_address1>, <IP_address2>];

Примеры:

.src_addr!=10.10.10.1;
.src_addr=10.10.10.0/24;
.src_addr=[10.10.10.0/24, 10.10.20.0/24, 10.10.30.0/24];

Примеры

В данном разделе приведены примеры, написанные с использования UASL.

Пример 1

UASL(
    .id = 1;
    .pattern = "ABC"; .startin = 1;
    .pattern = "XYZ"; .at = 3, match;
)

В данном примере выполняется последовательный поиск 2-х шаблонов:

  • поиск начала шаблона ABC в заданном диапазоне, т.е. первый байт заданного шаблона обязательно должен находится в диапазоне. Значение модификатора .startin равно 1 (диапазон = 1, поиск шаблона с начала сессии, т.к. первый модификатор по умолчанию — start) — байт, входящий в этот диапазон должен быть равен началу шаблона ABC;

  • поиск шаблона XYZ начиная с позиции 4 (.at=3;) от последнего найденного шаблона ABC.

Пример 2

UASL(
    .id = 2;
    .pattern = "ABC"; .at = 0;
    .pattern = "XYZ"; .distance = 3, match; .startin = 1, match;
)

Выполняется последовательный поиск 2-х шаблонов:

  • поиск начала шаблона ABC с начала пакета (.at=0;);

  • пропустив 3 байта от последнего найденного шаблона ABC (.distance=3,match;) производится поиск начала шаблона XYZ; для срабатывания начало шаблона XYZ должно быть равно первому байту, с которого начинается поиск, т.к. .startin=1,match;.

Пример 3

UASL(
    .id = 3;
    .pattern = "ABC";
    .pattern = "XYZ"; .distance = 3, match; .within = 3, match;       
)

Производится последовательный поиск 2-х шаблонов:

  • поиск шаблона ABC;

  • через 3 байта от последнего найденного шаблона ABC (.distance=3,match;) производится поиск шаблона XYZ: шаблон XYZ должен полностью попадать в последующие 3 байта, т.к. .within=3.

Работа с метками

Для каждого потока данных может быть указана именованная метка. Для ее указания используется:

.mark <parameter>=<value>;

где <value> – название метки (указывается с использованием кавычек "");

       <parameter> может принимать значения, представленные в таблице ниже.

Сопоставление шаблонов основано, в большинстве случаев, на работе с пакетами данных. Метки используются в случаях, если шаблон атак присутствует в нескольких пакетах. Сигнатура, сработавшая для предыдущего пакета, может поставить метку; наличие меток проверяется при отправке пакетов в рамках одной сессии.

Наименование

Описание

set

Установить именованную метку для текущего потока данных.

pset

Установить и запомнить последнюю выставленную метку для возможности её использования с модификаторами области поиска .distance и .within.

clear

Удалить именованную метку.

toggle

Изменить статус метки.

test

Проверить, существует ли метка.

reset

Сбросить все метки.

Направление анализа

Данный параметр является опциональным и позволяет применять сигнатуру к определённым потокам трафика. В результате можно создавать сигнатуры, которые будут анализировать трафик от клиента, от сервера или в обоих направлениях.

.flow=<MODE>;

где <MODE> может принимать следующие значения:

Наименование

Описание

from_client

Анализ трафика от клиента.

from_server

Анализ трафика от сервера.

bi_directional

Анализ трафика в обоих направлениях.

Поиск шаблонов

Следующий параметр позволяет задать шаблон, на наличие которого система обнаружения и предотвращения вторжений будет проверять содержимое пакетов (packet payload):

.pattern[!]="string";

ПримечаниеСледует помнить, что при поиске учитывается регистр символов.

Данные, представленные в шестнадцатеричной системе счисления (HEX), должны быть указаны с использованием символа вертикальной черты (|), например, |05 00 27|.

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

Символ

Запись в шестнадцатеричном формате

"

|22|.

;

|3B| или |3b|.

\

|5C| или |5c|.

|

|7C| или |7c|.

:

|3A| или |3a|.

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

Общий формат задания параметра:

.pattern[!]="string"; [.where=<MODE>;] [.no_case;] [.distance=<RANGE>[,<MODE>];] [.within=<RANGE>[,<MODE>];] [.service=<MODE>;]

Модификаторы области поиска (.where, .no_case, .distance, .within, .service) будут рассмотрены далее.

При написании сигнатуры доступно использование нескольких параметров .pattern с целью снижения уровня ложных срабатываний.

Сканирование пакетов без полезной нагрузки

Поле .nopayload предназначено для возможности сканирования пакетов, в которых отсутствует полезная нагрузка.

ПримечаниеПоле неприменимо для сигнатур с поиском шаблонов и проверкой метки.

Например, данное поле может быть использовано для обнаружения сканирования портов пакетами без полезной нагрузки. Далее представлена сигнатура для обнаружения SYN-сканирования:

UASL(.protocol=tcp; .tcp.flags=S; .rate=1000,2; .track=src_ip; .nopayload;)

ПримечаниеУказание поля .nopayload не исключает сканирования пакетов с нагрузкой.
Метаинформация

Поле .rev предназначено для указания дополнительной информации: пользователь, который создал сигнатуру, дата создания, тип и версия сигнатуры. Поле является опциональным и не влияет на работу СОВ; может быть использовано для отслеживания изменений.

Формат поля следующий:

.rev = <date>,<version>,<status>,<author>;

где параметры имеют следующий тип данных:

  • <date>: целочисленный;

  • <version>: целочисленный;

  • <status>: строковый;

  • <author>: строковый.