Nftables Grundgerüst Firewall: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „Kategorie:nftables = Eigenschaften der Firewall = * Der Host darf mit sich selbst kommunizieren * Pings werden vom Host beantwortet * Remotezugriff über e…“)
 
 
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 3: Zeile 3:
 
* Der Host darf mit sich selbst kommunizieren
 
* Der Host darf mit sich selbst kommunizieren
 
* Pings werden vom Host beantwortet
 
* Pings werden vom Host beantwortet
* Remotezugriff über einen SSH Port ist freigeschaltet
+
* Remotezugriff über den SSH Port aus dem LAN (192.168.178.0/24) ist freigeschaltet
 
* Bereits etablierte und verwandte Verbindungen werden zugelassen
 
* Bereits etablierte und verwandte Verbindungen werden zugelassen
* Auf Pakete, die das WAN-Interface verlassen, wird [[nftables Masquerade|Masquerading]] angewendet
+
* Auf Pakete, die das WAN-Interface (''enp0s8'') verlassen, wird [[nftables Masquerade|Masquerading]] angewendet
 +
* Verworfene Pakete werden ins [[journalctl|Kernel-log]] geschrieben
 +
 
 +
= Konfiguration =
 +
* nftables bringt eine eigene Datei und den entsprechenden [[:Kategorie:Systemd|Systemd]]-Dienst für eine rebootfähige Konfiguration mit
 +
* '''vim ''/etc/nftables.conf'' '''
 +
 
 +
#!/usr/sbin/nft -f
 +
 +
flush ruleset
 +
 +
define landev="enp0s3"
 +
define wandev="enp0s8"
 +
 +
table inet filter {
 +
chain input {
 +
type filter hook input priority 0; policy drop;
 +
iif "lo" accept
 +
ct state { established, related } accept
 +
icmp type echo-request accept
 +
iif $landev ip saddr 192.168.178.0/24 tcp dport 22 accept
 +
log prefix "nftables drop input:"
 +
}
 +
 +
chain output {
 +
type filter hook output priority 0; policy drop;
 +
oif "lo" accept
 +
ct state { established, related } accept
 +
log prefix "nftables drop output:"
 +
}
 +
 +
chain forward {
 +
type filter hook forward priority 0; policy drop;
 +
ct state { established, related } accept
 +
log prefix "nftables drop forward:"
 +
}
 +
}
 +
 +
table inet nat {
 +
chain postrouting {
 +
type nat hook postrouting priority 100;
 +
oif $wandev masquerade
 +
}
 +
}
 +
 
 +
* '''systemctl enable --now nftables'''
 +
* '''nft list ruleset'''
 +
 
 +
table inet filter {
 +
chain input {
 +
type filter hook input priority filter; policy drop;
 +
iif "lo" accept
 +
ct state { established, related } accept
 +
iif "enp0s3" ip saddr 192.168.178.0/24 tcp dport 22 accept
 +
log prefix "nftables drop input:"
 +
}
 +
 +
chain output {
 +
type filter hook output priority filter; policy drop;
 +
oif "lo" accept
 +
ct state { established, related } accept
 +
log prefix "nftables drop output:"
 +
}
 +
 +
chain forward {
 +
type filter hook forward priority filter; policy drop;
 +
ct state { established, related } accept
 +
log prefix "nftables drop forward:"
 +
}
 +
}
 +
table inet nat {
 +
chain postrouting {
 +
type nat hook postrouting priority srcnat; policy accept;
 +
oif "enp0s8" masquerade
 +
}
 +
}

Aktuelle Version vom 18. September 2024, 10:33 Uhr

Eigenschaften der Firewall

  • Der Host darf mit sich selbst kommunizieren
  • Pings werden vom Host beantwortet
  • Remotezugriff über den SSH Port aus dem LAN (192.168.178.0/24) ist freigeschaltet
  • Bereits etablierte und verwandte Verbindungen werden zugelassen
  • Auf Pakete, die das WAN-Interface (enp0s8) verlassen, wird Masquerading angewendet
  • Verworfene Pakete werden ins Kernel-log geschrieben

Konfiguration

  • nftables bringt eine eigene Datei und den entsprechenden Systemd-Dienst für eine rebootfähige Konfiguration mit
  • vim /etc/nftables.conf
#!/usr/sbin/nft -f

flush ruleset

define landev="enp0s3"
define wandev="enp0s8"

table inet filter {
	chain input {
		type filter hook input priority 0; policy drop;
		iif "lo" accept
		ct state { established, related } accept
		icmp type echo-request accept
		iif $landev ip saddr 192.168.178.0/24 tcp dport 22 accept
		log prefix "nftables drop input:"
	}

	chain output {
		type filter hook output priority 0; policy drop;
		oif "lo" accept
		ct state { established, related } accept
		log prefix "nftables drop output:"
	}

	chain forward {
		type filter hook forward priority 0; policy drop;
		ct state { established, related } accept
		log prefix "nftables drop forward:"
	}
}

table inet nat {
	chain postrouting {
		type nat hook postrouting priority 100;
		oif $wandev masquerade
	}
}
  • systemctl enable --now nftables
  • nft list ruleset
table inet filter {
	chain input {
		type filter hook input priority filter; policy drop;
		iif "lo" accept
		ct state { established, related } accept
		iif "enp0s3" ip saddr 192.168.178.0/24 tcp dport 22 accept
		log prefix "nftables drop input:"
	}

	chain output {
		type filter hook output priority filter; policy drop;
		oif "lo" accept
		ct state { established, related } accept
		log prefix "nftables drop output:"
	}

	chain forward {
		type filter hook forward priority filter; policy drop;
		ct state { established, related } accept
		log prefix "nftables drop forward:"
	}
}
table inet nat {
	chain postrouting {
		type nat hook postrouting priority srcnat; policy accept;
		oif "enp0s8" masquerade
	}
}