NFTables Wieso, Weshalb, Warum



Ähnliche Dokumente
Firewalls mit Iptables

Firewall Implementierung unter Mac OS X

Firewalling. Michael Mayer IAV0608 Seite 1 von 6

nftables Der neue Paketfilter im Linux-Kernel

Grundlagen Firewall und NAT

Ein Paketfilter. netfilter/iptables. Bernd Kohler. 19. September UMIC Research Centre RWTH Aachen

Internet Security 2009W Protokoll Firewall

Linux Netfilter/iptables

Netzwerk Teil 2 Linux-Kurs der Unix-AG

IPTables und Tripwire

Bridgefirewall eine transparente Lösung. Thomas Röhl 08. April 2005

Intrusion Prevention mit IPTables. Secure Linux Administration Conference, 6. / 7. Dec Dr. Michael Schwartzkopff. iptables_recent, SLAC 2007 / 1

Einsatz des flypaper-dämons zur effektiven Abwehr von Portscan-Angriffen

MultiNET Services GmbH. iptables. Fachhochschule München, Dr. Michael Schwartzkopff, MultiNET Services GmbH

mit ssh auf Router connecten

Firewall Lösungen mit Linux Kurs 1004

Firewalling mit iptables Die Netfilter-Architektur. Seminar Betriebssytemadministration SS 2009

NAT und Firewalls. Jörn Stuphorn Universität Bielefeld Technische Fakultät

Iptables & NAT. R. Mutschler, inf

Das Netzwerk von Docker. Java Stammtisch Goettingen

Uni-Firewall. Absicherung des Überganges vom Hochschulnetz zum Internet am Wingate (Helmut Celina)

Packet Filters - iptables

Eine hochverfügbare Firewall mit Linux-HA, iptables und fwbuilder

Lexware professional und premium setzen bis einschließlich Version 2012 den Sybase SQL-Datenbankserver

Sieb im Netz Das Netfilter Framework

Was meinen die Leute eigentlich mit: Grexit?

Inhalt. Erreichbarkeit von VPN-Gateways hinter einem Genexis FTTH-Abschlussrouter

Sicherheit unter Linux Workshop

Folgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert:

Evaluierung der Layer-7-Inspection Möglichkeiten von IPtables. Christoph Singer 22. Oktober 2007

Zwischenbericht Diplomarbeit Implementierung von Routing-Algorithmen für das DES-Testbed

Konfigurationsanleitung Access Control Lists (ACL) Funkwerk. Copyright Stefan Dahler Oktober 2008 Version 1.0.

ALP I. Funktionale Programmierung


LVM und ZFS reloaded

RUB-Netzbetreuertreffen RIPE IPv6 PIP OpenVPN WLAN Robin Schröder RUB-NOC

visionapp Base Installation Packages (vbip) Update

Scharl 2010 Dokument ist Urheberrechtlich geschützt. Port Forwarding via PuTTY und SSH. Was ist Port forwarding?

Grundkurs Routing im Internet mit Übungen

Technical Note ewon über DSL & VPN mit einander verbinden

Korrekturen von Hand ausgeführt, per Post oder als Scan an Sie übermittelt.

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

HOWTO Update von MRG1 auf MRG2 bei gleichzeitigem Update auf Magento CE 1.4 / Magento EE 1.8

Konfigurationsbeispiel ZyWALL USG

Artikel Schnittstelle über CSV

Eine hochverfügbare Firewall mit iptables und fwbuilder. Secure Linux Administration Conference, 11. Dec 2008

Nach Ihrer erstmaligen Anmeldung sollten Sie Ihr Passwort ändern. Dazu klicken Sie bitte auf Ihren Namen.

ft6-testergebnisse der Juniper J2320

HBF IT-Systeme. BBU-BSK Übung 2 Stand:

Mit der RoeTest-Software können Barcodes wie folgt erstellt werden:

4D Server v12 64-bit Version BETA VERSION

Anytun - Secure Anycast Tunneling

Thema IPv6. Geschichte von IPv6

Vortrag Netz- und Service-Infrastrukturen

Adami CRM - Outlook Replikation User Dokumentation

Multicast Security Group Key Management Architecture (MSEC GKMArch)

Elmeg IP290 Einrichtungsdokumentation. (Stand: Mai 2012) - DIE TELEFONANLAGE AUS DER CLOUD

IPv6: The additional IP Protocol

