97
nftables – Der neue Paketfilter im Linux-Kernel CLT 2014 15. März 2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH [email protected] B1 Systems GmbH - Linux/Open Source Consulting, Training, Support & Development

nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

  • Upload
    others

  • View
    14

  • Download
    0

Embed Size (px)

Citation preview

Page 1: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

nftables – Der neue Paketfilter imLinux-KernelCLT 2014 15. März 2014

Michael SteinfurthLinux/Unix Consultant & Trainer

B1 Systems [email protected]

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

Page 2: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Agenda

Vorstellung B1 Systems

nftables – Einführung

Funktionsweise

Was kann nftables?

Beispiel – Praxis

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 2 / 34

Page 3: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Vorstellung B1 Systems

gegründet 2004primär Linux/Open Source-Themennational & international tätigüber 60 Mitarbeiterunabhängig von Soft- und Hardware-HerstellernLeistungsangebot:

Beratung & ConsultingSupportEntwicklungTrainingBetriebLösungen

dezentrale Strukturen

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 3 / 34

Page 4: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

SchwerpunkteVirtualisierung (XEN, KVM & RHEV)Systemmanagement (Spacewalk, Red Hat Satellite, SUSEManager)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 Teamsvor Ort

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 4 / 34

Page 5: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

nftables – Einführung

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 5 / 34

Page 6: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Was ist nftables?

moderner Paketfilter im Linux-Kerneldas Programm im Nutzerbereich (User Space)zustandsgesteuertkeine Veränderung am Netfilter- & Connection-Tracking-Systemiptables-Ersatz?

Ja! wenn ausgereift und stabil

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 6 / 34

Page 7: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Was ist nftables?

moderner Paketfilter im Linux-Kerneldas Programm im Nutzerbereich (User Space)zustandsgesteuertkeine Veränderung am Netfilter- & Connection-Tracking-Systemiptables-Ersatz?

Ja! wenn ausgereift und stabil

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 6 / 34

Page 8: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Was ist nftables?

moderner Paketfilter im Linux-Kerneldas Programm im Nutzerbereich (User Space)zustandsgesteuertkeine Veränderung am Netfilter- & Connection-Tracking-Systemiptables-Ersatz?

Ja! wenn ausgereift und stabil

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 6 / 34

Page 9: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Was ist nftables?

moderner Paketfilter im Linux-Kerneldas Programm im Nutzerbereich (User Space)zustandsgesteuertkeine Veränderung am Netfilter- & Connection-Tracking-Systemiptables-Ersatz?

Ja! wenn ausgereift und stabil

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 6 / 34

Page 10: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Was ist nftables?

moderner Paketfilter im Linux-Kerneldas Programm im Nutzerbereich (User Space)zustandsgesteuertkeine Veränderung am Netfilter- & Connection-Tracking-Systemiptables-Ersatz?

Ja! wenn ausgereift und stabil

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 6 / 34

Page 11: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Was ist nftables?

moderner Paketfilter im Linux-Kerneldas Programm im Nutzerbereich (User Space)zustandsgesteuertkeine Veränderung am Netfilter- & Connection-Tracking-Systemiptables-Ersatz?

Ja! wenn ausgereift und stabil

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 6 / 34

Page 12: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

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 ArbeitStillstand bis 2012die Firma Astaro sponsort WeiterentwicklungAufnahmeantrag in den Hauptentwicklungszweig19. Januar Release 3.13 Einzug in den Linux-Kernel

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 7 / 34

Page 13: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

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 ArbeitStillstand bis 2012die Firma Astaro sponsort WeiterentwicklungAufnahmeantrag in den Hauptentwicklungszweig19. Januar Release 3.13 Einzug in den Linux-Kernel

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 7 / 34

Page 14: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

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 ArbeitStillstand bis 2012die Firma Astaro sponsort WeiterentwicklungAufnahmeantrag in den Hauptentwicklungszweig19. Januar Release 3.13 Einzug in den Linux-Kernel

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 7 / 34

