19.04.2023

Linux Firewall

IPTables / IP6Tables
NFTables
Debian Firewall einrichten
UFW (Uncomplicated Firewall)
sonstiges

Navigation
Firewall Grundlagen
Befehle / Syntax
sonstiges

Links
Netfilter/NFTables Projekt
Netfilter HowTo
Netfilter Wiki

- Kopie der Quellen erstellen

git clone git://git.netfilter.org/nftables
Seitenanfang

Firewall Grundlagen

Pakete werden von jeder eingebauten Kette unter Verwendung der folgenden Tabellen verarbeitet.

- In Tabellen werden Filterregeln zu Gruppen zusammengefasst.

Tabellen von nftables
Tabelle (Standard) Beschreibung
ip IPv4
ip6 IPv6
arp APR
bridge Bridge
inet (ab Kernel 3.14)

- Jede Tabelle enthält verschiedene Chains. Chains enthalten die eigentlichen Firewall Regeln, sie legen fest, wann ein Paket geprüft wird.

Chains (Ketten) von nftables
Chain für Tabelle Beschreibung
INPUT filter, mangle, security Pakete, für einen lokalen Prozess
OUTPUT filter, nat, mangle, raw, security Pakete, von einem lokalen Prozess
FORWARD filter, mangle, security Pakete, die nur weitergeleitet (geroutet) werden
PREROUTING nat, mangle, raw Pakete, bevor diese geroutet werden
POSTROUTING nat, mangle Pakete, nachdem diese geroutet würden

 

Aktionen, die auf ein Paket angewendet werden
Aktion Beschreibung
ACCEPT Paket wird akzeptiert und angenommen
DROP Paket wird nicht angenommen, der Sender erhält keine Nachricht
REJECT Paket wird nicht angenommen, der Sender wird benachrichtigt
QUEUE Paket passiert den Userspace (falls vom Kernel unterstützt)
RETURN Durchlaufen dieser Kette wird beendet und mit der nächsten Regel der vorherigen (aufrufenden) Kette fortgefahren wird
LOG Paketdaten werden im System-Log festgehalten
SNAT (Source-NAT) ändert die Quelladresse des Paketes und wird nur in der POSTROUTING Kette verwendet. (nur nat Tabelle)
MASQUERADE Ersetzt die Quelladresse des Pakets, durch die IP-Adresse der Schnittstelle, auf dem es den aktuellen Host Rechner verlässt
DNAT (Destination-NAT) ändert die Zieladresse des Paketes und wird nur in der PREROUTING Kette verwendet.
REDIRECT ändert die Zieladresse oder ZielPort des Paketes

Wenn einem Chain eine Regel hinzugefügt werden soll, sind die Tables und Chains anzugeben.

 

Seitenanfang

Befehle / Syntax

Befehl Beschreibung
Tables
nft add table ip filter Tables erstellen
nft delete table ip filter Tables löschen (nur leere Tables lassen sich löschen)
nft flush table ip filter Tables leeren
Chains
nft add chain ip filter input { type filter hook input priority 0; } INPUT Chain erstellen
nft delete chain ip filter input INPUT Chains löschen (nur leere Chains lassen sich löschen)
Befehle
add Regel wird als letzte angehängt
insert wird eingefügt, bestehende bearbeitet
nft -i Interaktiven Modus starten
   
   
   
Regeln
nft list table filter zeigt vorhandene Regeln an
nft list table filter -a zeigt eindeutigen Handle der Regel an
nft delete rule filter output handle 5 Regel mit Handle 5 löschen
nft insert rule filter output meta oif lo accept Regel das ausgehende Pakete von Loopback Device erlaubt (oif - Out Interface)
nft insert rule filter input meta iif eth1 accept Regel die eingehende Pakete von ETH1 erlaubt
nft insert rule filter input ct state established accept Connection Tracking einrichten
nft list table filter > rule set alle Regeln in Datei schreiben
nft -f files/nftables/ipv4-filter Initialisierung mit leerem Regelwerk, Chains INPUT, FORWARD, OUTPUT werden erstellt.
nft add rule filter output ip daddr 10.10.20.3 counter dem Chain OUTPUT in der Table FILTER wir eine Regel hinzugefügt
nft add rule ip filter input ip saddr 192.168.2.1 drop Chain INPUT in der Table FILTER, ankommende Paktete mit der Quelladresse 192.168.2.1 werden verworfen
nft add rule ip filter input tcp dport { ssh, http, https } accept ankommende Pakete auf dem Zielport 22, 80, 443 zulassen
nft add rule filter input tcp dport 1234 log drop mehrere Aktionen sind möglich, ankommende TCP Pakete mit Zielport 1234 werden gelogt und dann verworfen
   
   

- Nftables initialisieren, Tables und Chains löschen/leeren

nft flush table filter
nft list table filter
table ip 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;
}
}
nft delete chain filter input
nft delete chain filter output
nft -f ruleset

- (Interaktiver Modus) initialisieren Regelwerk anzeigen

nft> list table filter
table ip 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;
}
}
nft>

 

 

 

 

Seitenanfang

sonstiges