nftables Der neue Paketfilter im Linux-Kernel



Ähnliche Dokumente
Dynamische Änderung von Ressourcen in OpenStack

Btfs das Dateisystem der Zukunft?

owncloud Unternehmensdaten sicher in eigener Hand

Ausrollen von Multi-Tier-Applikationen mit Docker

SDN mit OpenStack Neutron & Arista EOS

Migration einer bestehenden Umgebung in eine private Cloud mit OpenStack

Firewall Implementierung unter Mac OS X

Systemmanagement mit Puppet und Foreman

Linux Kernel Live Patching mit kpatch und kgraft

OpenStack bei der SAP SE

Firewalling. Michael Mayer IAV0608 Seite 1 von 6

NFTables Wieso, Weshalb, Warum

Grundlagen Firewall und NAT

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

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

Internet Security 2009W Protokoll Firewall

Firewalls mit Iptables

Netzwerk Teil 2 Linux-Kurs der Unix-AG

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

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

Private IaaS Cloud mit OpenStack. Sebastian Zielenski Linux/Unix Consultant & Trainer B1 Systems GmbH zielenski@b1-systems.de

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

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

MongoDB Big Data mit Open Source

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

Security. Stefan Dahler. 4. Internet Verbindung. 4.1 Einleitung

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

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

Konfigurationsbeispiel ZyWALL USG

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

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Praktikum IT-Sicherheit. Firewall

Sicherheit unter Linux Workshop

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

Zugriffssteuerung - Access Control

Anleitung zur Einrichtung von Outbound und Inbound Filtern Für DWR-512 (Stand August 2012)

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

Step by Step Webserver unter Windows Server von Christian Bartl

Installation des COM Port Redirectors

Ether S-Net Diagnostik

8. Bintec Router Redundancy Protocol (BRRP) 8.1 Einleitung

MailUtilities: Remote Deployment - Einführung

Systemmanagement mit Puppet und Foreman

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein:

SMART Newsletter Education Solutions April 2015

Kontrollfragen Firewalltypen

Zugriffssteuerung - Access Control

B1 Systems GmbH - Linux/Open Source Consulting, Training, Support & Development

Systemmanagement mit Puppet und Foreman

FastViewer Remote Edition 2.X

NAS 224 Externer Zugang manuelle Konfiguration

Proxy Server als zentrale Kontrollinstanz. Michael Buth IT Berater. web: mail:

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

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein:

Anlegen eines SendAs/RecieveAs Benutzer unter Exchange 2003, 2007 und 2010

Hochverfügbare Virtualisierung mit Open Source

Systemmanagement mit Puppet und Foreman

Einführung in Firewall-Regeln 1

Um DynDNS zu konfigurieren, muss ausschließlich folgendes Menü konfiguriert werden:

Bedienungsanleitung. Matthias Haasler. Version 0.4. für die Arbeit mit der Gemeinde-Homepage der Paulus-Kirchengemeinde Tempelhof

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

PC-Kaufmann Supportinformation - Proxy Konfiguration für Elster

Konfigurationsanleitung Quality of Service (QoS) Funkwerk. Copyright Stefan Dahler Oktober 2008 Version 1.1.

Konfigurationsanleitung Network Address Translation (NAT) Funkwerk. Seite Copyright Stefan Dahler Oktober 2008 Version 1.

Anbindung des eibport an das Internet

Kapsch Carrier Solutions GmbH Service & Support Helpdesk

Netzwerke 3 Praktikum

Technical Note 0302 ewon

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

Technical Note ewon über DSL & VPN mit einander verbinden

Avira Server Security Produktupdates. Best Practice

FAQ IMAP (Internet Message Access Protocol)

Tutorial -

Seite Out-Of-Band-Authentifizierung (OOBA) 8.1 Einleitung

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

Lokale Installation von DotNetNuke 4 ohne IIS

Protokollbeschreibung Modbus TCP für EMU TCP/IP Modul

Leichte-Sprache-Bilder

mit ssh auf Router connecten

1 Mit einem Convision Videoserver über DSL oder ISDN Router ins Internet

DCS-3110 EVENT SETUP

Firewalls für Lexware Info Service konfigurieren

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Konfiguration von Fabasoft Mindbreeze Enterprise für IBM Lotus

Firewalls für Lexware Info Service konfigurieren

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

SAP NetWeaver Gateway. 2013

Konfiguration von Exchange 2000 zum versenden und empfangen von Mails & Lösung des SEND after POP Problems

Walther- Übungsaufgabe 24. Januar 2016 Rathenau- Routing Name: Gewerbeschule Freiburg DHCP Klasse: E3FI1T Seite 1 Punkte: /20 Note:

Aufruf der Weboberflache des HPM- Warmepumpenmanagers aus dem Internet TIPPS

Virtual System Cluster: Freie Wahl mit Open Source

ACCOUNTS. Wer ist marken mehrwert und was passiert mit den Daten? Wozu brauche ich einen Account bei marken mehrwert?

e-books aus der EBL-Datenbank

Angaben zu einem Kontakt...1 So können Sie einen Kontakt erfassen...4 Was Sie mit einem Kontakt tun können...7

Universität Zürich Informatikdienste. SpamAssassin. Spam Assassin Go Koordinatorenmeeting 27. April

Guide DynDNS und Portforwarding