Page 15: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

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 ArbeitStillstand bis 2012die Firma Astaro sponsort WeiterentwicklungAufnahmeantrag in den Hauptentwicklungszweig19. Januar Release 3.13 Einzug in den Linux-Kernel

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 7 / 34

Page 16: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

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 ArbeitStillstand bis 2012die Firma Astaro sponsort WeiterentwicklungAufnahmeantrag in den Hauptentwicklungszweig19. Januar Release 3.13 Einzug in den Linux-Kernel

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 7 / 34

Page 17: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

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 ArbeitStillstand bis 2012die Firma Astaro sponsort WeiterentwicklungAufnahmeantrag in den Hauptentwicklungszweig19. Januar Release 3.13 Einzug in den Linux-Kernel

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 7 / 34

Page 18: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

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 ArbeitStillstand bis 2012die Firma Astaro sponsort WeiterentwicklungAufnahmeantrag in den Hauptentwicklungszweig19. Januar Release 3.13 Einzug in den Linux-Kernel

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 7 / 34

Page 19: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Warum nftables und nicht mehr iptables?

bisher: Binäraustausch bei Regeländerungennicht inkrementell, kompletter RegelsatzKommunikation mit Kernel über raw Sockets↪→ je mehr Regeln, desto höhere Austauschzeit

Erweiterungen im Userspace & Kernelspacepro Funktion einmal im Kernel und einmal im UserspaceErweiterungen zweifacher Entwicklungsaufwandmehrere Erweiterungen pro Anfrage↪→ mehr Leistungsanforderungen

keine “offizielle Bilbiothek”redundanter Quelltext unter verschiedenen Modulen

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 8 / 34

Page 20: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Warum nftables und nicht mehr iptables?

bisher: Binäraustausch bei Regeländerungennicht inkrementell, kompletter RegelsatzKommunikation mit Kernel über raw Sockets↪→ je mehr Regeln, desto höhere Austauschzeit

Erweiterungen im Userspace & Kernelspacepro Funktion einmal im Kernel und einmal im UserspaceErweiterungen zweifacher Entwicklungsaufwandmehrere Erweiterungen pro Anfrage↪→ mehr Leistungsanforderungen

keine “offizielle Bilbiothek”redundanter Quelltext unter verschiedenen Modulen

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 8 / 34

Page 21: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Warum nftables und nicht mehr iptables?

bisher: Binäraustausch bei Regeländerungennicht inkrementell, kompletter RegelsatzKommunikation mit Kernel über raw Sockets↪→ je mehr Regeln, desto höhere Austauschzeit

Erweiterungen im Userspace & Kernelspacepro Funktion einmal im Kernel und einmal im UserspaceErweiterungen zweifacher Entwicklungsaufwandmehrere Erweiterungen pro Anfrage↪→ mehr Leistungsanforderungen

keine “offizielle Bilbiothek”redundanter Quelltext unter verschiedenen Modulen

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 8 / 34

Page 22: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Warum nftables und nicht mehr iptables?

bisher: Binäraustausch bei Regeländerungennicht inkrementell, kompletter RegelsatzKommunikation mit Kernel über raw Sockets↪→ je mehr Regeln, desto höhere Austauschzeit

Erweiterungen im Userspace & Kernelspacepro Funktion einmal im Kernel und einmal im UserspaceErweiterungen zweifacher Entwicklungsaufwandmehrere Erweiterungen pro Anfrage↪→ mehr Leistungsanforderungen

keine “offizielle Bilbiothek”redundanter Quelltext unter verschiedenen Modulen

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 8 / 34

Page 23: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Warum nftables und nicht mehr iptables?

bisher: Binäraustausch bei Regeländerungennicht inkrementell, kompletter RegelsatzKommunikation mit Kernel über raw Sockets↪→ je mehr Regeln, desto höhere Austauschzeit

Erweiterungen im Userspace & Kernelspacepro Funktion einmal im Kernel und einmal im UserspaceErweiterungen zweifacher Entwicklungsaufwandmehrere Erweiterungen pro Anfrage↪→ mehr Leistungsanforderungen

keine “offizielle Bilbiothek”redundanter Quelltext unter verschiedenen Modulen

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 8 / 34

