borderrule (borderrule)

Описание

Статическое правило фильтрации входящих SIP-запросов. Применяется в целях защиты от атак SIP-ролями, находящимися на границе развернутой системы «Era».
Остальные SIP-роли принудительно фильтруют по адресу отправителя, допуская лишь пакеты от других внутренних серверов.

Система применяет самое приоритетное из подходящих по условиям правил.

В качестве значения IP-адреса может выступать IP-адрес (напр. 192.168.0.10), маска подсети (напр. 192.168.0.0/24), диапазон IP-адресов (напр. 172.25.0.50+10).

Входящие сообщения проходят двойной цикл проверки. Сначала среди правил выбираются те, где задан только фильтр по IP-адресу/маске удаленной стороны. Эта проверка не требует больших ресурсов. Правила, в которых заданы другие фильтры автоматически пропускают сообщения с первого этапа на второй. Если сообщение не отфильтровано на первом этапе, то оно допускается в систему, и после парсера к разобранному сообщению применяются все правила с их фильтрами, включая те, где заданы фильтры на домен заголовка From, имя пользователя заголовка From, юзерагента (заголовок User-Agent) и т.д. Это необходимо учитывать при формировании белых списков, где последнее по приоритету правило - отказать всем.

Правила, где задан только фильтр по IP-адресу/маске, влекут запрет на размещение адресов в динамическом бан-листе (превышение количества попыток авторизации с разными учетными данными в течение короткого интервала времени).

Ограничения

  • Коллекция доступна только в мастер-домене.

Поля

Структура сущности
{
  "id": uuid,
  "priority": str,
  "site": str,
  "domain": str,
  "username": str,
  "useragent": str,
  "remoteipmask": str,
  "action": str,
  "opts": {
    "title": str,
    "comment": str
  },
  "ext": {
    "ct": date,
    "lwt": date
  }
}
Table 1. Поля
Спецификация Описание

Поле: id
Режим: inout
Тип: uuid
По умолчанию: generated

Идентификатор. Может быть задан при создании, иначе генерируется системой.

Поле: enabled
Режим: in
Тип: intbool
По умолчанию: 1

Выключатель правила

Поле: priority
Режим: in
Тип: int
По умолчанию: required

Приоритет. Меньшее значение означает более высокий приоритет.

Поле: site
Режим: in
Тип: str
По умолчанию: "*"

Сайт, на котором применяется правило.
"*" – применяется на всех сайтах.

Поле: service
Режим: in
Тип: str
По умолчанию: "*"

Сервис, на котором применяется правило.
Виды сервисов

Поле: domain
Режим: in
Тип: str
По умолчанию: empty

Домен отправителя или регулярное выражение.

Поле: username
Режим: in
Тип: str
По умолчанию: empty

Имя пользователя или регулярное выражение.

Поле: useragent
Режим: in
Тип: str
По умолчанию: empty

Значение поля UserAgent в SIP запросе или регулярное выражение.

Поле: remoteipmask
Режим: in
Тип: str
По умолчанию: "0.0.0.0/0"

Маска IP-адреса отправителя.
В качестве значения IP-адреса могут выступать:

  • IP-адрес (напр. '192.168.0.10'),

  • Маска подсети (напр. '192.168.0.0/24'),

  • Диапазон IP-адресов (напр. '172.25.0.50+10').

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

Белый список
IP-адрес входит в белый список, если одновременно:

  • существует разрешительное правило пограничного фильтра, которое накрывает исследуемый IP-адрес своей маской/диапазоном,

  • это правило не имеет других заданных фильтров на значения заголовков,

  • это правило ориентировано на соответствующую службу,

  • это правило разрешительное,

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

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

  • либо чтобы отсутствовало разрешительное правило для 0.0.0.0/0, ориентированное на соответствующий сервис, и не содержащее других фильтров на поля запроса;

  • либо чтобы среди правил с меньшим приоритетом присутствовало правило для 0.0.0.0/0, ориентированное на соответствующий сервис, и содержащее какой-либо дополнительный фильтр на поля запроса.

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

Поле: action
Режим: in
Тип: str
По умолчанию: required

Поле: opts
Режим: in
Тип: object
Составное поле

Поле: opts.title
Режим: in
Тип: str
По умолчанию: empty

Произвольный заголовок

Поле: opts.comment
Режим: in
Тип: str
По умолчанию: empty

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

Поле: ext
Режим: inout
Тип: object
Составное поле

Позволяет расширять состав произвольными ключами и значениями

Поле: ext.ct
Режим: out
Тип: date
По умолчанию: generated

Время создания объекта

Поле: ext.lwt
Режим: out
Тип: date
По умолчанию: generated

Время последней модификации объекта

Действия при получении входящих запросов

Table 2. Действия при получении входящих запросов
Значение Описание

"allow"

Разрешено

"drop"

Запрещено. Игнорирование запроса без отправки ответа.

"deny"

Запрещено. Возврат ответа с отказом.

Виды сервисов

Table 3. Виды сервисов
Значение Описание

"ws"

Применяется только на веб-сервере для HTTP(S) и WS(S) запросов к API.

"sg"

Применяется только на sg (TCP, UDP, TLS, WS, WSS).

"esg"

Применяется только на esg (TCP, UDP, TLS).

"ap"

Применяется только на autoprovision (TFTP).

"sip"

Применяется на всех пограничных SIP-сервисах: sg, esg, ap.

"*"

Применяется на всех вышеперечисленных сервисах.

См. также

Логические роли

  • sg реализует SBC (Session Border Controller).

  • esg реализует SBC (Session Border Controller).