Transkript:

Linux-Kernel CLT 2014 15. März 2014 Michael Steinfurth Linux/Unix Consultant & Trainer steinfurth@b1-systems.de - Linux/Open Source Consulting, Training, Support & Development

Agenda Vorstellung B1 Systems nftables Einführung Funktionsweise Was kann nftables? Beispiel Praxis Linux-Kernel 2 / 34

Vorstellung B1 Systems gegründet 2004 primär Linux/Open Source-Themen national & international tätig über 60 Mitarbeiter unabhängig von Soft- und Hardware-Herstellern Leistungsangebot: Beratung & Consulting Support Entwicklung Training Betrieb Lösungen dezentrale Strukturen Linux-Kernel 3 / 34

Schwerpunkte Virtualisierung (XEN, KVM & RHEV) Systemmanagement (Spacewalk, Red Hat Satellite, SUSE Manager) Konfigurationsmanagement (Puppet & Chef) Monitoring (Nagios & Icinga) IaaS Cloud (OpenStack & SUSE Cloud) Hochverfügbarkeit (Pacemaker) Shared Storage (GPFS, OCFS2, DRBD & CEPH) Dateiaustausch (owncloud) Paketierung (Open Build Service) Administratoren oder Entwickler zur Unterstützung des Teams vor Ort Linux-Kernel 4 / 34

nftables Einführung Linux-Kernel 5 / 34

Was ist nftables? moderner Paketfilter im Linux-Kernel das Programm im Nutzerbereich (User Space) zustandsgesteuert keine Veränderung am Netfilter- & Connection-Tracking-System iptables-ersatz? Linux-Kernel 6 / 34

Was ist nftables? moderner Paketfilter im Linux-Kernel das Programm im Nutzerbereich (User Space) zustandsgesteuert keine Veränderung am Netfilter- & Connection-Tracking-System iptables-ersatz? Linux-Kernel 6 / 34

Was ist nftables? moderner Paketfilter im Linux-Kernel das Programm im Nutzerbereich (User Space) zustandsgesteuert keine Veränderung am Netfilter- & Connection-Tracking-System iptables-ersatz? Linux-Kernel 6 / 34

Was ist nftables? moderner Paketfilter im Linux-Kernel das Programm im Nutzerbereich (User Space) zustandsgesteuert keine Veränderung am Netfilter- & Connection-Tracking-System iptables-ersatz? Linux-Kernel 6 / 34

Was ist nftables? moderner Paketfilter im Linux-Kernel das Programm im Nutzerbereich (User Space) zustandsgesteuert keine Veränderung am Netfilter- & Connection-Tracking-System iptables-ersatz? Linux-Kernel 6 / 34

Was ist nftables? moderner Paketfilter im Linux-Kernel das Programm im Nutzerbereich (User Space) zustandsgesteuert keine Veränderung am Netfilter- & Connection-Tracking-System iptables-ersatz? Ja! wenn ausgereift und stabil Linux-Kernel 6 / 34

Geschichte NFWS 2008: P. McHardy Nftables: an iptables rewrite 18. März 2009: Linux-netdev First release of nftables Kommentar am 20. März 2010: in Arbeit Stillstand bis 2012 die Firma Astaro sponsort Weiterentwicklung Aufnahmeantrag in den Hauptentwicklungszweig 19. Januar Release 3.13 Einzug in den Linux-Kernel Linux-Kernel 7 / 34

Geschichte NFWS 2008: P. McHardy Nftables: an iptables rewrite 18. März 2009: Linux-netdev First release of nftables Kommentar am 20. März 2010: in Arbeit Stillstand bis 2012 die Firma Astaro sponsort Weiterentwicklung Aufnahmeantrag in den Hauptentwicklungszweig 19. Januar Release 3.13 Einzug in den Linux-Kernel Linux-Kernel 7 / 34

Geschichte NFWS 2008: P. McHardy Nftables: an iptables rewrite 18. März 2009: Linux-netdev First release of nftables Kommentar am 20. März 2010: in Arbeit Stillstand bis 2012 die Firma Astaro sponsort Weiterentwicklung Aufnahmeantrag in den Hauptentwicklungszweig 19. Januar Release 3.13 Einzug in den Linux-Kernel Linux-Kernel 7 / 34

Geschichte NFWS 2008: P. McHardy Nftables: an iptables rewrite 18. März 2009: Linux-netdev First release of nftables Kommentar am 20. März 2010: in Arbeit Stillstand bis 2012 die Firma Astaro sponsort Weiterentwicklung Aufnahmeantrag in den Hauptentwicklungszweig 19. Januar Release 3.13 Einzug in den Linux-Kernel Linux-Kernel 7 / 34

Geschichte NFWS 2008: P. McHardy Nftables: an iptables rewrite 18. März 2009: Linux-netdev First release of nftables Kommentar am 20. März 2010: in Arbeit Stillstand bis 2012 die Firma Astaro sponsort Weiterentwicklung Aufnahmeantrag in den Hauptentwicklungszweig 19. Januar Release 3.13 Einzug in den Linux-Kernel Linux-Kernel 7 / 34