Page 24: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Warum nftables und nicht mehr iptables?

bisher: Binäraustausch bei Regeländerungennicht inkrementell, kompletter RegelsatzKommunikation mit Kernel über raw Sockets↪→ je mehr Regeln, desto höhere Austauschzeit

Erweiterungen im Userspace & Kernelspacepro Funktion einmal im Kernel und einmal im UserspaceErweiterungen zweifacher Entwicklungsaufwandmehrere Erweiterungen pro Anfrage↪→ mehr Leistungsanforderungen

keine “offizielle Bilbiothek”redundanter Quelltext unter verschiedenen Modulen

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 8 / 34

Page 25: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Warum nftables und nicht mehr iptables?

bisher: Binäraustausch bei Regeländerungennicht inkrementell, kompletter RegelsatzKommunikation mit Kernel über raw Sockets↪→ je mehr Regeln, desto höhere Austauschzeit

Erweiterungen im Userspace & Kernelspacepro Funktion einmal im Kernel und einmal im UserspaceErweiterungen zweifacher Entwicklungsaufwandmehrere Erweiterungen pro Anfrage↪→ mehr Leistungsanforderungen

keine “offizielle Bilbiothek”redundanter Quelltext unter verschiedenen Modulen

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 8 / 34

Page 26: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Warum nftables und nicht mehr iptables?

bisher: Binäraustausch bei Regeländerungennicht inkrementell, kompletter RegelsatzKommunikation mit Kernel über raw Sockets↪→ je mehr Regeln, desto höhere Austauschzeit

Erweiterungen im Userspace & Kernelspacepro Funktion einmal im Kernel und einmal im UserspaceErweiterungen zweifacher Entwicklungsaufwandmehrere Erweiterungen pro Anfrage↪→ mehr Leistungsanforderungen

keine “offizielle Bilbiothek”redundanter Quelltext unter verschiedenen Modulen

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 8 / 34

Page 27: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Warum nftables und nicht mehr iptables?

bisher: Binäraustausch bei Regeländerungennicht inkrementell, kompletter RegelsatzKommunikation mit Kernel über raw Sockets↪→ je mehr Regeln, desto höhere Austauschzeit

Erweiterungen im Userspace & Kernelspacepro Funktion einmal im Kernel und einmal im UserspaceErweiterungen zweifacher Entwicklungsaufwandmehrere Erweiterungen pro Anfrage↪→ mehr Leistungsanforderungen

keine “offizielle Bilbiothek”redundanter Quelltext unter verschiedenen Modulen

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 8 / 34

Page 28: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Warum nftables und nicht mehr iptables?

bisher: Binäraustausch bei Regeländerungennicht inkrementell, kompletter RegelsatzKommunikation mit Kernel über raw Sockets↪→ je mehr Regeln, desto höhere Austauschzeit

Erweiterungen im Userspace & Kernelspacepro Funktion einmal im Kernel und einmal im UserspaceErweiterungen zweifacher Entwicklungsaufwandmehrere Erweiterungen pro Anfrage↪→ mehr Leistungsanforderungen

keine “offizielle Bilbiothek”redundanter Quelltext unter verschiedenen Modulen

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 8 / 34

Page 29: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Warum nftables und nicht mehr iptables?

bisher: Binäraustausch bei Regeländerungennicht inkrementell, kompletter RegelsatzKommunikation mit Kernel über raw Sockets↪→ je mehr Regeln, desto höhere Austauschzeit

Erweiterungen im Userspace & Kernelspacepro Funktion einmal im Kernel und einmal im UserspaceErweiterungen zweifacher Entwicklungsaufwandmehrere Erweiterungen pro Anfrage↪→ mehr Leistungsanforderungen

keine “offizielle Bilbiothek”redundanter Quelltext unter verschiedenen Modulen

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 8 / 34

Page 30: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Warum nftables und nicht mehr iptables?

leichte Leistungseinbußen auch ohne Regelngeladene Moduleverbunden mit Netfilter

eigene Programme für unterschiedliche Protokollebenenebtables, arptables, iptables, ip6tables

