nftables budoucnost linuxového firewallu Petr Krčmář 18. listopadu 2014

Podobné dokumenty
nftables budoucnost linuxového firewallu Petr Krčmář 7. října 2017

Firewall, mac filtering, address filtering, port forwarding, dmz. Ondřej Vojtíšek, Jakub Niedermertl

Osobní firewall s iptables

Instalace. Samotný firewall již je s největší pravděpodobností nainstalovaný Zjistíme dle parametru při použití. aptitude search iptables

Zjednodusene zaklady prace s IPTABLES Jiri Kubina jiri.kubina@osu.cz Ver. 1.1 zari 2006

Firewal ing v Linuxe

Téma 11: Firewall v CentOS. Nastavení firewallu

WireGuard. nová a jednoduchá linuxová VPN. Petr Krčmář. 3. listopadu 2018

Základní konfigurace Linux firewallu

PB169 Operační systémy a sítě

FIREWALL - IPTABLES. 1. Co je to firewall 2. IPTABLES 3. Manuálové stránky 4. Nastavení směrovače 5. Příklady. 1. Co je to firewall?

Firewally a iptables. Přednáška číslo 12

Operační systémy 2. Firewally, NFS Přednáška číslo 7b

Y36SPS: Firewalling laborka

OpenVPN. Uvedené dílo podléhá licenci Creative Commons Uved te autora 3.0 Česko. Ondřej Caletka (CESNET, z.s.p.o.) OpenVPN 3. března / 16

Site - Zapich. Varianta 1

IP protokol v linuxu trocha teorie a hodně praxe příkazy ip, iptables a další.

Semestrální projekt do předmětu SPS

Úvod do iptables aneb UN*Xové firewally

Demo: Multipath TCP. 5. října 2013

IPv6. RNDr. Ing. Vladimir Smotlacha, Ph.D.

Multikast z pohledu uživatele

Vychytávky v iptables

Y36PSI IPv6. Jan Kubr - 7_IPv6 Jan Kubr 1/29

Nástroje pro FlowSpec a RTBH. Jiří Vraný, Petr Adamec a Josef Verich CESNET. 30. leden 2019 Praha

Správa sítí. RNDr. Ing. Vladimir Smotlacha, Ph.D.

Počítačové sítě II. 15. Internet protokol verze 6 Miroslav Spousta, 2006

2N VoiceBlue Next. 2N VoiceBlue Next & Siemens HiPath (series 3000) Propojení pomocí SIP trunku. Quick guide. Version 1.

Možnosti IPv6 NAT. Lukáš Krupčík, Martin Hruška KRU0052, HRU0079. Konfigurace... 3 Statické NAT-PT Ověření zapojení... 7

Úvod do IPv6. Pavel Satrapa

GRE tunel APLIKA ˇ CNÍ P ˇ RÍRU ˇ CKA

Studentská unie ČVUT v Praze, klub Silicon Hill. 22. února Ondřej Caletka (SU ČVUT) IPv6 nové (ne)bezpečí? 22.

Administrace Unixu (Nastavení firewallu)

WrapSix aneb nebojme se NAT64. Michal Zima.

1. Směrovače směrového protokolu směrovací tabulku 1.1 TTL

Další nástroje pro testování

BEZPEČNOST SLUŽEB NA INTERNETU

X36PKO Úvod Protokolová rodina TCP/IP

Access Control Lists (ACL)

Instalace Debianu pomocí debootstrap

IP filtr a detektor útoků

ANALÝZA TCP/IP 2 ANALÝZA PROTOKOLŮ DHCP, ARP, ICMP A DNS

Linux v síti. Ondřej Vondrouš

OpenVPN. Ondřej Caletka.

Snort pravidla a jejich syntaxe. Příklad psaní vlastních pravidel

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

Analýza protokolů rodiny TCP/IP, NAT

Bezpečnost vzdáleného přístupu. Jan Kubr

Internet protokol, IP adresy, návaznost IP na nižší vrstvy

TESTOVÁNÍ VYSOKORYCHLOSTNÍHO NÁSTROJE PRO PŘEKLAD IP ADRES TESTING OF HIGH-SPEED TOOL FOR NETWORK ADDRESS TRANSLATION

P2P komunikace I/O modulů řady E1200 I/O moduly s komunikací přes mobilní telefonní sítě

Implementace protokolů IPSec na OS Linux, FreeS/WAN. Martin Povolný

