Chains
В нашей реализации структуры мы вводим для INPUT и OUTPUT понятие 2-х цепочек. Первая цепочка является точкой входа для пакетов из сетевого стека, в ней указывается хук (input, prerouting, postrouting) и приоритет выполнения, так же эта цепочка используется для маршрутизации в последующие цепочки по принадлежности к той или иной Security Group. Вторая цепочка содержит наборы пр авил, относящиеся только к конкретной Security Group.
Наименование цепочки | Тип | Описание |
---|---|---|
INGRESS-INPUT | Ingress | Первая цепочка является точкой входа для пакетов из сетевого стека, в ней указывается хук (input) и приоритет выполнения 0 (filter). Так же используется для маршрутизации в последующие цепочки по принадлежности к той или иной Security Group. |
INGRESS-INPUT-$sgName | Ingress | Вторая цепочка содержит наборы правил, относящиеся только к конкретной Security Group. |
EGRESS-POSTROUTING | Egress | Первая цепочка является точкой входа для пакетов из сетевого стека, в ней указывается хук (postrouting) и приоритет выполнения 300. Так же используется для маршрутизации в последующие цепочки по принадлежности к той или иной Security Group. |
Egress | Вторая цепочка содержит наборы правил, относящиеся только к конкретной Security Group. |
- INGRESS-INPUT
- EGRESS-POSTROUTING
Описание
Правило перехода в цепочку INGRESS-INPUT-sgName
с проверкой что трафик является входящим и предназначен для указанной Security Group.
Параметры
Шаблон параметра | Структура параметра | Значение | Описание |
---|---|---|---|
$ConntrackState | ct state | established,related | Оптеделяет правило для обработки пакетов, удовлетворяющих условиям установленного и связанного состояния соединения. |
$CtVerdict | accept | $CtVerdict - указывает на принятие (accept) пакетов по указанным условиям. Подробнее: Verdict statement | |
$BaseRules | Base Rules - набор правил, которые прописываются статично из конфиграционнного файла агента для того что бы всегда был доступ до высококритичных сервисов таких как HBF и DNS. Подробнее: Config Base Rules | ||
$RuleType | ip | Указатель на трафик типа IP | |
$DstSgroup | daddr | @${IPSet({sgName})} | Значение типа string, не должно содержать в себе пробелов |
$sgName | Название Security Group | ||
$Counter | counter | packets 0 bytes 0 | Счетчик, учитывает количество пройденных пакетов с количеством байтов переданной информации в рамках указанной цепочки правил |
$PolicyVerdict | policy | drop | Policy $Verdict устанавливается для цепочек с целью установки базового правила, которое будет применено к пакету если установленное правило не удовлетворили условия. По умолчанию drop. Подробнее: Verdict statement |
$Verdict | goto | Так как данное правило используется для проверки типа трафика то переход на другую цепочку правил происходит только с помощью goto. Подробнее: Verdict statement | |
$Hook | hook | input | Приоритет выполнения цепочки характеризующий стадию прохождения трафика |
$HookPriority | priority | 0 | Приоритет выполнения цепочки одного типа |
Шаблон
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
}
}
Описание
Правило перехода в цепочку EGRESS-POSTROUTING-$sgName
с проверкой что трафик является исходящим и предназначен для
указанной Security Group.
Параметры
Шаблон параметра | Структура параметра | Значение | Описание |
---|---|---|---|
$ConntrackState | ct state | established,related | Оптеделяет правило для обработки пакетов, удовлетворяющих условиям установленного и связанного состояния соединения. |
$CtVerdict | accept | $CtVerdict - указывает на принятие (accept) пакетов по указанным условиям. Подробнее: Verdict statement | |
$BaseRules | Base Rules - набор правил, которые прописываются статично из конфиграционнного файла агента для того что бы всегда был доступ до высококритичных сервисов таких как HBF и DNS. Подробнее: Config Base Rules | ||
$RuleType | ip | Указатель на трафик типа IP | |
$SrcSgroup | saddr | @${IPSet({sgName})} | Значение типа string, не должно содержать в себе пробелов |
$sgName | Название Security Group | ||
$Counter | counter | packets 0 bytes 0 | Счетчик, учитывает количество пройденных пакетов с количеством байтов переданной информации в рамках указанной цепочки правил |
$PolicyVerdict | policy | drop | Policy $Verdict устанавливается для цепочек с целью установки базового правила, которое будет применено к пакету если установленное правило не удовлетворили условия. По умолчанию drop. Подробнее: Verdict statement |
$Verdict | goto | Так как данное правило используется для проверки типа трафика то переход на другую цепочку правил происходит только с помощью goto. Подробнее: Verdict statement | |
$Hook | hook | input | Приоритет выполнения цепочки характерезующий стадию прохождения трафика |
$HookPriority | priority | 0 | Приоритет выполнения цепочки одного типа |
Шаблон
chain EGRESS-POSTROUTING {
type filter $Hook $HookPriority; $PolicyVerdict;
$ConntrackState $Counter $CtVerdict
$BaseRules
# **********
$RuleType $SrcSgroup $Counter $Verdict EGRESS-POSTROUTING-$sgName
# **********
$Counter
}
Пример использования
chain EGRESS-POSTROUTING {
type filter hook postrouting priority 300; policy drop;
ct state established,related counter packets 0 bytes 0 accept
ip daddr { 1.1.1.1, 2.2.2.2} accept
# **********
ip saddr @NetIPv4-exampleSG counter packets 0 bytes 0 goto EGRESS-POSTROUTING-exampleSG
# **********
counter packets 0 bytes 0
}
table inet main-1705582480 {
chain EGRESS-POSTROUTING {
type filter hook postrouting priority 300; policy drop;
ct state established,related counter packets 0 bytes 0 accept
ip daddr { 1.1.1.1, 2.2.2.2} accept
# **********
ip saddr @NetIPv4-exampleSG counter packets 0 bytes 0 goto EGRESS-POSTROUTING-exampleSG
ip saddr @NetIPv4-no-routed counter packets 0 bytes 0 goto EGRESS-POSTROUTING-no-routed
counter packets 0 bytes 0
}
chain EGRESS-POSTROUTING-no-routed {
# ******
counter packets 0 bytes 0 accept
}
chain EGRESS-POSTROUTING-exampleSG {
# ******
counter packets 0 bytes 0 accept
}