schwierig in “modernen” Netzenverschiedene IP-Adressen aus verschiedenen Bereichen1-zu-1 Beschränkungen↪→ viele Regeln

ungünstig für wechselnde virtuelle Maschinen (Cloud)

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 9 / 34

Page 31: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Warum nftables und nicht mehr iptables?

leichte Leistungseinbußen auch ohne Regelngeladene Moduleverbunden mit Netfilter

eigene Programme für unterschiedliche Protokollebenenebtables, arptables, iptables, ip6tables

schwierig in “modernen” Netzenverschiedene IP-Adressen aus verschiedenen Bereichen1-zu-1 Beschränkungen↪→ viele Regeln

ungünstig für wechselnde virtuelle Maschinen (Cloud)

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 9 / 34

Page 32: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Warum nftables und nicht mehr iptables?

leichte Leistungseinbußen auch ohne Regelngeladene Moduleverbunden mit Netfilter

eigene Programme für unterschiedliche Protokollebenenebtables, arptables, iptables, ip6tables

schwierig in “modernen” Netzenverschiedene IP-Adressen aus verschiedenen Bereichen1-zu-1 Beschränkungen↪→ viele Regeln

ungünstig für wechselnde virtuelle Maschinen (Cloud)

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 9 / 34

Page 33: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Warum nftables und nicht mehr iptables?

leichte Leistungseinbußen auch ohne Regelngeladene Moduleverbunden mit Netfilter

eigene Programme für unterschiedliche Protokollebenenebtables, arptables, iptables, ip6tables

schwierig in “modernen” Netzenverschiedene IP-Adressen aus verschiedenen Bereichen1-zu-1 Beschränkungen↪→ viele Regeln

ungünstig für wechselnde virtuelle Maschinen (Cloud)

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 9 / 34

Page 34: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Warum nftables und nicht mehr iptables?

leichte Leistungseinbußen auch ohne Regelngeladene Moduleverbunden mit Netfilter

eigene Programme für unterschiedliche Protokollebenenebtables, arptables, iptables, ip6tables

schwierig in “modernen” Netzenverschiedene IP-Adressen aus verschiedenen Bereichen1-zu-1 Beschränkungen↪→ viele Regeln

ungünstig für wechselnde virtuelle Maschinen (Cloud)

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 9 / 34

Page 35: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Warum nftables und nicht mehr iptables?

leichte Leistungseinbußen auch ohne Regelngeladene Moduleverbunden mit Netfilter

eigene Programme für unterschiedliche Protokollebenenebtables, arptables, iptables, ip6tables

schwierig in “modernen” Netzenverschiedene IP-Adressen aus verschiedenen Bereichen1-zu-1 Beschränkungen↪→ viele Regeln

ungünstig für wechselnde virtuelle Maschinen (Cloud)

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 9 / 34

Page 36: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Warum nftables und nicht mehr iptables?

leichte Leistungseinbußen auch ohne Regelngeladene Moduleverbunden mit Netfilter

eigene Programme für unterschiedliche Protokollebenenebtables, arptables, iptables, ip6tables

schwierig in “modernen” Netzenverschiedene IP-Adressen aus verschiedenen Bereichen1-zu-1 Beschränkungen↪→ viele Regeln

ungünstig für wechselnde virtuelle Maschinen (Cloud)

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 9 / 34

Page 37: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Warum nftables und nicht mehr iptables?

leichte Leistungseinbußen auch ohne Regelngeladene Moduleverbunden mit Netfilter

eigene Programme für unterschiedliche Protokollebenenebtables, arptables, iptables, ip6tables

schwierig in “modernen” Netzenverschiedene IP-Adressen aus verschiedenen Bereichen1-zu-1 Beschränkungen↪→ viele Regeln

ungünstig für wechselnde virtuelle Maschinen (Cloud)

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 9 / 34

Page 38: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Warum nftables und nicht mehr iptables?

leichte Leistungseinbußen auch ohne Regelngeladene Moduleverbunden mit Netfilter

eigene Programme für unterschiedliche Protokollebenenebtables, arptables, iptables, ip6tables

