Перейти к основному содержимому

Chains

В нашей реализации структуры мы вводим для INPUT и OUTPUT понятие 2-х цепочек. Первая цепочка является точкой входа для пакетов из сетевого стека, в ней указывается хук (input, prerouting, postrouting) и приоритет выполнения, так же эта цепочка используется для маршрутизации в последующие цепочки по принадлежности к той или иной Security Group. Вторая цепочка содержит наборы правил, относящиеся только к конкретной Security Group.

Наименование цепочкиТипОписание
INGRESS-INPUTIngress

Первая цепочка является точкой входа для пакетов из сетевого стека, в ней указывается хук (input) и приоритет выполнения 0 (filter). Так же используется для маршрутизации в последующие цепочки по принадлежности к той или иной Security Group.

INGRESS-INPUT-$sgNameIngress

Вторая цепочка содержит наборы правил, относящиеся только к конкретной Security Group.

EGRESS-POSTROUTINGEgress

Первая цепочка является точкой входа для пакетов из сетевого стека, в ней указывается хук (postrouting) и приоритет выполнения 300. Так же используется для маршрутизации в последующие цепочки по принадлежности к той или иной Security Group.

EGRESS-POSTROUTING-$sgNameEgress

Вторая цепочка содержит наборы правил, относящиеся только к конкретной Security Group.

Описание

Правило перехода в цепочку INGRESS-INPUT-sgName с проверкой что трафик является входящим и предназначен для указанной Security Group.

Параметры

Шаблон параметраСтруктура параметраЗначениеОписание
$ConntrackStatect stateestablished,related

Оптеделяет правило для обработки пакетов, удовлетворяющих условиям установленного и связанного состояния соединения.

$CtVerdictaccept

$CtVerdict - указывает на принятие (accept) пакетов по указанным условиям. Подробнее: Verdict statement

$BaseRules
Base Rules - набор правил, которые прописываются статично из конфиграционнного файла агента для того что бы всегда был доступ до высококритичных сервисов таких как HBF и DNS.
Подробнее: Config Base Rules
$RuleTypeipУказатель на трафик типа IP
$DstSgroupdaddr@${IPSet({sgName})}Значение типа string, не должно содержать в себе пробелов
$sgNameНазвание Security Group
$Countercounter packets 0 bytes 0Счетчик, учитывает количество пройденных пакетов с количеством байтов переданной информации в рамках указанной цепочки правил
$PolicyVerdictpolicydrop
Policy $Verdict устанавливается для цепочек с целью установки базового правила, которое будет применено к пакету если установленное правило не удовлетворили условия. По умолчанию drop.
Подробнее: Verdict statement
$Verdictgoto
Так как данное правило используется для проверки типа трафика то переход на другую цепочку правил происходит только с помощью goto.
Подробнее: Verdict statement
$HookhookinputПриоритет выполнения цепочки характеризующий стадию прохождения трафика
$HookPrioritypriority0Приоритет выполнения цепочки одного типа

Шаблон

chain INGRESS-INPUT {
type filter $Hook $HookPriority; $PolicyVerdict;
$ConntrackState $Counter $CtVerdict
$BaseRules
# **********
$RuleType $DstSgroup $Counter $Verdict INGRESS-INPUT-$sgName
# **********
$Counter
}

Пример использования

chain INGRESS-INPUT {
type filter hook input priority 0; policy drop;
ct state established,related counter packets 0 bytes 0 accept
ip saddr { 1.1.1.1, 2.2.2.2} accept
# **********
ip daddr @NetIPv4-exampleSG counter packets 0 bytes 0 goto INGRESS-INPUT-exampleSG
# **********
counter packets 0 bytes 0
}
table inet main-1705582480 {

chain INGRESS-INPUT {
type filter hook input priority filter; policy drop;
ct state established,related counter packets 0 bytes 0 accept
ip saddr { 1.1.1.1, 2.2.2.2} accept
# ******
ip daddr @NetIPv4-no-routed counter packets 0 bytes 0 goto INGRESS-INPUT-no-routed
ip daddr @NetIPv4-exampleSG counter packets 0 bytes 0 goto INGRESS-INPUT-exampleSG
counter packets 0 bytes 0
}

chain INGRESS-INPUT-no-routed {
# ******
counter packets 0 bytes 0 accept
}

chain INGRESS-INPUT-exampleSG {
# ******
counter packets 0 bytes 0 accept
}

}