Този урок обяснява как да работите със защитната стена 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: Приоритетът на основната верига определя реда на базовата верига
- отпадане на политика: Политиката за отпадане по подразбиране отхвърля всички пакети
Както можете да видите на следващата екранна снимка, създадох две други базови вериги, подобни на предишните, Ограничително пренасочване и Ограничително изходящо. Разликата е дефинираната кука за всеки (кука напред и изход на кука). Обясняването им е многократно.
След трите базови вериги можем да продължим с правилата на 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.