Geschichte NFWS 2008: P. McHardy Nftables: an iptables rewrite 18. März 2009: Linux-netdev First release of nftables Kommentar am 20. März 2010: in Arbeit Stillstand bis 2012 die Firma Astaro sponsort Weiterentwicklung Aufnahmeantrag in den Hauptentwicklungszweig 19. Januar Release 3.13 Einzug in den Linux-Kernel Linux-Kernel 7 / 34

Geschichte NFWS 2008: P. McHardy Nftables: an iptables rewrite 18. März 2009: Linux-netdev First release of nftables Kommentar am 20. März 2010: in Arbeit Stillstand bis 2012 die Firma Astaro sponsort Weiterentwicklung Aufnahmeantrag in den Hauptentwicklungszweig 19. Januar Release 3.13 Einzug in den Linux-Kernel Linux-Kernel 7 / 34

Warum nftables und nicht mehr iptables? bisher: Binäraustausch bei Regeländerungen nicht inkrementell, kompletter Regelsatz Kommunikation mit Kernel über raw Sockets je mehr Regeln, desto höhere Austauschzeit Erweiterungen im Userspace & Kernelspace pro Funktion einmal im Kernel und einmal im Userspace Erweiterungen zweifacher Entwicklungsaufwand mehrere Erweiterungen pro Anfrage mehr Leistungsanforderungen keine offizielle Bilbiothek redundanter Quelltext unter verschiedenen Modulen Linux-Kernel 8 / 34

Warum nftables und nicht mehr iptables? bisher: Binäraustausch bei Regeländerungen nicht inkrementell, kompletter Regelsatz Kommunikation mit Kernel über raw Sockets je mehr Regeln, desto höhere Austauschzeit Erweiterungen im Userspace & Kernelspace pro Funktion einmal im Kernel und einmal im Userspace Erweiterungen zweifacher Entwicklungsaufwand mehrere Erweiterungen pro Anfrage mehr Leistungsanforderungen keine offizielle Bilbiothek redundanter Quelltext unter verschiedenen Modulen Linux-Kernel 8 / 34

Warum nftables und nicht mehr iptables? bisher: Binäraustausch bei Regeländerungen nicht inkrementell, kompletter Regelsatz Kommunikation mit Kernel über raw Sockets je mehr Regeln, desto höhere Austauschzeit Erweiterungen im Userspace & Kernelspace pro Funktion einmal im Kernel und einmal im Userspace Erweiterungen zweifacher Entwicklungsaufwand mehrere Erweiterungen pro Anfrage mehr Leistungsanforderungen keine offizielle Bilbiothek redundanter Quelltext unter verschiedenen Modulen Linux-Kernel 8 / 34

Warum nftables und nicht mehr iptables? bisher: Binäraustausch bei Regeländerungen nicht inkrementell, kompletter Regelsatz Kommunikation mit Kernel über raw Sockets je mehr Regeln, desto höhere Austauschzeit Erweiterungen im Userspace & Kernelspace pro Funktion einmal im Kernel und einmal im Userspace Erweiterungen zweifacher Entwicklungsaufwand mehrere Erweiterungen pro Anfrage mehr Leistungsanforderungen keine offizielle Bilbiothek redundanter Quelltext unter verschiedenen Modulen Linux-Kernel 8 / 34

Warum nftables und nicht mehr iptables? bisher: Binäraustausch bei Regeländerungen nicht inkrementell, kompletter Regelsatz Kommunikation mit Kernel über raw Sockets je mehr Regeln, desto höhere Austauschzeit Erweiterungen im Userspace & Kernelspace pro Funktion einmal im Kernel und einmal im Userspace Erweiterungen zweifacher Entwicklungsaufwand mehrere Erweiterungen pro Anfrage mehr Leistungsanforderungen keine offizielle Bilbiothek redundanter Quelltext unter verschiedenen Modulen Linux-Kernel 8 / 34

Warum nftables und nicht mehr iptables? bisher: Binäraustausch bei Regeländerungen nicht inkrementell, kompletter Regelsatz Kommunikation mit Kernel über raw Sockets je mehr Regeln, desto höhere Austauschzeit Erweiterungen im Userspace & Kernelspace pro Funktion einmal im Kernel und einmal im Userspace Erweiterungen zweifacher Entwicklungsaufwand mehrere Erweiterungen pro Anfrage mehr Leistungsanforderungen keine offizielle Bilbiothek redundanter Quelltext unter verschiedenen Modulen Linux-Kernel 8 / 34

Warum nftables und nicht mehr iptables? bisher: Binäraustausch bei Regeländerungen nicht inkrementell, kompletter Regelsatz Kommunikation mit Kernel über raw Sockets je mehr Regeln, desto höhere Austauschzeit Erweiterungen im Userspace & Kernelspace pro Funktion einmal im Kernel und einmal im Userspace Erweiterungen zweifacher Entwicklungsaufwand mehrere Erweiterungen pro Anfrage mehr Leistungsanforderungen keine offizielle Bilbiothek redundanter Quelltext unter verschiedenen Modulen Linux-Kernel 8 / 34

Warum nftables und nicht mehr iptables? bisher: Binäraustausch bei Regeländerungen nicht inkrementell, kompletter Regelsatz Kommunikation mit Kernel über raw Sockets je mehr Regeln, desto höhere Austauschzeit Erweiterungen im Userspace & Kernelspace pro Funktion einmal im Kernel und einmal im Userspace Erweiterungen zweifacher Entwicklungsaufwand mehrere Erweiterungen pro Anfrage mehr Leistungsanforderungen keine offizielle Bilbiothek redundanter Quelltext unter verschiedenen Modulen Linux-Kernel 8 / 34