schwierig in “modernen” Netzenverschiedene IP-Adressen aus verschiedenen Bereichen1-zu-1 Beschränkungen↪→ viele Regeln

ungünstig für wechselnde virtuelle Maschinen (Cloud)

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 9 / 34

Page 39: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Warum nftables und nicht mehr iptables?

leichte Leistungseinbußen auch ohne Regelngeladene Moduleverbunden mit Netfilter

eigene Programme für unterschiedliche Protokollebenenebtables, arptables, iptables, ip6tables

schwierig in “modernen” Netzenverschiedene IP-Adressen aus verschiedenen Bereichen1-zu-1 Beschränkungen↪→ viele Regeln

ungünstig für wechselnde virtuelle Maschinen (Cloud)

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 9 / 34

Page 40: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Funktionsweise

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 10 / 34

Page 41: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Übersicht

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 11 / 34

Page 42: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

nft, das Administrationswerkzeug

Beispiel nft# nft list table filter

Administrator benutzt nft zur Steuerung im Kernelaktivieren, auslesen, konfigurieren, löschenBefehlszeilenprogramm mit ParameternRegeln ohne Optionsparameter (-o, --option)Optionen:

[-i] interaktive[-f] von Datei lesen[-n] numerisch (mehrfach: nn, nnn)[-a] mehr Information (Regel-“Handle”)

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 12 / 34

Page 43: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

nft, das Administrationswerkzeug

Beispiel nft# nft list table filter

Administrator benutzt nft zur Steuerung im Kernelaktivieren, auslesen, konfigurieren, löschenBefehlszeilenprogramm mit ParameternRegeln ohne Optionsparameter (-o, --option)Optionen:

[-i] interaktive[-f] von Datei lesen[-n] numerisch (mehrfach: nn, nnn)[-a] mehr Information (Regel-“Handle”)

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 12 / 34

Page 44: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

nft, das Administrationswerkzeug

Beispiel nft# nft list table filter

Administrator benutzt nft zur Steuerung im Kernelaktivieren, auslesen, konfigurieren, löschenBefehlszeilenprogramm mit ParameternRegeln ohne Optionsparameter (-o, --option)Optionen:

[-i] interaktive[-f] von Datei lesen[-n] numerisch (mehrfach: nn, nnn)[-a] mehr Information (Regel-“Handle”)

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 12 / 34

Page 45: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

nft, das Administrationswerkzeug

Beispiel nft# nft list table filter

Administrator benutzt nft zur Steuerung im Kernelaktivieren, auslesen, konfigurieren, löschenBefehlszeilenprogramm mit ParameternRegeln ohne Optionsparameter (-o, --option)Optionen:

[-i] interaktive[-f] von Datei lesen[-n] numerisch (mehrfach: nn, nnn)[-a] mehr Information (Regel-“Handle”)

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 12 / 34

Page 46: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

nft, das Administrationswerkzeug

Beispiel nft# nft list table filter

Administrator benutzt nft zur Steuerung im Kernelaktivieren, auslesen, konfigurieren, löschenBefehlszeilenprogramm mit ParameternRegeln ohne Optionsparameter (-o, --option)Optionen:

[-i] interaktive[-f] von Datei lesen[-n] numerisch (mehrfach: nn, nnn)[-a] mehr Information (Regel-“Handle”)

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 12 / 34

Page 47: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

nft, das Administrationswerkzeug

Beispiel nft# nft list table filter

Administrator benutzt nft zur Steuerung im Kernelaktivieren, auslesen, konfigurieren, löschenBefehlszeilenprogramm mit ParameternRegeln ohne Optionsparameter (-o, --option)Optionen:

[-i] interaktive[-f] von Datei lesen[-n] numerisch (mehrfach: nn, nnn)[-a] mehr Information (Regel-“Handle”)

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 12 / 34

Page 48: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

nft, das Administrationswerkzeug

Beispiel nft# nft list table filter

Administrator benutzt nft zur Steuerung im Kernelaktivieren, auslesen, konfigurieren, löschenBefehlszeilenprogramm mit ParameternRegeln ohne Optionsparameter (-o, --option)Optionen:

[-i] interaktive[-f] von Datei lesen[-n] numerisch (mehrfach: nn, nnn)[-a] mehr Information (Regel-“Handle”)

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 12 / 34

Page 49: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

nft, das Administrationswerkzeug

Beispiel nft# nft list table filter

Administrator benutzt nft zur Steuerung im Kernelaktivieren, auslesen, konfigurieren, löschenBefehlszeilenprogramm mit ParameternRegeln ohne Optionsparameter (-o, --option)Optionen:

[-i] interaktive[-f] von Datei lesen[-n] numerisch (mehrfach: nn, nnn)[-a] mehr Information (Regel-“Handle”)

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 12 / 34

Page 50: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

nft, das Administrationswerkzeug

Beispiel nft# nft list table filter

Administrator benutzt nft zur Steuerung im Kernelaktivieren, auslesen, konfigurieren, löschenBefehlszeilenprogramm mit ParameternRegeln ohne Optionsparameter (-o, --option)Optionen:

[-i] interaktive[-f] von Datei lesen[-n] numerisch (mehrfach: nn, nnn)[-a] mehr Information (Regel-“Handle”)

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 12 / 34

Page 51: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

nft, das Administrationswerkzeug

Grammatik mit Stichworten/Symbolen (token)Scanner erfasst TOKENZusammenarbeit mit einem ParserUmsetzung der kontext-freien Grammatik in FunktionenScanner in flex geschriebenParser in GNU bison

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 13 / 34

Page 52: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

nft, das Administrationswerkzeug

Grammatik mit Stichworten/Symbolen (token)Scanner erfasst TOKENZusammenarbeit mit einem ParserUmsetzung der kontext-freien Grammatik in FunktionenScanner in flex geschriebenParser in GNU bison

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 13 / 34

Page 53: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

nft, das Administrationswerkzeug

Grammatik mit Stichworten/Symbolen (token)Scanner erfasst TOKENZusammenarbeit mit einem ParserUmsetzung der kontext-freien Grammatik in FunktionenScanner in flex geschriebenParser in GNU bison

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 13 / 34

Page 54: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

nft, das Administrationswerkzeug

Grammatik mit Stichworten/Symbolen (token)Scanner erfasst TOKENZusammenarbeit mit einem ParserUmsetzung der kontext-freien Grammatik in FunktionenScanner in flex geschriebenParser in GNU bison

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 13 / 34

Page 55: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

nft, das Administrationswerkzeug

Grammatik mit Stichworten/Symbolen (token)Scanner erfasst TOKENZusammenarbeit mit einem ParserUmsetzung der kontext-freien Grammatik in FunktionenScanner in flex geschriebenParser in GNU bison

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 13 / 34

Page 56: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

nft, das Administrationswerkzeug

Grammatik mit Stichworten/Symbolen (token)Scanner erfasst TOKENZusammenarbeit mit einem ParserUmsetzung der kontext-freien Grammatik in FunktionenScanner in flex geschriebenParser in GNU bison

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 13 / 34

Page 57: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Übergang libnftnl zum Kernel

“Verpacken” der Regeln in Netlink-Nachrichtenbinär, keine Text-Stichwortelibmnl kommuniziert mit Kernel über nfnetlinkKernel lauscht auf netlink-Nachrichtengenerischen Operationen und Werte aus Nachricht↪→ Zustandsautomat

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 14 / 34

Page 58: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Übergang libnftnl zum Kernel

“Verpacken” der Regeln in Netlink-Nachrichtenbinär, keine Text-Stichwortelibmnl kommuniziert mit Kernel über nfnetlinkKernel lauscht auf netlink-Nachrichtengenerischen Operationen und Werte aus Nachricht↪→ Zustandsautomat

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 14 / 34

Page 59: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Übergang libnftnl zum Kernel

“Verpacken” der Regeln in Netlink-Nachrichtenbinär, keine Text-Stichwortelibmnl kommuniziert mit Kernel über nfnetlinkKernel lauscht auf netlink-Nachrichtengenerischen Operationen und Werte aus Nachricht↪→ Zustandsautomat

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 14 / 34