Web Interface für Anwender

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel.

Generating Fingerprints of Network Servers and their Use in Honeypots. Thomas Apel

Comtarsia SignOn Familie

Software zur Anbindung Ihrer Maschinen über Wireless- (GPRS/EDGE) und Breitbandanbindungen (DSL, LAN)

Network Intrusion Detection mit Snort. (Nachtrag zu 9.2.2, Seite 33)

Wochenbericht. Firas Zoabi. Studienprojekt A: SIMPL. 28. Dezember 2009 I M P

ICMP Internet Control Message Protocol. Michael Ziegler

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus:

Grundlagen von Python

Outlook 2010 Automatische Antworten einrichten

Reservierungs-Assistent

GeoPilot (Android) die App

FOPT 5: Eigenständige Client-Server-Anwendungen (Programmierung verteilter Anwendungen in Java 1)

Registrierung eines VPN-Zuganges ins Hamnet

Kommunikation. Sitzung /11. Dezember 2015

Es gibt zwei Wege die elektronischen Daten aus Navision zu exportieren.

Google ist mehr als eine Suchmaschine

EchoLink und Windows XP SP2

Übung - Arbeiten mit Android

Kleines Handbuch zur Fotogalerie der Pixel AG

Onlinesuche nach Rechnungen

:: Anleitung Hosting Server 1cloud.ch ::

How-to: Webserver NAT. Securepoint Security System Version 2007nx

Wir machen neue Politik für Baden-Württemberg

Netzwerke 3 Praktikum

Übersicht. Generierung von IPv6-Paketen mit Scapy. Scapy GUI - Kurzvorstellung. Szameitpreiks - Beuth Hochschule für Technik Berlin

Zehn SSH Tricks. Julius Plen z

Kurzanleitung zur Softwareverteilung von BitDefender Produkten...2

Wie macht man einen Web- oder FTP-Server im lokalen Netzwerk für das Internet sichtbar?

SolarWinds Engineer s Toolset

Prozessbewertung und -verbesserung nach ITIL im Kontext des betrieblichen Informationsmanagements. von Stephanie Wilke am

DIE ALCHEMISTEN WAREN GETRIEBEN VON DEM GEDANKEN, AUS STOFFLICHEM GOLD ZU GEWINNEN UND SIND DAMIT GESCHEITERT. TROI IST DER ALCHEMIST DER ZUKUNFT,

Mail-Weiterleitung unter WebAccess

msm net ingenieurbüro meissner kompetent - kreativ - innovativ

TemplaVoila T3AK07 - TYPO3 Akademie 2.0

Professionelle Seminare im Bereich MS-Office

Erfahrungen mit Hartz IV- Empfängern

Benutzeranleitung Kontoverwaltung

Transkript:

Der neue Linux-Paketfilter fw@strlen.de 13. April 2014

Agenda 1 Begriffsdefinitionen/-abgrenzungen 2 Übersicht netfilter-architektur kernel-hooks Architektur/Funktionsweise Probleme und wünschenswerte Funktionen 3 Aufbau/Funktionsweise Beispiele und Ausblick

Begriffsdefinitionen skb: socketbuffer, Kernel-Datenstruktur, repräsentiert ein Paket, ip6tables, arptables, ebtables Benutzerprogramme Kernelseitige Implementierung NICHT: connection tracking, NAT netfilter: Alles kernel: net/netfilter/, net/ipv4/netfilter,... Benutzerprogramme:, nft, ulogd, conntrack tools : Neuer Paketfilter

Hooks Zusammenfassung Netfilter (1) Hooks: Stellen im Kernel, an dem Paketverarbeitung beeinflusst werden kann, z.b. eingehende lokale Pakete: return NF_HOOK(NFPROTO_IPV4, NF_INET_LOCAL_IN, skb, skb->dev, NULL, ip_local_deliver_finish); Falls kein support: expandiert zu: return ip_local_deliver_finish(skb);

Hooks Zusammenfassung Netfilter (2) PREROUTING Routing FORWARDING POSTROUTING INPUT OUTPUT Lokaler Prozess

