Я пытаюсь создать таблицу, цепочку и набор правил для nft в Python, чтобы они действовали как белый список.
Поэтому мне нужна цепочка с политикой «удаления», чтобы удалить все исходящие пакеты, которые не соответствуют утвержденным пунктам назначения, указанным в правилах этой цепочки.
Я хочу использовать пользовательскую таблицу, чтобы упростить обслуживание и чтобы Fail2ban и другие утилиты могли работать параллельно с этим. белый список (который будет предназначен только для пакетов, поступающих только с одного конкретного интерфейса).
Я использую Python и библиотеку nft json, я вижу, что создается моя таблица, цепочка и правило, но никакая политика не указана в выводе набора правил после запуска моей программы, поэтому я предполагаю, что по умолчанию она будет «принята».
Я использую строку json для настройки новой таблицы и цепочки внутри, в настоящее время у него есть очень простое правило для целей тестирования. Он проходит проверку libnftables, но когда я перечисляю набор правил после запуска кода Python, я вижу таблицу, цепочку и правила, но никакая политика не применяется вообще.
вот строка настройки:< /p>
{'nftables':
[{'add': {'table': {'family': 'ip', 'name': 'O365'}}},
{'add': {'chain': {'family': 'ip', 'table': 'O365', 'name': 'O365WhiteList', 'policy': 'drop'}}},
{'add': {'rule': {'family': 'ip', 'table': 'O365', 'chain': 'O365WhiteList',
'expr': [{'match': {'op': '==', 'left': {'payload': {'protocol': 'tcp', 'field': 'dport'}}, 'right': 22}}, {'accept': None}
]
}}}]}
А вот результат набора правил:
# Warning: table ip filter is managed by iptables-nft, do not touch!
table ip filter {
chain f2b-sshd {
counter packets 92105 bytes 13096562 return
}
chain INPUT {
type filter hook input priority filter; policy accept;
meta l4proto tcp tcp dport 22 counter packets 132201 bytes 15881220 jump f2b-sshd
}
}
# Warning: table ip nat is managed by iptables-nft, do not touch!
table ip nat {
chain POSTROUTING {
type nat hook postrouting priority srcnat; policy accept;
oifname "ens19" counter packets 983 bytes 70843 masquerade
}
}
table ip O365 {
chain O365WhiteList {
tcp dport 22 accept
}
}
Как видите, я еще не подключаюсь к своей таблице, я просто хочу сначала убедиться, что она создана правильно. Таблица, цепочка и правило есть, но политика не указана.
Есть идеи? Насколько я вижу, справочная страница libnftables-json бесполезна, поскольку «политика» указана только как STRING.
Ниже приведен полный код вышеизложенного:
import json
import nftables
#some objects to be turned into json for nftables to apply as commands
delTable = {"nftables": [{ "delete": { "table": { "family": "ip", "name": "O365" }}}]}
setupTablesCmds= """
{ "nftables": [
{ "add": { "table": { "family": "ip", "name": "O365" }}},
{ "add": { "chain": {
"family": "ip",
"table": "O365",
"name": "O365WhiteList",
"policy": "drop"
}}},
{ "add": { "rule": {
"family": "ip",
"table": "O365",
"chain": "O365WhiteList",
"expr": [
{ "match": {
"op": "==",
"left": { "payload": {
"protocol": "tcp",
"field": "dport"
}},
"right": 22
}},
{ "accept": null }
]
}}}
]}
"""
nft = nftables.Nftables()
try:
nft.json_validate(json.loads(setupTablesCmds))
except Exception as e:
print(f"ERROR: failed validating initial setup json schema: {e}")
exit(1)
print(" base config data passed validation, yay!" )
print()
print("Removing old O365 table")
rc, output, error = nft.json_cmd(delTable)
if rc != 0:
# error here is probably because table doesn't exist, which is fine, so no exit on error for now
print(f"ERROR: running json cmd: {error}")
print(" setting up new O365 table " )
print( "json commands = :", json.loads(setupTablesCmds))
rc, output, error = nft.json_cmd(json.loads(setupTablesCmds))
if rc != 0:
print(f"ERROR: running json cmd: {error}")
exit(1)
if len(output) != 0:
print(f"WARNING: output: {output}")
print(" Base config applied ok, O365 table created" )
Подробнее здесь: https://stackoverflow.com/questions/790 ... is-failing
Не удается добавить политику в мою пользовательскую цепочку в nftables через Python libnftables. Можете ли вы сказать мн ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Запрос рекомендаций по изменению правил nftables для взаимодействия с контейнерной сетью
Anonymous » » в форуме Linux - 0 Ответы
- 18 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Nftables: oneliner для подсчета, регистрации (с ограничением) и удаления
Anonymous » » в форуме Linux - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Запросить проверку правила nftables для регулирования SCTP/DIAMETER AIR.
Anonymous » » в форуме Linux - 0 Ответы
- 59 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Пакеты NFTABLES не получены после манипуляции с пользователем пространства
Anonymous » » в форуме Linux - 0 Ответы
- 12 Просмотры
-
Последнее сообщение Anonymous
-