Warum nftables und nicht mehr iptables? bisher: Binäraustausch bei Regeländerungen nicht inkrementell, kompletter Regelsatz Kommunikation mit Kernel über raw Sockets je mehr Regeln, desto höhere Austauschzeit Erweiterungen im Userspace & Kernelspace pro Funktion einmal im Kernel und einmal im Userspace Erweiterungen zweifacher Entwicklungsaufwand mehrere Erweiterungen pro Anfrage mehr Leistungsanforderungen keine offizielle Bilbiothek redundanter Quelltext unter verschiedenen Modulen Linux-Kernel 8 / 34

Warum nftables und nicht mehr iptables? bisher: Binäraustausch bei Regeländerungen nicht inkrementell, kompletter Regelsatz Kommunikation mit Kernel über raw Sockets je mehr Regeln, desto höhere Austauschzeit Erweiterungen im Userspace & Kernelspace pro Funktion einmal im Kernel und einmal im Userspace Erweiterungen zweifacher Entwicklungsaufwand mehrere Erweiterungen pro Anfrage mehr Leistungsanforderungen keine offizielle Bilbiothek redundanter Quelltext unter verschiedenen Modulen Linux-Kernel 8 / 34

Warum nftables und nicht mehr iptables? bisher: Binäraustausch bei Regeländerungen nicht inkrementell, kompletter Regelsatz Kommunikation mit Kernel über raw Sockets je mehr Regeln, desto höhere Austauschzeit Erweiterungen im Userspace & Kernelspace pro Funktion einmal im Kernel und einmal im Userspace Erweiterungen zweifacher Entwicklungsaufwand mehrere Erweiterungen pro Anfrage mehr Leistungsanforderungen keine offizielle Bilbiothek redundanter Quelltext unter verschiedenen Modulen Linux-Kernel 8 / 34

Warum nftables und nicht mehr iptables? leichte Leistungseinbußen auch ohne Regeln geladene Module verbunden mit Netfilter eigene Programme für unterschiedliche Protokollebenen ebtables, arptables, iptables, ip6tables schwierig in modernen Netzen verschiedene IP-Adressen aus verschiedenen Bereichen 1-zu-1 Beschränkungen viele Regeln ungünstig für wechselnde virtuelle Maschinen (Cloud) Linux-Kernel 9 / 34

Warum nftables und nicht mehr iptables? leichte Leistungseinbußen auch ohne Regeln geladene Module verbunden mit Netfilter eigene Programme für unterschiedliche Protokollebenen ebtables, arptables, iptables, ip6tables schwierig in modernen Netzen verschiedene IP-Adressen aus verschiedenen Bereichen 1-zu-1 Beschränkungen viele Regeln ungünstig für wechselnde virtuelle Maschinen (Cloud) Linux-Kernel 9 / 34

Warum nftables und nicht mehr iptables? leichte Leistungseinbußen auch ohne Regeln geladene Module verbunden mit Netfilter eigene Programme für unterschiedliche Protokollebenen ebtables, arptables, iptables, ip6tables schwierig in modernen Netzen verschiedene IP-Adressen aus verschiedenen Bereichen 1-zu-1 Beschränkungen viele Regeln ungünstig für wechselnde virtuelle Maschinen (Cloud) Linux-Kernel 9 / 34

Warum nftables und nicht mehr iptables? leichte Leistungseinbußen auch ohne Regeln geladene Module verbunden mit Netfilter eigene Programme für unterschiedliche Protokollebenen ebtables, arptables, iptables, ip6tables schwierig in modernen Netzen verschiedene IP-Adressen aus verschiedenen Bereichen 1-zu-1 Beschränkungen viele Regeln ungünstig für wechselnde virtuelle Maschinen (Cloud) Linux-Kernel 9 / 34

Warum nftables und nicht mehr iptables? leichte Leistungseinbußen auch ohne Regeln geladene Module verbunden mit Netfilter eigene Programme für unterschiedliche Protokollebenen ebtables, arptables, iptables, ip6tables schwierig in modernen Netzen verschiedene IP-Adressen aus verschiedenen Bereichen 1-zu-1 Beschränkungen viele Regeln ungünstig für wechselnde virtuelle Maschinen (Cloud) Linux-Kernel 9 / 34

Warum nftables und nicht mehr iptables? leichte Leistungseinbußen auch ohne Regeln geladene Module verbunden mit Netfilter eigene Programme für unterschiedliche Protokollebenen ebtables, arptables, iptables, ip6tables schwierig in modernen Netzen verschiedene IP-Adressen aus verschiedenen Bereichen 1-zu-1 Beschränkungen viele Regeln ungünstig für wechselnde virtuelle Maschinen (Cloud) Linux-Kernel 9 / 34

Warum nftables und nicht mehr iptables? leichte Leistungseinbußen auch ohne Regeln geladene Module verbunden mit Netfilter eigene Programme für unterschiedliche Protokollebenen ebtables, arptables, iptables, ip6tables schwierig in modernen Netzen verschiedene IP-Adressen aus verschiedenen Bereichen 1-zu-1 Beschränkungen viele Regeln ungünstig für wechselnde virtuelle Maschinen (Cloud) Linux-Kernel 9 / 34