Page 60: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Übergang libnftnl zum Kernel

“Verpacken” der Regeln in Netlink-Nachrichtenbinär, keine Text-Stichwortelibmnl kommuniziert mit Kernel über nfnetlinkKernel lauscht auf netlink-Nachrichtengenerischen Operationen und Werte aus Nachricht↪→ Zustandsautomat

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 14 / 34

Page 61: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Übergang libnftnl zum Kernel

“Verpacken” der Regeln in Netlink-Nachrichtenbinär, keine Text-Stichwortelibmnl kommuniziert mit Kernel über nfnetlinkKernel lauscht auf netlink-Nachrichtengenerischen Operationen und Werte aus Nachricht↪→ Zustandsautomat

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 14 / 34

Page 62: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Übergang libnftnl zum Kernel

“Verpacken” der Regeln in Netlink-Nachrichtenbinär, keine Text-Stichwortelibmnl kommuniziert mit Kernel über nfnetlinkKernel lauscht auf netlink-Nachrichtengenerischen Operationen und Werte aus Nachricht↪→ Zustandsautomat

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 14 / 34

Page 63: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Zustandsautomat nach BPF

4 Register + versch. Filter-Befehlssätze

netlink nachrichten Inhaltip 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

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 15 / 34

Page 64: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Zustandsautomat nach BPF

4 Register + versch. Filter-Befehlssätze

netlink nachrichten Inhaltip 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

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 15 / 34

Page 65: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Erklärung payload

payload load 4b @ network header + 12

payload load 4b @ network header + 16

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 16 / 34

Page 66: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Erklärung payload

payload load 4b @ network header + 12

payload load 4b @ network header + 16

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 16 / 34

Page 67: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Was kann nftables?

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 17 / 34

Page 68: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Grundlegende Funktionen

Tabellenbase-KettenNetfilter HooksKettenRegeln

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 18 / 34

Page 69: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

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ählbarProtokollarten ip,ip6,arp,bridge,(inet)

gibt es nicht automatisch!

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 19 / 34

Page 70: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

base-Ketten

registriert an netfilter hooksprerouting,input,forward,output,postrouting

type-basiert:filter, nat, route (ähnl. mangle)

Prioritätkeine “Default Policy”!

Erstellen einer base-Kette# nft add chain \filter input { type filter hook input priority 0 \; }

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 20 / 34

Page 71: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

base-Ketten

registriert an netfilter hooksprerouting,input,forward,output,postrouting

type-basiert:filter, nat, route (ähnl. mangle)

Prioritätkeine “Default Policy”!

Erstellen einer base-Kette# nft add chain \filter input { type filter hook input priority 0 \; }

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 20 / 34

Page 72: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

base-Ketten

registriert an netfilter hooksprerouting,input,forward,output,postrouting

type-basiert:filter, nat, route (ähnl. mangle)

Prioritätkeine “Default Policy”!

Erstellen einer base-Kette# nft add chain \filter input { type filter hook input priority 0 \; }

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 20 / 34

Page 73: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

base-Ketten

registriert an netfilter hooksprerouting,input,forward,output,postrouting

type-basiert:filter, nat, route (ähnl. mangle)

Prioritätkeine “Default Policy”!

Erstellen einer base-Kette# nft add chain \filter input { type filter hook input priority 0 \; }

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 20 / 34

Page 74: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

base-Ketten

registriert an netfilter hooksprerouting,input,forward,output,postrouting

type-basiert:filter, nat, route (ähnl. mangle)

Prioritätkeine “Default Policy”!

Erstellen einer base-Kette# nft add chain \filter input { type filter hook input priority 0 \; }

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 20 / 34

Page 75: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

base-Ketten

registriert an netfilter hooksprerouting,input,forward,output,postrouting

type-basiert:filter, nat, route (ähnl. mangle)

Prioritätkeine “Default Policy”!

Erstellen einer base-Kette# nft add chain \filter input { type filter hook input priority 0 \; }

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 20 / 34

Page 76: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Netfilter Hooks

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 21 / 34

Page 77: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Ketten

