nftables — підсистема ядра Linux, що забезпечує фільтрацію і класифікацію мережевих пакетів / дейтаграм / кадрів. Включена в ядро, починаючи з версії 3.13, випущеної 19 січня 2014 року. Є проєктом із заміни фреймворків iptables, ip6tables, arptables, ebtables в мережевому екрані Netfilter. Шляхом об'єднання функціональності фреймворків, у nftables менше дублюється код при побудові правил для Netfilter і краща низькорівнева оптимізація. Станом на 26 квітня 2016 року перебуває в процесі розробки. У просторі користувача nftables налаштовується за допомогою утиліти nft.
Тип | утиліта d і мережевий екран |
---|---|
Платформа | Ядро Linux і d |
Операційна система | GNU/Linux[d] і Android |
Мова програмування | C |
Ліцензія | GNU General Public License, version 2.0[d] |
Репозиторій | git.netfilter.org/nftables/ |
Вебсайт | netfilter.org/projects/nftables/ |
|
Огляд
У пакетному фільтрі nftables уніфіковані інтерфейси фільтрації пакетів для IPv4, IPv6, ARP і мережевих мостів. У пакет nftables входять компоненти пакетного фільтра, що працюють в просторі користувача, в той час як на рівні ядра роботу забезпечує підсистема nf_tables, що входить до складу ядра Linux починаючи з випуску 3.13. На рівні ядра надається лише загальний інтерфейс, що не залежить від конкретного протоколу і надає базові функції вилучення даних з пакетів, виконання операцій з даними і управління потоком.
Безпосередньо правила фільтрації і специфічні для протоколів обробники компілюються у байткод в просторі користувача, після чого цей байткод завантажується в ядро за допомогою інтерфейсу Netlink і виконується в ядрі в спеціальній віртуальній машині, що нагадує BPF (). Подібний підхід дозволяє значно скоротити розмір коду фільтрації, що працює на рівні ядра і винести всі функції розбору правил і логіки роботи з протоколами в простір користувача.
Синтаксис командного рядка nft
Синтаксис nft більше схожий на реальну граматику.
Наприклад, команда що блокує пакети які направляються за адресою 1.2.3.4:
nft add rule ip filter output ip daddr 1.2.3.4 drop
Синтаксис такої ж дії для iptables:
iptables -t filter -A OUTPUT -j DROP -d 1.2.3.4
Для забезпечення зворотної сумісності надається спеціальний прошарок, що дозволяє використовувати iptables/ip6tables поверх інфраструктури nftables.
Історія
Проєкт був вперше представлений на Netfilter Workshop 2008 Патріком Мак-Гарді з команди по розробці ядра Netfilter
Перший попередній реліз реалізації ядра і призначеного для користувача простору був представлений в березні 2009 року. Хоча інструмент був названий найбільшою зміною брандмауера Linux з моменту появи iptables у 2001 році, в той час він отримав мало освітлення в пресі.
У жовтні 2012 року, був запропонований прошарок сумісності з iptables і анонсоване можливе включення проєкту в основну гілку ядра. 16 жовтня 2013 року було відправлено запит на включення змін (pull request) в ядро Linux. 19 січня 2014 року nftables був включений в ядро Linux версії 3.13.
Зразок
Перевірити стан служби можна командою sudo systemctl status nftables.service
nftables може стартувати при запуску, для цього необхідно увімкнути сервіс sudo systemctl enable nftables.service
, при цьому усі правила будуть автоматично завантажуватись, при запуску системи, із файлу /etc/nftables.conf
Зразки файлів з налаштуваннями nftables.conf
можна переглянути тут
Мій файл виглядає приблизно так
#!/usr/sbin/nft -f flush ruleset # очищення попередніх правил # таблиця правил для ip_v4(ip) # якщо використати ip6 то таблиця буде для ip_v6 # для використання таблиці для обох протоколів треба вказати inet table ip filter { chain input { # ланцюжок для вхідних з'єднань type filter hook input priority filter; policy drop; # відкинути усі вхідні з'єднання окрім описаних нижче meta l4proto icmp limit rate 10/minute accept # дозволити icmp запити (10 за хвилину) інакше перейти далі meta l4proto icmp drop # відкинути icmp запити, інакше вони потраплять у наступне правило, а вони рахуються established і відповіді будуть дозволені ct state established,related accept # дозволити вже встановленні з'єднання iif "lo" accept # дозволити внутрішні з'єднання служб з локальною машиною ip saddr 172.16.10.0/24 tcp dport 22 accept # дозволити SSH з'єднання з локальної мережі 172.16.10.0/24 ip saddr 192.168.200.0/24 tcp dport 22 accept # дозволити SSH з'єднання з локальної мережі 192.168.200.0/24 tcp dport 22 drop # заборонити з'єднання по SSH tcp dport 80 accept # дозволити http } chain forward { # ланцюжок для прохідних з'єднань type filter hook forward priority filter; policy drop; # заборонити прохідні з'єднання, оскільки машина не використовується як роутер або комутатор https://wiki.nftables.org/wiki-nftables/index.php/Simple_ruleset_for_a_home_router } chain output { # ланцюжок для вихідних з'єднань type filter hook output priority filter; policy accept; # дозволити вихідні з'єднання } }
Зміни внесені у файл потрібно передати у службу nft -f /etc/nftables.conf
Щоб переглянути поточні правила використайте команду nft list ruleset
Примітки
Посилання
- Офіційний сайт
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Nemaye perevirenih versij ciyeyi storinki jmovirno yiyi she ne pereviryali na vidpovidnist pravilam proektu nftables pidsistema yadra Linux sho zabezpechuye filtraciyu i klasifikaciyu merezhevih paketiv dejtagram kadriv Vklyuchena v yadro pochinayuchi z versiyi 3 13 vipushenoyi 19 sichnya 2014 roku Ye proyektom iz zamini frejmvorkiv iptables ip6tables arptables ebtables v merezhevomu ekrani Netfilter Shlyahom ob yednannya funkcionalnosti frejmvorkiv u nftables menshe dublyuyetsya kod pri pobudovi pravil dlya Netfilter i krasha nizkorivneva optimizaciya Stanom na 26 kvitnya 2016 roku perebuvaye v procesi rozrobki U prostori koristuvacha nftables nalashtovuyetsya za dopomogoyu utiliti nft NftablesTiputilita d i merezhevij ekranPlatformaYadro Linux i dOperacijna sistemaGNU Linux d i AndroidMova programuvannyaCLicenziyaGNU General Public License version 2 0 d Repozitorijgit netfilter org nftables Vebsajtnetfilter org projects nftables Mediafajli u VikishovishiOglyadU paketnomu filtri nftables unifikovani interfejsi filtraciyi paketiv dlya IPv4 IPv6 ARP i merezhevih mostiv U paket nftables vhodyat komponenti paketnogo filtra sho pracyuyut v prostori koristuvacha v toj chas yak na rivni yadra robotu zabezpechuye pidsistema nf tables sho vhodit do skladu yadra Linux pochinayuchi z vipusku 3 13 Na rivni yadra nadayetsya lishe zagalnij interfejs sho ne zalezhit vid konkretnogo protokolu i nadaye bazovi funkciyi viluchennya danih z paketiv vikonannya operacij z danimi i upravlinnya potokom Bezposeredno pravila filtraciyi i specifichni dlya protokoliv obrobniki kompilyuyutsya u bajtkod v prostori koristuvacha pislya chogo cej bajtkod zavantazhuyetsya v yadro za dopomogoyu interfejsu Netlink i vikonuyetsya v yadri v specialnij virtualnij mashini sho nagaduye BPF Podibnij pidhid dozvolyaye znachno skorotiti rozmir kodu filtraciyi sho pracyuye na rivni yadra i vinesti vsi funkciyi rozboru pravil i logiki roboti z protokolami v prostir koristuvacha Sintaksis komandnogo ryadka nftSintaksis nft bilshe shozhij na realnu gramatiku Napriklad komanda sho blokuye paketi yaki napravlyayutsya za adresoyu 1 2 3 4 nft add rule ip filter output ip daddr 1 2 3 4 drop Sintaksis takoyi zh diyi dlya iptables iptables t filter A OUTPUT j DROP d 1 2 3 4 Dlya zabezpechennya zvorotnoyi sumisnosti nadayetsya specialnij prosharok sho dozvolyaye vikoristovuvati iptables ip6tables poverh infrastrukturi nftables IstoriyaProyekt buv vpershe predstavlenij na Netfilter Workshop 2008 Patrikom Mak Gardi z komandi po rozrobci yadra Netfilter Pershij poperednij reliz realizaciyi yadra i priznachenogo dlya koristuvacha prostoru buv predstavlenij v berezni 2009 roku Hocha instrument buv nazvanij najbilshoyu zminoyu brandmauera Linux z momentu poyavi iptables u 2001 roci v toj chas vin otrimav malo osvitlennya v presi U zhovtni 2012 roku buv zaproponovanij prosharok sumisnosti z iptables i anonsovane mozhlive vklyuchennya proyektu v osnovnu gilku yadra 16 zhovtnya 2013 roku bulo vidpravleno zapit na vklyuchennya zmin pull request v yadro Linux 19 sichnya 2014 roku nftables buv vklyuchenij v yadro Linux versiyi 3 13 ZrazokPereviriti stan sluzhbi mozhna komandoyu sudo systemctl status nftables service nftables mozhe startuvati pri zapusku dlya cogo neobhidno uvimknuti servis sudo systemctl enable nftables service pri comu usi pravila budut avtomatichno zavantazhuvatis pri zapusku sistemi iz fajlu etc nftables conf Zrazki fajliv z nalashtuvannyami nftables conf mozhna pereglyanuti tut Mij fajl viglyadaye priblizno tak usr sbin nft f flush ruleset ochishennya poperednih pravil tablicya pravil dlya ip v4 ip yaksho vikoristati ip6 to tablicya bude dlya ip v6 dlya vikoristannya tablici dlya oboh protokoliv treba vkazati inet table ip filter chain input lancyuzhok dlya vhidnih z yednan type filter hook input priority filter policy drop vidkinuti usi vhidni z yednannya okrim opisanih nizhche meta l4proto icmp limit rate 10 minute accept dozvoliti icmp zapiti 10 za hvilinu inakshe perejti dali meta l4proto icmp drop vidkinuti icmp zapiti inakshe voni potraplyat u nastupne pravilo a voni rahuyutsya established i vidpovidi budut dozvoleni ct state established related accept dozvoliti vzhe vstanovlenni z yednannya iif lo accept dozvoliti vnutrishni z yednannya sluzhb z lokalnoyu mashinoyu ip saddr 172 16 10 0 24 tcp dport 22 accept dozvoliti SSH z yednannya z lokalnoyi merezhi 172 16 10 0 24 ip saddr 192 168 200 0 24 tcp dport 22 accept dozvoliti SSH z yednannya z lokalnoyi merezhi 192 168 200 0 24 tcp dport 22 drop zaboroniti z yednannya po SSH tcp dport 80 accept dozvoliti http chain forward lancyuzhok dlya prohidnih z yednan type filter hook forward priority filter policy drop zaboroniti prohidni z yednannya oskilki mashina ne vikoristovuyetsya yak router abo komutator https wiki nftables org wiki nftables index php Simple ruleset for a home router chain output lancyuzhok dlya vihidnih z yednan type filter hook output priority filter policy accept dozvoliti vihidni z yednannya Zmini vneseni u fajl potribno peredati u sluzhbu nft f etc nftables conf Shob pereglyanuti potochni pravila vikoristajte komandu nft list rulesetPrimitkiPosilannyaOficijnij sajt