Hooks Zusammenfassung Netfilter Hooks struct nf_hook_ops ipv4_conntrack_ops[] = { {.hook = ipv4_conntrack_in,.pf = NFPROTO_IPV4,.hooknum = NF_INET_PRE_ROUTING,.priority = NF_IP_PRI_CONNTRACK, }, { [..] Wenn z.b. ipv4-conntrack-modul geladen wird: ret = nf_register_hooks(ipv4_conntrack_ops, ARRAY_SIZE(ipv4_conntrack_ops));

Hooks Zusammenfassung Hook-Entscheidungen Rückgabewert entscheidet was passiert ACCEPT (okfn wird ausgeführt, weiter im Stack ) DROP (skb wird weggerworfen) QUEUE (paket an userspace weiterleiten) REPEAT (nochmal) STOLEN (Schwarze Magie)

Hooks Zusammenfassung Zusammenfassung Bewährtes Konzept: besteht seit Linux 2.4 ändert sich auch mit nicht auch Connection-Tracking und NAT bleiben erhalten ersetzt: Kernel: Repräsentation und Evaluierung von Paketfilterregeln Userspace:, ip6tables, arptables, ebtables Wieso?

Architektur : Probleme Wishlist Funktionsweise Userspace -t filter -A INPUT -p tcp --dport 22 -j ACCEPT 1 Userspace parst Optionen, konvertiert in binär-format 2... holt alle Regeln aus dem Kernel (Binärblob, getsockopt) 3 Regel wird in Binärblob eingefügt 4 Userspace schiebt Gesamtblob zurück (setsockopt) 5 Kernel tauscht blobs aus 6 Tables sind kleinste Einheit Binärblob: Array aus structs

Architektur : Probleme Wishlist : Funktionsweise (2) -A INPUT -m conntrack --state NEW \ -m limit --limit 1/min -j NFLOG match: ja/nein Entscheidung, von-links-nach-rechts Target macht etwas mit dem Paket (terminal oder non-terminal) Funktionalität über Module (matches, targets) Erweiterbar 1:1 mapping von Targets und Matches zwischen User- und Kernelspace xt_bla.ko vs. libxt_bla.so eigentliche Funktionalität nur im Kernel

Architektur : Probleme Wishlist : Funktionsweise (3) Lineare Evaluation von Regeln: -A INPUT -p tcp --dport 22... -A INPUT -p tcp --dport 80... -A INPUT -s 10.0.0.0/8 -p tcp --dport 443... -A INPUT -s 10.0.0.0/8 -p udp --dport 53... Teuer Verschiedene Workarounds, z.b. -m multiport, ipset alle nicht perfekt Händische Optimierung: Common Case zuerst

Architektur : Probleme Wishlist Probleme zusammengefasst Änderungen sind nicht atomar (dump/modify/restore) nur ein Target pro Regel: LOG+DROP? helper-chain Kernel weiss nicht, was sich am Regelset geändert hat Userspace weiss nicht, was das Regelset überhaupt tut

Architektur : Probleme Wishlist Hinter der Kulissen... 4-fache Code-Duplikation für ip,ip6,eb,arptables ebtables == 12 Jahre altes CONFIG_COMPAT über die Zeit viele Erweiterungen: multiport, ipset, HMARK, -m ipcomp, -m bpf... viele Funktionsüberschneidungen/Copy-Paste-Programmierung: ah, esp, ipcomp, dccp,... magic tables: mangle OUTPUT chain rerouting, CT --untracked, etc.

Architektur : Probleme Wishlist Wishlist 1 mehrere Targets in einer Regel 2 besseres Filtering: nicht bloss -s 10.0.0.0/8 -s 10.0.0.11-10.0.0.24 -d {blacklist} 3 Automatische Optimierung von Regeln 4 Dead-Rule Erkennung/Entfernung 5 Sets mit Sprung-Support, switch ($saddr) { case 1.2.3.4:... } 6 -Äquivalent zu ip monitor & co. 7 Bibliothek/Schnittstelle für Anwendungen... und weniger Code im Kernel

Architekturelle Unterschiede Userspace-Architektur Beispiele alle Protokollspezifischen Unterschiede im Userspace nft-kommandozeilenprogramm generiert (Pseudo-)Code Kernel: Interpreter/Virtuelle Maschine Tables beinhalten chains, chains beinhalten Regeln Regeln bestehen aus Expressions Schwerpunkt: Effiziente Datenstrukturen

Architekturelle Unterschiede Userspace-Architektur Beispiele - Kernel-seite (1) momentan 4 128bit GP-Register 1 Verdict-Register struct nft_data { union { u32 data[4]; struct { u32 verdict; struct nft_chain *chain; }; }; } attribute ((aligned( alignof (u64))));

Architekturelle Unterschiede Userspace-Architektur Beispiele - Kernel-seite (2) match/target nft expression Grundlegende Expressions sind: immediate ( 42 ) payload ( X byte ab offset Y nach Register R ) cmp ( >, <, =,!=) Bit-Operationen Weitere Expressions (Auswahl): counter meta (mark, iif/oif,..) lookup

Architekturelle Unterschiede Userspace-Architektur Beispiele Funktionsweise Userspace nft add rule filter input tcp dport 22 accept 1 Userspace parst Regel(n)/Grammatik Optionen bzw. Extensions wie in gibt es nicht 2 wird in Expressions übersetzt 3 diese werden in netlink-attribute serialisiert und an Kernel gesendet 4 Kernel validiert netlink-attribute, übersetzt in Kernel-Format [ payload load 1b @ network header + 9 => reg 1 ] [ cmp eq reg 1 0x00000006 ] [ payload load 2b @ transport header + 2 => reg 1 ] [ cmp eq reg 1 0x00001600 ] [ immediate reg 0 accept ]

Architekturelle Unterschiede Userspace-Architektur Beispiele nft - Unterschiede Keine festen Tables mehr: #!/bin/nft -f table filter { chain input { type filter hook input priority 0; } chain forward { type filter hook forward priority 0; } chain output { type filter hook output priority 0; } } table mangle { chain output { type route hook output priority -150; } } table bridge blablubb {...

Architekturelle Unterschiede Userspace-Architektur Beispiele nft - Unterschiede (2) Regel-Ersetzung ist stets atomar sehr viel flexibler als, z.b. add rule ip mangle prerouting ip daddr \ 192.168.7.1 meta mark set (ip saddr & 0xff) [ payload load 4b @ network header + 16 => reg 1 ] [ cmp eq reg 1 0x0107a8c0 ] [ payload load 4b @ network header + 12 => reg 1 ] [ bitwise reg 1 = (reg=1 & 0xff000000 ) ^ 0x00000000 ] [ meta set mark with reg 1 ]

Architekturelle Unterschiede Userspace-Architektur Beispiele nft - Unterschiede (3) viele Expression-Kombionationen möglich nft add rule filter forward tcp flags syn,fin \ counter log prefix synfin drop [ payload load 1b @ network header + 9 => reg 1 ] [ cmp eq reg 1 0x00000006 ] [ payload load 1b @ transport header + 13 => reg 1 ] [ bitwise reg 1 = (reg=1 & 0x00000003 ) ^ 0x00000000 ] [ cmp neq reg 1 0x00000000 ] [ counter pkts 0 bytes 0 ] [ log prefix synfin group 0 snaplen 0 qthreshold 0 ] [ immediate reg 0 drop ]

Architekturelle Unterschiede Userspace-Architektur Beispiele Sets und Set-Concatenations beliebig viele Elemente in einer Regel effizienter Lookup in hash/tree ip saddr { 192.168.7.1, 192.168.10.2,.. } [ payload load 4b @ network header + 12 => reg 1 ] [ lookup reg 1 set set0 ] optional: keys können mit. verbundenen werden add rule ip filter output ip daddr. tcp dport { 192.168.0.1. 22, 192.168.0.1. 80, }

Architekturelle Unterschiede Userspace-Architektur Beispiele Verdict-Maps Sprungtabellen/Verzweigungen add filter input ip saddr vmap { 8.8.8.8 : accept, 192.168.0.0/16 : drop, 10.0.0.0/24 : jump chain1, 10.0.0.0/8 : jump chain2, }

Architekturelle Unterschiede Userspace-Architektur Beispiele TODO (noch) nicht feature-complete fehlender Set-support für conntrack-attribute (ausser ctmark) fehlende -Erweiterungen, z.b TCPMSS, hashlimit, ipsec policy matching... route-lookup Expression generischer Paket-Editor nft für socket-filter oder für QoS-Entscheidungen (tc Ersatz) kein Filtering auf Elemente < 1 byte (z.b. iphdrlen) Dokumentation ausbaufähig high-level Programmierschnittstelle für Drittanwendungen

Grundfunktionen(filtering, sets) sind nutzbar wird noch weiterentwickelt, auch inkompatible Änderungen denkbar trotz aller Probleme enormer Erfolg... bleibt noch mehrere Jahre erhalten