Alpine Linux: minimalistická distribuce nejen na server

Grafické rozhraní pro nastavení iptables v GNU/Linux

Internet a zdroje. (ARP, routing) Mgr. Petr Jakubec. Katedra fyzikální chemie Univerzita Palackého v Olomouci Tř. 17. listopadu

Hot Standby Router Protocol (zajištění vysoké spolehlivosti výchozí brány)

SSH: dálková správa serveru

XMW3 / IW3 Sítě 1. Štefan Pataky, Martin Poisel YOUR LOGO

ADMINISTRACE UNIXU A SÍTÍ - AUS Metodický list č. 1

Migrace laboratorního firewallu z platformy Linux PC na platformu MikroTik

Seznámení s Mikrotik RouterOS

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

OpenSSL a certifikáty

Certificate Transparency

Y36SPS QoS Jan Kubr - Y36SPS 1 5/2008

HP HELION OPENSTACK LAB GUIDE

Analýza a optimalizace softwarových firewall na operačních systémech Linux Diplomová práce

Netfilter. semestrální projekt předmětu OBDAI 2011

Y36SPS Jmenné služby DHCP a DNS

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

Úvod do síťových technologií

Směrovací protokoly, propojování sítí

Síťová vrstva. RNDr. Ing. Vladimir Smotlacha, Ph.D.

IPv6 na OpenWRT. 6. června Ondřej Caletka (CESNET, z.s.p.o.) IPv6 na OpenWRT 6. června / 17

Identifikátor materiálu: ICT-3-03

Kontejnerová virtualizace na Linuxu

Uvedené dílo (s výjimkou obrázků) podléhá licenci Creative Commons Uved te autora 3.0 Česko.

BEZPEČNOST SLUŽEB NA INTERNETU

Laboratorní práce: SNMP - Linux snmputils

Dodávka UTM zařízení FIREWALL zadávací dokumentace

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

Technická specifikace zařízení

Uživatelský modul. Modem Bonding

Směrovací démon BIRD. CZ.NIC z. s. p. o. Ondřej Filip / IT10

i4 Portfolio s.r.o

VPN - Virtual private networks

Jak se měří Internet

Jak se měří Internet

metodický list č. 1 Internet protokol, návaznost na nižší vrstvy, směrování

Dual-stack jako řešení přechodu?

Zkrácení zápisu dvojitou dvojtečkou lze použít pouze jednou z důvodu nejednoznačnosti interpretace výsledného zápisu adresy.

Protokoly: IP, ARP, RARP, ICMP, IGMP, OSPF

Technologie počítačových sítí AFT NAT64/DNS64. Bc. Lumír Balhar (BAL344), Bc. Petr Kadlec (KAD0019)

Protokol TELNET. Schéma funkčních modulů komunikace protokolem TELNET. Telnet klient. login shell. Telnet server TCP/IP.

Přístup k transportní vrstvě z vrstvy aplikační rozhraní služeb služby pro systémové aplikace, služby pro uživatelské aplikace DNS

Maturitní okruhy pro 1.KŠPA Kladno, s.r.o. Počítačové sítě a komunikace

Šifrovaný disk v Linuxu

Počítačové sítě - program cvičení

Semestrální práce z předmětu KIV/PD

Semestrální projekt do Směrovaných a přepínaných sítí

Transkript:

nftables budoucnost linuxového firewallu Petr Krčmář 18. listopadu 2014 Uvedené dílo (s výjimkou obrázků) podléhá licenci Creative Commons Uveďte autora 3.0 Česko. Petr Krčmář (Root.cz) nftables 18. listopadu 2014 1 / 33

Prezentace už teď na webu www.petrkrcmar.cz Petr Krčmář (Root.cz) nftables 18. listopadu 2014 2 / 33

Historie síťového filtru v Linuxu ipfwadm 1995 1999 jádro 1.2.1 2.2.0 bezestavový filtr, IPv4 only, NAT vedle každý paket se posuzoval zvlášť méně bezpečné = nutno otevírat všem nebo nikomu ipchains 1999 2001 jádro 2.2.0 2.4.0 podpora IPv6, více protokolů stále bezestavový filtr stále stejné nevýhody bezestavosti Petr Krčmář (Root.cz) nftables 18. listopadu 2014 3 / 33