Warum nftables und nicht mehr iptables? leichte Leistungseinbußen auch ohne Regeln geladene Module verbunden mit Netfilter eigene Programme für unterschiedliche Protokollebenen ebtables, arptables, iptables, ip6tables schwierig in modernen Netzen verschiedene IP-Adressen aus verschiedenen Bereichen 1-zu-1 Beschränkungen viele Regeln ungünstig für wechselnde virtuelle Maschinen (Cloud) Linux-Kernel 9 / 34

Warum nftables und nicht mehr iptables? leichte Leistungseinbußen auch ohne Regeln geladene Module verbunden mit Netfilter eigene Programme für unterschiedliche Protokollebenen ebtables, arptables, iptables, ip6tables schwierig in modernen Netzen verschiedene IP-Adressen aus verschiedenen Bereichen 1-zu-1 Beschränkungen viele Regeln ungünstig für wechselnde virtuelle Maschinen (Cloud) Linux-Kernel 9 / 34

Warum nftables und nicht mehr iptables? leichte Leistungseinbußen auch ohne Regeln geladene Module verbunden mit Netfilter eigene Programme für unterschiedliche Protokollebenen ebtables, arptables, iptables, ip6tables schwierig in modernen Netzen verschiedene IP-Adressen aus verschiedenen Bereichen 1-zu-1 Beschränkungen viele Regeln ungünstig für wechselnde virtuelle Maschinen (Cloud) Linux-Kernel 9 / 34

Funktionsweise Linux-Kernel 10 / 34

Übersicht Linux-Kernel 11 / 34

nft, das Administrationswerkzeug Beispiel nft # nft list table filter Administrator benutzt nft zur Steuerung im Kernel aktivieren, auslesen, konfigurieren, löschen Befehlszeilenprogramm mit Parametern Regeln ohne Optionsparameter (-o, --option) Optionen: [-i] interaktive [-f] von Datei lesen [-n] numerisch (mehrfach: nn, nnn) [-a] mehr Information (Regel- Handle ) Linux-Kernel 12 / 34

nft, das Administrationswerkzeug Beispiel nft # nft list table filter Administrator benutzt nft zur Steuerung im Kernel aktivieren, auslesen, konfigurieren, löschen Befehlszeilenprogramm mit Parametern Regeln ohne Optionsparameter (-o, --option) Optionen: [-i] interaktive [-f] von Datei lesen [-n] numerisch (mehrfach: nn, nnn) [-a] mehr Information (Regel- Handle ) Linux-Kernel 12 / 34

nft, das Administrationswerkzeug Beispiel nft # nft list table filter Administrator benutzt nft zur Steuerung im Kernel aktivieren, auslesen, konfigurieren, löschen Befehlszeilenprogramm mit Parametern Regeln ohne Optionsparameter (-o, --option) Optionen: [-i] interaktive [-f] von Datei lesen [-n] numerisch (mehrfach: nn, nnn) [-a] mehr Information (Regel- Handle ) Linux-Kernel 12 / 34

nft, das Administrationswerkzeug Beispiel nft # nft list table filter Administrator benutzt nft zur Steuerung im Kernel aktivieren, auslesen, konfigurieren, löschen Befehlszeilenprogramm mit Parametern Regeln ohne Optionsparameter (-o, --option) Optionen: [-i] interaktive [-f] von Datei lesen [-n] numerisch (mehrfach: nn, nnn) [-a] mehr Information (Regel- Handle ) Linux-Kernel 12 / 34

nft, das Administrationswerkzeug Beispiel nft # nft list table filter Administrator benutzt nft zur Steuerung im Kernel aktivieren, auslesen, konfigurieren, löschen Befehlszeilenprogramm mit Parametern Regeln ohne Optionsparameter (-o, --option) Optionen: [-i] interaktive [-f] von Datei lesen [-n] numerisch (mehrfach: nn, nnn) [-a] mehr Information (Regel- Handle ) Linux-Kernel 12 / 34

nft, das Administrationswerkzeug Beispiel nft # nft list table filter Administrator benutzt nft zur Steuerung im Kernel aktivieren, auslesen, konfigurieren, löschen Befehlszeilenprogramm mit Parametern Regeln ohne Optionsparameter (-o, --option) Optionen: [-i] interaktive [-f] von Datei lesen [-n] numerisch (mehrfach: nn, nnn) [-a] mehr Information (Regel- Handle ) Linux-Kernel 12 / 34

nft, das Administrationswerkzeug Beispiel nft # nft list table filter Administrator benutzt nft zur Steuerung im Kernel aktivieren, auslesen, konfigurieren, löschen Befehlszeilenprogramm mit Parametern Regeln ohne Optionsparameter (-o, --option) Optionen: [-i] interaktive [-f] von Datei lesen [-n] numerisch (mehrfach: nn, nnn) [-a] mehr Information (Regel- Handle ) Linux-Kernel 12 / 34

nft, das Administrationswerkzeug Beispiel nft # nft list table filter Administrator benutzt nft zur Steuerung im Kernel aktivieren, auslesen, konfigurieren, löschen Befehlszeilenprogramm mit Parametern Regeln ohne Optionsparameter (-o, --option) Optionen: [-i] interaktive [-f] von Datei lesen [-n] numerisch (mehrfach: nn, nnn) [-a] mehr Information (Regel- Handle ) Linux-Kernel 12 / 34