Nutzer-Ketten (non-base) wie in iptables

Kette leeren → löschenKetten 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

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 22 / 34

Page 78: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Ketten

Nutzer-Ketten (non-base) wie in iptables

Kette leeren → löschenKetten 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

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 22 / 34

Page 79: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Ketten

Nutzer-Ketten (non-base) wie in iptables

Kette leeren → löschenKetten 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

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 22 / 34

Page 80: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Regeln

verschiedene Parameter hintereinanderAktionen (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

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 23 / 34

Page 81: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Regeln

verschiedene Parameter hintereinanderAktionen (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

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 23 / 34

Page 82: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Allgemeines

Datei: myrulestable ip myfilter {

chain input {type filter hook input priority 0;ip saddr 10.10.10.1 acceptip saddr 10.10.10.0/24 log drop

}

chain forward {type filter hook forward priority 0;

}

chain output {type filter hook output priority 0;

}}

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 24 / 34

Page 83: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Erweiterte Funktionen

SetsDictionaries/Mapsspezielle MapsIntervalle

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 25 / 34

Page 84: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Sets

Datensätze werden überprüftz.B. nicht für jede IP-Adresse eine Regelanonyme und namensbasierteanonyme 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

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 26 / 34

Page 85: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Sets

namensbasierte Sets können verändert werden(mehrfacher) Zugriff über RegelnZugriff durch Regel unterbindet Löschenverschieden 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

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 27 / 34

Page 86: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Sets

namensbasierte Sets können verändert werden(mehrfacher) Zugriff über RegelnZugriff durch Regel unterbindet Löschenverschieden 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

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 27 / 34

Page 87: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Sets

namensbasierte Sets können verändert werden(mehrfacher) Zugriff über RegelnZugriff durch Regel unterbindet Löschenverschieden 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

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 27 / 34

Page 88: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Sets

namensbasierte Sets können verändert werden(mehrfacher) Zugriff über RegelnZugriff durch Regel unterbindet Löschenverschieden 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

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 27 / 34

Page 89: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Dictionaries/Maps

intern: spezielle Setsnamensbasiert und anonym

anonym# nft add rule myfilter input ip protocol \vmap {udp : jump udpkette, tcp : jump tcpkette, icmp : accept

}

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 28 / 34

Page 90: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Dictionaries/Maps

intern: spezielle Setsnamensbasiert und anonym

anonym# nft add rule myfilter input ip protocol \vmap {udp : jump udpkette, tcp : jump tcpkette, icmp : accept

}

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 28 / 34

Page 91: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

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/Dateimap v_map {

type ipv4_address : verdictelements = { 10.10.10.40 : drop, 10.10.10.20 : drop }

}

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 29 / 34

Page 92: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Spezielle Maps

Namensbasierte Konfigurationmap nat_map {

type ifindex : ipv4_addresselements = { eth0 : 10.10.10.1, eth1 : 10.10.20.2 }

}map jump_map {

type ipv4_address : verdictelements = { 10.10.10.1 : jump Kette1 }

}

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 30 / 34

Page 93: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

IntervalleBereiche, die nicht durch Netzmasken abgedeckt werdendirekt, 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

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 31 / 34

Page 94: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

IntervalleBereiche, die nicht durch Netzmasken abgedeckt werdendirekt, 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

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 31 / 34

Page 95: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Beispiel – Praxis

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 32 / 34

Page 96: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Quellen

http://lwn.net/Articles/324251/ – Ankündigung nftableshttp://home.regit.org/* – Eric Leblond (Core Entwickler)slideshare.net – Kernel-recipes-2013 – nftables Vortrag –Eric Leblondhttp://people.netfilter.org/wiki-nftables/

B1 Systems GmbHnftables – Der neue Paketfilter im

Linux-Kernel 33 / 34

Page 97: nftables–DerneuePaketfilterim Linux-Kernel · nftables–DerneuePaketfilterim Linux-Kernel CLT201415.März2014 Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH

Vielen Dank für die Aufmerksamkeit!Bei weiteren Fragen wenden Sie sich bitte an [email protected]

oder +49 (0)8457 - 931096

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