Вопрос или проблема
Я пытаюсь создать правило nftables
, которое может ограничить трафик SCTP
, содержащий DIAMETER
. Далее я хотел бы только отбрасывать
запросы информации для аутентификации
(AIR
).
В общем, все должно проходить, кроме AIR
, которые превышают определенный лимит/порог.
Это моя текущая версия:
nft add rule filter input ip daddr 1.2.3.4 sctp @th,64,32 0x0000013e limit rate over 10/second drop
Идея состоит в том, что @th,64,32
сопоставляет 32-битное поле (DIAMETER
код команды), начиная с байтового смещения 64 от полезной нагрузки SCTP
, а 0x0000013e
– это шестнадцатеричный код для 318
(запрос информации для аутентификации
).
Я пытался разобрать вещи с помощью Wireshark
, но не совсем уверен.
Также не уверен, как это испытать хорошим способом.
Может ли кто-нибудь подтвердить, отредактировать и/или помочь мне с тестированием этого?
Ответ или решение
Вопрос касается создания правила для nftables
с целью ограничения SCTP-трафика, включающего запросы DIAMETER типа AIR. Давайте разберемся с необходимыми деталями по шагам.
Формулировка проблемы:
Вы хотите создать правило, которое будет "измерять" трафик по определенному параметру и блокировать те пакеты, которые превышают указанный лимит. В данном случае лимит устанавливается для DIAMETER-запросов AIR, которые распознаются по командному коду.
Вам предложено следующее правило:
nft add rule filter input ip daddr 1.2.3.4 sctp @th,64,32 0x0000013e limit rate over 10/second drop
Пояснение параметров:
- ip daddr 1.2.3.4: Указывает, что правила применяются к пакетам, направленным на IP-адрес 1.2.3.4.
- sctp: Применяется к SCTP-трафику.
- @th,64,32: Соответствует 32-битному полю, начинающемуся со смещения 64 байта от начала SCTP-пакета. Это поле предполагается содержать DIAMETER командный код.
- 0x0000013e: Это шестнадцатеричное представление для числа 318, что соответствует коду AIR в DIAMETER.
- limit rate over 10/second drop: Устанавливает ограничение на не более 10 пакетов в секунду, иначе пакеты сбрасываются.
Рекомендации и валидация:
-
Проверка смещения и кода: Убедитесь, что смещение
@th,64,32
и код0x0000013e
точно соответствуют нужному полю в SCTP пакете. Обычно это можно выяснить с помощью анализа пакетов посредством Wireshark, но будьте уверены, что смещение соответствует структуре диаграммы протокола DIAMETER. -
Тестирование:
- С помощью Wireshark: Получите набор данных (трафик) и используйте Wireshark, чтобы удостовериться, что команды с кодом 318 действительно присутствуют в правильной позиции.
- С использованием искусственно сгенерированного трафика: Используйте инструменты для создания и отправки SCTP пакетов с параметрами, соответствующими вашим DIAMETER транзакциям.
-
Мониторинг и логирование: Настройте логирование в
nftables
, чтобы контролировать, сколько пакетов сбрасывается. Это можно сделать добавлением логирующего правила перед сбросом для получения более подробной информации.
Учитывайте также необходимость балансировать между строгими правилами и пропускной способностью сети, чтобы не случайно не заблокировать легитимный трафик.
Оптимизация:
Использование ключевых слов, таких как SCTP
, DIAMETER
, nftables
, и Authentication Information Request
, поможет оптимизировать содержание для поисковых систем, делая его более доступным для целевой аудитории.
Ваш подход в использовании nftables
правильный, однако всегда соблюдайте осторожность при вводе фильтров на уровне пакетов, чтобы избежать перебоев в рабочих процессах.