Současnost síťového filtru v Linuxu iptables/netfilter 2001? jádro 2.4.0 současná univerzální netfilter (hooky), conntrack a NAT + iptables implementující obecné tabulky s pravidly výsledkem plně stavový filtr (umí i bezestavový) nftables leden 2014 budoucnost jádro 3.12 současná projekt ale běží od roku 2008 zatím stále ve vývojové fázi nenahrazuje netfilter, jen iptables vyvíjí netfilter core team, není to akce proti iptables Petr Krčmář (Root.cz) nftables 18. listopadu 2014 4 / 33

Milníky v historii nftables...the biggest change to Linux firewalling since the introduction of iptables in 2001 Patrick McHardy projekt představen na Netfilter Workshop 2008 první implementace v březnu 2009 poté projekt vypadal mrtvě, zmizel i web v březnu 2010 přechod do beta verze říjen 2012 rozhraní kompatibilní s iptables říjen 2013 pull request do jádra v lednu 2014 zařazeno do jádra 3.13 stále probíhá intenzivní vývoj (zdaleka není hotovo) Petr Krčmář (Root.cz) nftables 18. listopadu 2014 5 / 33

Proč nový firewall? IPtables jsou neefektivní, přerostlé a málo dynamické duplikují kód: iptables, ip6tables, arptables, ebtables obsahují spoustu kódu pro konkrétní protokoly např. kód pro získání portu z UDP a TCP je jiný rozšíření funkčnosti = tvorba jaderného modulu např. xt_dns pro zkoumání typů DNS provozu v jádře jsou zhruba dvě stovky modulů k IPtables spousta věcí dodrátovaných dodatečně ipset přidání či změna pravidla jsou výkonnostní problém vše se pošle do userspace, upraví a nahraje zpět často je výhodnější save a restore Petr Krčmář (Root.cz) nftables 18. listopadu 2014 6 / 33

Jak to řeší nftables? neobsahují žádný kód, který by rozuměl protokolům implementují jednoduchý virtuální stroj ten dostává program od uživatelské utility instrukcí je minimum, pokrývají všechny potřeby snadno lze přidat další rozšíření funkčnosti = úprava uživatelské utility nft není třeba měnit jádro (!) např. podpora icmpv6 = 100řádkový patch desetina kódu v jádře IPtables: 70K řádek v jádře, 50K v userspace nftables: 7K řádek v jádře, 50K v userspace Petr Krčmář (Root.cz) nftables 18. listopadu 2014 7 / 33

Univerzálnost nftables nftables neobsahují kód pro hledání IP adres nic jako porovnej IP adresu paketu se 192.168.1.1 místo toho se vloží univerzální kód payload load 4 offset network header + 16 => reg 1 compare reg 1 192.168.1.1 první řádek skočí v hlavičce o 16 bytů pak načte čtyři byty do reg 1 druhý řádek porovná obsah reg 1 stroj nftables používá opcode (bytecode) vychází z Berkeley Packet Filter Petr Krčmář (Root.cz) nftables 18. listopadu 2014 8 / 33

Mnoho možností takový přístup je velmi mocný jazyk umožňuje mnoho věcí payload load 4 offset network header + 16 => reg 1 set lookup reg 1 load result in verdict register { "192.168.1.1" : jump chain1, "192.168.1.2" : drop, "192.168.1.3" : jump chain2 } vyhledání adresy ve slovníkové tabulce nahrazuje ipset předání paketů do dalších řetězců Petr Krčmář (Root.cz) nftables 18. listopadu 2014 9 / 33

Možnost slučování akcí použití více slovníků či map jeden paket může být testován na více vlastností i více akcí v řetězci: započítat, logovat, zahodit výsledek = není třeba opakovat testy vlastností nftables dostávají od network stacku metadata data z conntracku, metadata délku paketu, protokol, adresy a další Petr Krčmář (Root.cz) nftables 18. listopadu 2014 10 / 33

Co je jinak proti IPtables syntaxe je podobná iproute2 parametry se zapisují bez pomlček ve volném pořadí změny jsou atomické a rychlé je možné bez problémů za běhu měnit pravidla jediná transakce v Netlinku minimum komunikace z userspace do jádra nftables nemají žádné vestavěné řetězce počítadla je třeba explicitně zapínat Petr Krčmář (Root.cz) nftables 18. listopadu 2014 11 / 33

Co budete potřebovat jádro > 3.13, lépe > 3.14, nejlépe co nejnovější utilitu nft (v Jessie balík nftables) není třeba psát programy ručně, dělá to utilita má i možnost dekompilace = vytvoří čitelný výstup Petr Krčmář (Root.cz) nftables 18. listopadu 2014 12 / 33

