Фильтрация трафика
Обзор
Система фильтрации трафика CloudPub обеспечивает контроль доступа к сервисам на основе параметров соединения.
Возможности
Система фильтрации позволяет:
- Защитить ваши сервисы от нежелательного трафика
- Ограничить доступ по географическому принципу
- Заблокировать подозрительные IP-адреса и порты
- Контролировать HTTP-запросы по методам и путям
- Перенаправлять трафик при необходимости
Параметры фильтрации
Система использует синтаксис, совместимый с фильтрами Wireshark.

Доступные переменные
IP-адреса
ip.src- IP-адрес источника (клиента)ip.dst- IP-адрес назначения (сервера)
Порты
port.src- Порт источника (клиента)port.dst- Порт назначения (сервера)
Протокол
protocol- Протокол соединения ("tcp", "udp", "http")
HTTP-поля (доступны только для HTTP-соединений)
http.host- Хост из HTTP-заголовкаhttp.path- Путь в HTTP-запросеhttp.method- HTTP-метод (GET, POST, PUT, DELETE и т.д.)http.headers- Карта HTTP-заголовков
Геолокация
geo.country- Страна клиентаgeo.region- Регион клиентаgeo.city- Город клиентаgeo.code- Код страны (ISO)
Синтаксис
Операторы сравнения
==- Точное равенство!=- Неравенство>- Больше<- Меньше>=- Больше или равно<=- Меньше или равно
Операторы для строк
matches- Сопоставление с регулярным выражениемcontains- Содержит подстрокуstarts_with- Начинается с подстрокиends_with- Заканчивается подстрокой
Логические операторы
and- Логическое Иor- Логическое ИЛИnot- Логическое НЕ
Скобки
()- Группировка выражений
Примеры
Фильтрация HTTP-запросов
# Правило 1: Блокировать ботов
http.headers["User-Agent"] contains "bot"
# Правило 2: Ограничить размер файлов
http.method == "POST" and http.headers["Content-Length"] > 10000000
Фильтрация по IP-адресам
# Заблокировать конкретный IP-адрес
ip.src == 192.168.1.100
# Разрешить доступ только из локальной сети
ip.src >= 192.168.1.0 and ip.src <= 192.168.1.255
# Заблокировать диапазон IP-адресов
ip.src >= 10.0.0.0 and ip.src <= 10.255.255.255
# Разрешить доступ только с определенных адресов
ip.src == 192.168.1.10 or ip.src == 192.168.1.20
Фильтрация по портам
# Разрешить доступ только с непривилегированных портов
port.src > 1024
# Заблокировать конкретный порт
port.src == 22
# Разрешить доступ только к определенному порту назначения
port.dst == 80 or port.dst == 443
# Заблокировать диапазон портов
port.src >= 1000 and port.src <= 2000
Фильтрация по протоколу
# Разрешить только HTTP-соединения
protocol == "http"
# Заблокировать TCP-соединения
protocol != "tcp"
# Разрешить только UDP-трафик
protocol == "udp"
HTTP-фильтрация
# Заблокировать доступ к админке
http.path matches "^/admin.*"
# Разрешить доступ только к API
http.path starts_with "/api/"
# Заблокировать конкретный хост
http.host == "blocked.example.com"
# Разрешить только GET-запросы
http.method == "GET"
# Фильтрация по заголовкам
http.headers["User-Agent"] contains "bot"
# Комбинированная фильтрация
http.method == "POST" and http.path starts_with "/api/v1/"
Геофильтрация
# Заблокировать доступ из определенной страны
geo.country == "Russia"
# Разрешить доступ только из определенных стран
geo.code == "US" or geo.code == "CA" or geo.code == "GB"
# Заблокировать доступ из определенного региона
geo.region == "Москва"
# Разрешить доступ только из определенных городов
geo.city == "Санкт-Петербург" or geo.city == "Новосибирск"
Узнать правильное написание города или региона можно в разделе Инспектор запросов.
- Нажмите на "Инспектр запросов" в личном кабинете
- Нажмите на "Столбцы"
- Выберите "Страна", "Регион", "Город"
Сложные комбинированные правила
# Заблокировать админку для всех, кроме локальной сети
http.path matches "^/admin.*" and not (ip.src >= 192.168.1.0 and ip.src <= 192.168.1.255)
# Разрешить API только для аутентифицированных пользователей
http.path starts_with "/api/" and http.headers["Authorization"] contains "Bearer"
# Ограничить доступ к загрузкам только для определенных стран
http.path starts_with "/uploads/" and (geo.code == "US" or geo.code == "CA")
# Заблокировать подозрительные запросы
http.method == "POST" and http.headers["Content-Type"] contains "multipart" and port.src < 1024
# Разрешить доступ только в рабочее время для определенных IP
ip.src >= 192.168.1.0 and ip.src <= 192.168.1.255 and http.path starts_with "/internal/"
Типы действий
После создания правила фильтрации, система выполняет одно из следующих действий:
- Разрешить - Разрешить соединение
- Запретить - Заблокировать соединение
- Перенаправить - Только для HTTP запросов: перенаправить соединение на другой адрес
Порядок обработки правил
Правила обрабатываются в порядке их приоритета. Первое совпавшее правило определяет действие, которое будет выполнено. Если ни одно правило не совпало, соединение разрешается по умолчанию.
Порядок имеет значение
Правила обрабатываются по приоритету. Размещайте более специфичные правила выше:
# Сначала разрешаем админам
ip.src == 1.2.3.4 and http.path starts_with "/admin/"
# Потом блокируем всем остальным
http.path starts_with "/admin/"