flip:linux:nftables
Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
flip:linux:nftables [2024/12/25 10:04] – flip | flip:linux:nftables [2024/12/25 10:49] (текущий) – flip | ||
---|---|---|---|
Строка 24: | Строка 24: | ||
> | > | ||
+ | |||
+ | Содержание: | ||
+ | |||
+ | < | ||
+ | # | ||
+ | |||
+ | flush ruleset | ||
+ | |||
+ | table inet filter { | ||
+ | chain input { | ||
+ | type filter hook input priority filter; | ||
+ | } | ||
+ | chain forward { | ||
+ | type filter hook forward priority filter; | ||
+ | } | ||
+ | chain output { | ||
+ | type filter hook output priority filter; | ||
+ | } | ||
+ | } | ||
+ | </ | ||
Строка 30: | Строка 50: | ||
< | < | ||
nft list ruleset | nft list ruleset | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Удалить правило ==== | ||
+ | |||
+ | Каждое правило при добавлении получает свой номер (**handle**). \\ | ||
+ | Чтобы посмотреть эти номера нужно использовать ключ -a | ||
+ | |||
+ | < | ||
+ | nft -a list ruleset | ||
+ | </ | ||
+ | |||
+ | И затем можно удалить правило по его номеру, | ||
+ | |||
+ | < | ||
+ | nft delete rule inet filter input handle 2 | ||
</ | </ | ||
Строка 70: | Строка 106: | ||
===== Синтаксис ===== | ===== Синтаксис ===== | ||
+ | |||
+ | >**nft < | ||
+ | |||
+ | Команда — add, insert, delete, replace, rename, list, flush… \\ | ||
+ | Объект — table, chain, rule, set, ruleset… \\ | ||
+ | Путь к объекту зависит от типа. Например, | ||
+ | У правила — гораздо длиннее: | ||
+ | Параметры зависят от типа объекта. Для правила это условие отбора пакетов и действие, | ||
Создать базовую таблицу IPv4 | Создать базовую таблицу IPv4 | ||
Строка 154: | Строка 198: | ||
* **raw** — позволяет выборочно пропускать или отбрасывать пакеты перед тем, как они попадут в механизм отслеживания соединения (**ct** - connection tracking), что значительно снижает нагрузку на процессор. | * **raw** — позволяет выборочно пропускать или отбрасывать пакеты перед тем, как они попадут в механизм отслеживания соединения (**ct** - connection tracking), что значительно снижает нагрузку на процессор. | ||
* Содержит цепочки: | * Содержит цепочки: | ||
+ | |||
+ | Таблицы могут быть одного из 6-ти семейств (families): | ||
+ | |||
+ | * **ip** — для обработки пакетов IPv4 | ||
+ | * **ip6** — IPv6 | ||
+ | * **inet** — обрабатывает сразу и IPv4 и IPv6 (чтобы не дублировать одинаковые правила) | ||
+ | * **arp** — пакеты протокола ARP | ||
+ | * **bridge** — пакеты, | ||
+ | * **netdev** — для обработки «сырых» данных, | ||
Строка 176: | Строка 229: | ||
* **iifname <имя интерфейса> | * **iifname <имя интерфейса> | ||
* **oifname <имя интерфейса> | * **oifname <имя интерфейса> | ||
+ | |||
+ | * **counter** - счетчик пакетов | ||
+ | |||
+ | **Connection tracking** — это модуль, | ||
+ | |||
+ | * **new** — пакет устанавливает новое соединение; | ||
+ | * **estableshed** — пакет является частью существующего соединения (например ответ на ping или ответ на http запрос); | ||
+ | * **related** — пакет является частью связанного соединения. Например, | ||
+ | * **invalid** — пакет не является частью каких-либо соединений в таблице connection tracking. | ||
+ | |||
+ | **Смена политик** | ||
+ | |||
+ | * **nft add chain < | ||
+ | * **nft add chain < | ||
Строка 181: | Строка 248: | ||
+ | ==== Разрешить все подключения к loopback ==== | ||
+ | |||
+ | Интерфейс **lo** | ||
+ | |||
+ | < | ||
+ | nft add rule inet filter input iifname lo counter accept | ||
+ | </ | ||
+ | |||
+ | ==== Разрешить ssh с определенного IP ==== | ||
+ | |||
+ | Интерфейс **eth0** | ||
+ | |||
+ | < | ||
+ | nft add rule inet filter input iifname eth0 ip saddr 192.168.0.2 tcp dport 22 counter accept | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Разрешить PING из подсети ==== | ||
+ | |||
+ | < | ||
+ | nft add rule inet filter input ip saddr 192.168.0.0/ | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Разрешить ответные соединения estableshed + related ==== | ||
+ | |||
+ | < | ||
+ | nft add rule inet filter input ct state established, | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Разрешить порты http, https (80, 443) ==== | ||
+ | |||
+ | < | ||
+ | nft add rule inet filter input tcp dport {80, 443} counter accept | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Смена политики цепочки input ==== | ||
+ | |||
+ | < | ||
+ | nft chain inet filter input { policy drop \; } | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Ссылки ===== | ||
+ | |||
+ | * [[https:// | ||
flip/linux/nftables.1735121067.txt.gz · Последнее изменение: 2024/12/25 10:04 — flip