Terminologie tabulka tabulka (table) kontejner pro řetězce a sety ip ip6 arp bridge inet neexistují žádné předdefinované tabulky výchozí tabulka je ip Petr Krčmář (Root.cz) nftables 18. listopadu 2014 13 / 33

Terminologie řetězec řetězec (chain) kontejner pro pravidla leží vždy uvnitř tabulky filter route nat může mít hook, typ a prioritu neexistují žádné předdefinované řetězce Petr Krčmář (Root.cz) nftables 18. listopadu 2014 14 / 33

Terminologie hook hook jaderný výstup z netfilteru je na něj možné zavěsit callback pak se provoz posílá do řetězce hook ale není nutný prerouting vše vstupující do počítače forward pakety pro jiné počítače vyžadující forward input pakety pro lokální počítače output pakety pocházející z lokálního počítače postrouting pakety opouštějící počítač Petr Krčmář (Root.cz) nftables 18. listopadu 2014 15 / 33

Terminologie pravidlo pravidla výrazy sledující parametry paketů ip IP protokol ip6 IPv6 protokol tcp TCP protokol udp UDP protokol udplite UDP-lite protokol sctp SCTP protokol dccp DCCP protokol ah IPSec AH režim esp IPSec ESP režim ipcomp IPcomp hlavičky icmp icmp protokol icmpv6 icmpv6 protokol ct connection tracking meta metadata jako síťová rozhraní každý má své parametry Petr Krčmář (Root.cz) nftables 18. listopadu 2014 16 / 33

Terminologie akce možné řetězit bez opakování testů je možné vykonat následující akce accept pusť paket a dál ho nezkoumej drop zahoď paket a dál ho nezkoumej reject zahoď paket a pošli o tom ICMP zprávu queue předej paket do userspace (libnetfilter_queue) snat zařiď source NAT dnat zařiď destination NAT jump skoč do jiného řetězce return ukonči současný řetězec a vrať se goto jako jump, ale bez návratu counter započítej paket log zaloguj aktivitu Petr Krčmář (Root.cz) nftables 18. listopadu 2014 17 / 33

Praktická část Praktické použití Petr Krčmář (Root.cz) nftables 18. listopadu 2014 18 / 33

Založení tabulky založíme si tabulku pro ipv4-filter # nft -f /etc/nftables/ipv4-filter podíváme se, co se založilo # nft list table filter Petr Krčmář (Root.cz) nftables 18. listopadu 2014 19 / 33

Přidání pravidel přidáme si pravidla # nft add rule ip filter output ip\ daddr 77.78.107.135 reject podíváme se, co se přidalo # nft list table filter Petr Krčmář (Root.cz) nftables 18. listopadu 2014 20 / 33

Vložení pravidel pravidla je možné strkat před/mezi předchozí pomocí -a si zjistíme číslo pravidla pomocí add vložíme za pravidlo pomocí insert vložíme před pravidlo # nft nft list table filter -n -a # nft add rule filter output position 10 \ ip daddr 1.2.3.4 reject # nft insert rule filter output position 10 \ ip daddr 5.6.7.8 reject Petr Krčmář (Root.cz) nftables 18. listopadu 2014 21 / 33

Počítadla přidáme si počítadlo # nft add rule filter output ip daddr 8.8.8.8 counter podíváme se na stav parametr -nn vypne host lookup # ping 8.8.8.8 # nft list -nn table filter Petr Krčmář (Root.cz) nftables 18. listopadu 2014 22 / 33

Limity a logování možné limitovat různé druhy provozu příklad s limitem pingů # nft add rule filter input icmp type echo-request \ limit rate 10/second accept pro logování je třeba modul ipt_log informace se sypou do syslogu # nft add rule filter input tcp dport 22 ct state new \ log prefix \"Pripojeni pres SSH: \" accept Petr Krčmář (Root.cz) nftables 18. listopadu 2014 23 / 33

Výrazy, rozsahy a skoky k dispozici!=, >, <, >=, <= pozor, v shellu nutno escapovat možné použít i rozsahy # nft add rule filter output tcp dport!= 22 counter # nft add rule filter input tcp dport 1-1024 counter reject skoky do jiných řetězců jump, je možné se vrátit pomocí return goto skok bez návratu řetězce nemusí mít hooky # nft add chain ip filter sshcko # nft add rule filter input tcp dport 22 jump sshcko # nft add rule ip filter sshcko counter # nft add rule ip filter sshcko return Petr Krčmář (Root.cz) nftables 18. listopadu 2014 24 / 33