nft, das Administrationswerkzeug Beispiel nft # nft list table filter Administrator benutzt nft zur Steuerung im Kernel aktivieren, auslesen, konfigurieren, löschen Befehlszeilenprogramm mit Parametern Regeln ohne Optionsparameter (-o, --option) Optionen: [-i] interaktive [-f] von Datei lesen [-n] numerisch (mehrfach: nn, nnn) [-a] mehr Information (Regel- Handle ) Linux-Kernel 12 / 34

nft, das Administrationswerkzeug Grammatik mit Stichworten/Symbolen (token) Scanner erfasst TOKEN Zusammenarbeit mit einem Parser Umsetzung der kontext-freien Grammatik in Funktionen Scanner in flex geschrieben Parser in GNU bison Linux-Kernel 13 / 34

nft, das Administrationswerkzeug Grammatik mit Stichworten/Symbolen (token) Scanner erfasst TOKEN Zusammenarbeit mit einem Parser Umsetzung der kontext-freien Grammatik in Funktionen Scanner in flex geschrieben Parser in GNU bison Linux-Kernel 13 / 34

nft, das Administrationswerkzeug Grammatik mit Stichworten/Symbolen (token) Scanner erfasst TOKEN Zusammenarbeit mit einem Parser Umsetzung der kontext-freien Grammatik in Funktionen Scanner in flex geschrieben Parser in GNU bison Linux-Kernel 13 / 34

nft, das Administrationswerkzeug Grammatik mit Stichworten/Symbolen (token) Scanner erfasst TOKEN Zusammenarbeit mit einem Parser Umsetzung der kontext-freien Grammatik in Funktionen Scanner in flex geschrieben Parser in GNU bison Linux-Kernel 13 / 34

nft, das Administrationswerkzeug Grammatik mit Stichworten/Symbolen (token) Scanner erfasst TOKEN Zusammenarbeit mit einem Parser Umsetzung der kontext-freien Grammatik in Funktionen Scanner in flex geschrieben Parser in GNU bison Linux-Kernel 13 / 34

nft, das Administrationswerkzeug Grammatik mit Stichworten/Symbolen (token) Scanner erfasst TOKEN Zusammenarbeit mit einem Parser Umsetzung der kontext-freien Grammatik in Funktionen Scanner in flex geschrieben Parser in GNU bison Linux-Kernel 13 / 34

Übergang libnftnl zum Kernel Verpacken der Regeln in Netlink-Nachrichten binär, keine Text-Stichworte libmnl kommuniziert mit Kernel über nfnetlink Kernel lauscht auf netlink-nachrichten generischen Operationen und Werte aus Nachricht Zustandsautomat Linux-Kernel 14 / 34

Übergang libnftnl zum Kernel Verpacken der Regeln in Netlink-Nachrichten binär, keine Text-Stichworte libmnl kommuniziert mit Kernel über nfnetlink Kernel lauscht auf netlink-nachrichten generischen Operationen und Werte aus Nachricht Zustandsautomat Linux-Kernel 14 / 34

Übergang libnftnl zum Kernel Verpacken der Regeln in Netlink-Nachrichten binär, keine Text-Stichworte libmnl kommuniziert mit Kernel über nfnetlink Kernel lauscht auf netlink-nachrichten generischen Operationen und Werte aus Nachricht Zustandsautomat Linux-Kernel 14 / 34

Übergang libnftnl zum Kernel Verpacken der Regeln in Netlink-Nachrichten binär, keine Text-Stichworte libmnl kommuniziert mit Kernel über nfnetlink Kernel lauscht auf netlink-nachrichten generischen Operationen und Werte aus Nachricht Zustandsautomat Linux-Kernel 14 / 34

Übergang libnftnl zum Kernel Verpacken der Regeln in Netlink-Nachrichten binär, keine Text-Stichworte libmnl kommuniziert mit Kernel über nfnetlink Kernel lauscht auf netlink-nachrichten generischen Operationen und Werte aus Nachricht Zustandsautomat Linux-Kernel 14 / 34

Übergang libnftnl zum Kernel Verpacken der Regeln in Netlink-Nachrichten binär, keine Text-Stichworte libmnl kommuniziert mit Kernel über nfnetlink Kernel lauscht auf netlink-nachrichten generischen Operationen und Werte aus Nachricht Zustandsautomat Linux-Kernel 14 / 34

Zustandsautomat nach BPF 4 Register + versch. Filter-Befehlssätze netlink nachrichten Inhalt ip filter input 0 0 [ payload load 4b @ network header + 12 => reg 1 ] [ cmp eq reg 1 0x0a0a0a0a ] [ immediate reg 0 accept ] Linux-Kernel 15 / 34

Zustandsautomat nach BPF 4 Register + versch. Filter-Befehlssätze netlink nachrichten Inhalt ip filter input 0 0 [ payload load 4b @ network header + 12 => reg 1 ] [ cmp eq reg 1 0x0a0a0a0a ] [ immediate reg 0 accept ] nft add rule ip filter input ip saddr 10.10.10.10 accept Linux-Kernel 15 / 34

