Урок за Nftables

Urok Za Nftables



Този урок обяснява как да работите със защитната стена Nftables Linux. Това съдържание е оптимизирано както за опитни, така и за нови потребители с Linux.

Nftables е компонент на ядрото на Linux, осигуряващ функции на защитната стена. Това е заместител на Iptables.







След като прочетете този урок, ще разберете правилата на Nftables и ще можете да създадете своя защитна стена. Нямате нужда от предишни познания за Iptables.



Всички примери в този урок съдържат екранни снимки, което улеснява разбирането и прилагането на всички потребители на Linux, независимо от тяхното ниво на познания.



Първи стъпки с Nftables

Преди да започнете, създайте и отворете файл с помощта на текстов редактор като nano или vi, за да започнете да въвеждате първите си правила за Nftables въз основа на следния пример. Не копирайте и поставяйте; напишете всичко.





нано защитна стена.nft

Примерът в този урок е доста прост и показва ограничителна защитна стена, в която целият IPv4 трафик се премахва, с изключение на loopback и специфични портове.



В предишната екранна снимка използвах първия ред, за да дефинирам моята локална мрежа (192.168.0.0/16) като LinuxHintNet.

дефинирайте LinuxHintNet = 192.168.0.0 / 16

Във втория ред дефинирам група портове (80,443 и 22). Наричам тази група AllowPorts, защото планирам да разреша трафик през тях. AllowPorts е произволно име.

дефинирайте AllowPorts   = { 80 , 443 , 53 , 22 }

След това добавям таблица, която е контейнер или група от вериги и правила; и двете са обяснени по-долу. Таблиците помагат за организирането на правила и вериги. Нарекох таблицата в примера „Ограничителна“, защото съдържа ограничителна политика и името й е произволно.

IP адресът преди името на таблицата показва, че тези правила на таблицата ще се прилагат само към IPv4 трафик. Можете да използвате inet вместо IP, за да приложите правила към IPv4 и IPv6 протоколи. Или можете да замените IP с ip6 само за IPv6.

Не забравяйте, че Ограничително е име, което дефинирах произволно. Можете да наименувате масата както искате.

В моя случай прилагам правила само за IPv4, както е показано по-долу.

добавете таблица ip Ограничителен

И за двата протокола използвайте следното:

добавете таблица inet Ограничителен

След това добавяме първата базова верига, която произволно наричам Входяща, защото е свързана с входящия трафик. Въпреки това можете да го кръстите както искате.

Следната базова верига премахва целия входящ трафик по подразбиране:

  • add chain ip Restrictive Incoming: Този раздел добавя ограничителната входяща верига, която да се прилага към IPv4
  • тип филтър: Това определя типа верига като филтър, тъй като ще филтрира трафика. Други възможни типове вериги са маршрут или NAT
  • hook input: Отнася се за входящи пакети
  • приоритет 0: Приоритетът на основната верига определя реда на базовата верига
  • отпадане на политика: Политиката за отпадане по подразбиране отхвърля всички пакети
Добавете верига ip Ограничителни входящи { Тип приоритет на въвеждане на филтърна кука 0 ; спад на политиката; }

Както можете да видите на следващата екранна снимка, създадох две други базови вериги, подобни на предишните, Ограничително пренасочване и Ограничително изходящо. Разликата е дефинираната кука за всеки (кука напред и изход на кука). Обясняването им е многократно.

След трите базови вериги можем да продължим с правилата на Nftables, за да позволим обратен трафик.

Добавям следните редове за входящ и изходящ трафик в интерфейса за обратна връзка.

добавете правило ip Ограничително входящо iifname lo counter accept

добавете правило ip Ограничително Входящо име на име на брояча приема

Сега добавям четири правила, приемащи изходящ и входящ TCP и UDP трафик през всички портове, включени в променливата $AllowPorts, дефинирана в началото на файла.

добавете правило ip Ограничителен входящ tcp спорт $AllowPorts контра приемам

добавете правило ip Ограничителен изходящ tcp dport $AllowPorts контра приемам

добавете правило ip Ограничителен входящ udp спорт $AllowPorts контра приемам

добавете правило ip Ограничителен изходящ udp dport $AllowPorts контра приемам

Можете да видите пълния скрипт по-долу.

След като приключите с въвеждането на вашите таблици, вериги и правила, затворете документа и запазете промените.

# В първите два реда дефинирам моята локална мрежа (LinuxHintNet) и набор от портове (80,
#443,22), за да разрешите трафик през тях в правилата по-долу.
дефинирайте LinuxHintNet = 192.168.0.0 / 16
дефинирайте AllowPorts   = { 80 , 443 , 53 , 22 }
#Декларирам нова таблица, която ще съдържа вериги и правила. Наричам тази таблица 'Ограничителна'.
#'IP' прилага правила само за IPv4. За IPv6 използвайте само 'ip6' и използвайте 'inet' и за двата протокола.
добавете таблица ip Ограничителен
# След като създам таблицата, създавам три вериги, входящи, пренасочващи и изходящи,
#Имената им са произволни. Всички те премахват входящия, изходящия и препращащия трафик по подразбиране.
добавете верига ip Ограничителни входящи { Тип приоритет на въвеждане на филтърна кука 0 ; спад на политиката; }
добавете верига ip Ограничително пренасочване { Тип филтър кука напред приоритет 0 ; спад на политиката; }
добавете верига ip Ограничителни изходящи { Тип филтър кука изход приоритет 0 ; спад на политиката; }
# Прилагам две правила за разрешаване на обратен трафик.
добавете правило ip Ограничително входящо iifname lo counter accept
добавете правило ip Ограничително Входящо име на име на брояча приема
# Прилагам правила за разрешаване на трафик през портове, дефинирани в променливата AllowPorts.
добавете правило ip Ограничителен входящ tcp спорт $AllowPorts контра приемам
добавете правило ip Ограничителен изходящ tcp dport $AllowPorts контра приемам
добавете правило ip Ограничителен входящ udp спорт $AllowPorts контра приемам

добавете правило ip Ограничителен изходящ udp dport $AllowPorts контра приемам

За да активирате защитната стена, изпълнете следната команда:

sudo nft -f защитна стена.nft

Можете да проверите вашите правила, като изпълните следната команда:

sudo набор от правила за nft списък

Това е основна ограничителна защитна стена.

Заключение:

Както можете да видите, Nftables е много по-приятелски настроен от Iptables и потребителите могат да научат Nftables по-бързо от Iptables. Тъй като Iptables се преустановява и много дистрибуции използват Nftables като защитна стена по подразбиране, включително Debian. Опитните потребители на Iptables може да поискат да разгледат инструмента Iptables-nftables-compat, който превежда Iptables в Nftables. Това може да им помогне да разберат разликите.

Професионалните потребители като системните администратори са склонни да продължат да работят с Iptables; избягвайте да игнорирате Nftables, за да спестите време, като същевременно подобрявате филтрирането. Надявам се, че тази статия е достатъчно проста, за да ви убеди да опитате Nftables.