NAT NAT má zvláštní pravidla pouze první paket nového flow projde do řetězce NAT zavede se nová vazba, případně upraví paket poté ostatní pakety upravují podle vzniklé vazby řetězec prerouting musíte vytvořit, i když nemá pravida aktivuje odnatování paketů # nft add table nat # nft add chain nat prerouting { type nat \ hook prerouting priority 0 \; } # nft add chain nat postrouting { type nat \ hook postrouting priority 0 \; } # nft add rule nat postrouting ip saddr \ 192.168.1.0/24 oif eth0 snat 195.18.52.55 Petr Krčmář (Root.cz) nftables 18. listopadu 2014 25 / 33

Sety nftables má zabudovanou podporu setů není potřeba žádná nadstavba typu ipset lze použít sadu libovolných selektorů připravené jsou slovníky a mapy (další slide) jednoduché anonymní sety nebo pojmenované # nft add rule filter output tcp dport { 22, 23 } counter # nft add set filter zlobivaci { type ipv4_addr\;} # nft add element filter zlobivaci { 192.168.1.4 } # nft add element filter zlobivaci \ { 192.168.2.8, 192.168.2.15 } # nft add rule ip input ip saddr @zlobivaci reject Petr Krčmář (Root.cz) nftables 18. listopadu 2014 26 / 33

Slovníky a mapy slovníky umožňují propojení elementu a akce ohromné zjednodušení, nic takového iptables nemají # nft add rule ip filter input ip protocol vmap \ { tcp : jump tcp-chain, udp : jump udp-chain, \ icmp : jump icmp-chain} # nft add rule ip filter input counter drop mapy přiřazují výstup ke vstupu (interně set) například různou NAT adresu podle portů # nft add rule ip filter input dnat set tcp dport \ map { 80 : 192.168.1.100, 8888 : 192.168.1.101 } Petr Krčmář (Root.cz) nftables 18. listopadu 2014 27 / 33

Ukládání a obnova nastavené tabulky je možné uložit poté triviálně obnovit # nft list table filter -n > ulozeno # nft -f ulozeno lze použít i XML nebo JSON # nft export xml # nft export json Petr Krčmář (Root.cz) nftables 18. listopadu 2014 28 / 33

Monitoring událostí je možné monitorovat události v nftables sledovat objekty (tables, chains, rules, sets, elements) nebo jejich změny (new, destroy) výstup v XML nebo JSON # nft monitor # nft monitor rules # nft monitor new # nft monitor new rules xml Petr Krčmář (Root.cz) nftables 18. listopadu 2014 29 / 33

Mazání všeho možného řetězec lze smazat, pokud v něm nejsou pravidla tabulku lze smazat, pokud v ní nejsou řetězce pro mazání pravidel je třeba si vypsat jejich čísla mazání jako v iptables není možné, je v plánu # nft list table filter -a # nft delete rule filter input handle 11 kompletní vyprázdnení tabulky vymazání řetězců vymazání tabulky # nft flush table filter # nft delete chain ip filter input # nft delete chain ip filter output # nft delete chain ip filter forward # nft delete table filter Petr Krčmář (Root.cz) nftables 18. listopadu 2014 30 / 33

Kompatibilita s IPtables pro hladký přechod existuje vrstva kompatibility je možné přímo použít pravidla pro IPtables hodně vývojové stádium, je v tom dost zmatek https://git.netfilter.org/iptables/ utilita iptables-compat v plánu je konverzní utilita Petr Krčmář (Root.cz) nftables 18. listopadu 2014 31 / 33

Výkon autor už v roce 2008 dělal benchmarky výsledky srovnatelné s IPtables prostor pro optimalizace používají se binární stromy optimalizované datové struktury mnoho věcí je možné sloučit testy se neopakují, vícenásobné akce nftables mají desetkrát méně kódu teoreticky to může být i výkonnější Petr Krčmář (Root.cz) nftables 18. listopadu 2014 32 / 33

Otázky? Otázky? Petr Krčmář petr.krcmar@iinfo.cz Petr Krčmář (Root.cz) nftables 18. listopadu 2014 33 / 33