Erklärung payload payload load 4b @ network header + 12 Linux-Kernel 16 / 34

Erklärung payload payload load 4b @ network header + 12 payload load 4b @ network header + 16 Linux-Kernel 16 / 34

Was kann nftables? Linux-Kernel 17 / 34

Grundlegende Funktionen Tabellen base-ketten Netfilter Hooks Ketten Regeln Linux-Kernel 18 / 34

Tabellen Tabelle erstellen/anzeigen/leeren/löschen # nft add table ip filter # nft list table ip filter # nft flush table ip filter # nft delete table ip filter Tabellenname frei wählbar Protokollarten ip,ip6,arp,bridge,(inet) gibt es nicht automatisch! Linux-Kernel 19 / 34

base-ketten registriert an netfilter hooks prerouting,input,forward,output,postrouting type-basiert: filter, nat, route (ähnl. mangle) Priorität keine Default Policy! Erstellen einer base-kette # nft add chain \ filter input { type filter hook input priority 0 \; } Linux-Kernel 20 / 34

base-ketten registriert an netfilter hooks prerouting,input,forward,output,postrouting type-basiert: filter, nat, route (ähnl. mangle) Priorität keine Default Policy! Erstellen einer base-kette # nft add chain \ filter input { type filter hook input priority 0 \; } Linux-Kernel 20 / 34

base-ketten registriert an netfilter hooks prerouting,input,forward,output,postrouting type-basiert: filter, nat, route (ähnl. mangle) Priorität keine Default Policy! Erstellen einer base-kette # nft add chain \ filter input { type filter hook input priority 0 \; } Linux-Kernel 20 / 34

base-ketten registriert an netfilter hooks prerouting,input,forward,output,postrouting type-basiert: filter, nat, route (ähnl. mangle) Priorität keine Default Policy! Erstellen einer base-kette # nft add chain \ filter input { type filter hook input priority 0 \; } Linux-Kernel 20 / 34

base-ketten registriert an netfilter hooks prerouting,input,forward,output,postrouting type-basiert: filter, nat, route (ähnl. mangle) Priorität keine Default Policy! Erstellen einer base-kette # nft add chain \ filter input { type filter hook input priority 0 \; } Linux-Kernel 20 / 34

base-ketten registriert an netfilter hooks prerouting,input,forward,output,postrouting type-basiert: filter, nat, route (ähnl. mangle) Priorität keine Default Policy! Erstellen einer base-kette # nft add chain \ filter input { type filter hook input priority 0 \; } Linux-Kernel 20 / 34

Netfilter Hooks Linux-Kernel 21 / 34

Ketten Nutzer-Ketten (non-base) wie in iptables Kette leeren löschen Ketten löschen Tabellen löschen Kette erstellen/leeren/löschen # nft add chain ip filter Kette1 # nft flush chain ip filter Kette1 # nft delete chain ip filter Kette1 Linux-Kernel 22 / 34

Ketten Nutzer-Ketten (non-base) wie in iptables Kette leeren löschen Ketten löschen Tabellen löschen Kette erstellen/leeren/löschen # nft add chain ip filter Kette1 # nft flush chain ip filter Kette1 # nft delete chain ip filter Kette1 Linux-Kernel 22 / 34

Ketten Nutzer-Ketten (non-base) wie in iptables Kette leeren löschen Ketten löschen Tabellen löschen Kette erstellen/leeren/löschen # nft add chain ip filter Kette1 # nft flush chain ip filter Kette1 # nft delete chain ip filter Kette1 Linux-Kernel 22 / 34

Regeln verschiedene Parameter hintereinander Aktionen (verdict): accept, counter, log, jump, reject, drop Regel erstellen und löschen # nft add rule filter input saddr 10.10.10.1 count accept # nft add rule myfilter output ip saddr 10.10.10.0/24 \ ip daddr 10.10.20.0/24 log accept # nft add rule filter input tcp dport http counter # nft add rule ip filter input saddr 10.10.10.1 jump Kette1 # nft delete rule ip filter input handle 1 Linux-Kernel 23 / 34

Regeln verschiedene Parameter hintereinander Aktionen (verdict): accept, counter, log, jump, reject, drop Regel erstellen und löschen # nft add rule filter input saddr 10.10.10.1 count accept # nft add rule myfilter output ip saddr 10.10.10.0/24 \ ip daddr 10.10.20.0/24 log accept # nft add rule filter input tcp dport http counter # nft add rule ip filter input saddr 10.10.10.1 jump Kette1 # nft delete rule ip filter input handle 1 Linux-Kernel 23 / 34

Allgemeines Datei: myrules table ip myfilter { chain input { type filter hook input priority 0; ip saddr 10.10.10.1 accept ip saddr 10.10.10.0/24 log drop } chain forward { type filter hook forward priority 0; } } chain output { type filter hook output priority 0; } Linux-Kernel 24 / 34

Erweiterte Funktionen Sets Dictionaries/Maps spezielle Maps Intervalle Linux-Kernel 25 / 34

Sets Datensätze werden überprüft z.b. nicht für jede IP-Adresse eine Regel anonyme und namensbasierte anonyme Sets nicht veränderbar Anonyme Sets # nft add rule myfilter input tcp dport { 80, 443 } accept # nft add rule myfilter input ip saddr \ { 10.10.10.1, 10.10.20.1 } accept Linux-Kernel 26 / 34

Sets namensbasierte Sets können verändert werden (mehrfacher) Zugriff über Regeln Zugriff durch Regel unterbindet Löschen verschieden Typen (IP(6)-Adressen, Ports, Protocol, Marks, IF-Indexe) Namensbasierte Sets # nft add set myfilter webserver { type ipv4_address\; } # nft add element myfilter \ webserver { 10.10.80.1, 10.10.81.2 } # nft list set myfilter webserver # nft add rule myfilter input ip daddr @webserver accept # nft delete set myfilter webserver Linux-Kernel 27 / 34

Sets namensbasierte Sets können verändert werden (mehrfacher) Zugriff über Regeln Zugriff durch Regel unterbindet Löschen verschieden Typen (IP(6)-Adressen, Ports, Protocol, Marks, IF-Indexe) Namensbasierte Sets # nft add set myfilter webserver { type ipv4_address\; } # nft add element myfilter \ webserver { 10.10.80.1, 10.10.81.2 } # nft list set myfilter webserver # nft add rule myfilter input ip daddr @webserver accept # nft delete set myfilter webserver Linux-Kernel 27 / 34

Sets namensbasierte Sets können verändert werden (mehrfacher) Zugriff über Regeln Zugriff durch Regel unterbindet Löschen verschieden Typen (IP(6)-Adressen, Ports, Protocol, Marks, IF-Indexe) Namensbasierte Sets # nft add set myfilter webserver { type ipv4_address\; } # nft add element myfilter \ webserver { 10.10.80.1, 10.10.81.2 } # nft list set myfilter webserver # nft add rule myfilter input ip daddr @webserver accept # nft delete set myfilter webserver Linux-Kernel 27 / 34

Sets namensbasierte Sets können verändert werden (mehrfacher) Zugriff über Regeln Zugriff durch Regel unterbindet Löschen verschieden Typen (IP(6)-Adressen, Ports, Protocol, Marks, IF-Indexe) Namensbasierte Sets # nft add set myfilter webserver { type ipv4_address\; } # nft add element myfilter \ webserver { 10.10.80.1, 10.10.81.2 } # nft list set myfilter webserver # nft add rule myfilter input ip daddr @webserver accept # nft delete set myfilter webserver Linux-Kernel 27 / 34

Dictionaries/Maps anonym intern: spezielle Sets namensbasiert und anonym # nft add rule myfilter input ip protocol \ vmap { udp : jump udpkette, tcp : jump tcpkette, icmp : accept } Linux-Kernel 28 / 34

Dictionaries/Maps anonym intern: spezielle Sets namensbasiert und anonym # nft add rule myfilter input ip protocol \ vmap { udp : jump udpkette, tcp : jump tcpkette, icmp : accept } Linux-Kernel 28 / 34

Dictionaries/Maps Befehle # nft add map myfilter \ v_map { type ipv4_address : verdict\; } # nft add element myfilter \ v_map { 10.10.10.20 : drop, 10.10.10.40 : drop } Konfigurationausgabe/Datei map v_map { type ipv4_address : verdict elements = { 10.10.10.40 : drop, 10.10.10.20 : drop } } Linux-Kernel 29 / 34

Spezielle Maps Namensbasierte Konfiguration map nat_map { type ifindex : ipv4_address elements = { eth0 : 10.10.10.1, eth1 : 10.10.20.2 } } map jump_map { type ipv4_address : verdict elements = { 10.10.10.1 : jump Kette1 } } Linux-Kernel 30 / 34

Intervalle Bereiche, die nicht durch Netzmasken abgedeckt werden direkt, indirekt als Liste und in Maps Intervalle # nft add rule myfilter input ip daddr \ 10.10.10.1-10.10.10.25 drop # nft add rule myfilter input ip daddr \ { 10.10.10.1-10.10.10.25,\ 10.10.10.250-10.10.10.255 } drop # nft add rule ip filter forward ip daddr vmap \ { 10.10.10.1-10.10.10.25 : jump webserver, 10.10.10.100-10.10.10.111 : jump dbserver } drop Linux-Kernel 31 / 34

Intervalle Bereiche, die nicht durch Netzmasken abgedeckt werden direkt, indirekt als Liste und in Maps Intervalle # nft add rule myfilter input ip daddr \ 10.10.10.1-10.10.10.25 drop # nft add rule myfilter input ip daddr \ { 10.10.10.1-10.10.10.25,\ 10.10.10.250-10.10.10.255 } drop # nft add rule ip filter forward ip daddr vmap \ { 10.10.10.1-10.10.10.25 : jump webserver, 10.10.10.100-10.10.10.111 : jump dbserver } drop Linux-Kernel 31 / 34

Beispiel Praxis Linux-Kernel 32 / 34

Quellen http://lwn.net/articles/324251/ Ankündigung nftables http://home.regit.org/* Eric Leblond (Core Entwickler) slideshare.net Kernel-recipes-2013 nftables Vortrag Eric Leblond http://people.netfilter.org/wiki-nftables/ Linux-Kernel 33 / 34

Vielen Dank für die Aufmerksamkeit! Bei weiteren Fragen wenden Sie sich bitte an info@b1-systems.de oder +49 (0)8457-931096 - Linux/Open Source Consulting, Training, Support & Development