Nftables Host absichern: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 12: Zeile 12:
 
*cat /etc/nftables.conf
 
*cat /etc/nftables.conf
 
  #!/usr/sbin/nft -f
 
  #!/usr/sbin/nft -f
 +
flush ruleset
 +
 
  <span style="color:#8a2be2">define local_tcp_ports = { 22 }</span>
 
  <span style="color:#8a2be2">define local_tcp_ports = { 22 }</span>
 
   
 
   
flush ruleset
 
 
  table inet filter {
 
  table inet filter {
 
         chain input {
 
         chain input {
Zeile 31: Zeile 32:
 
           }
 
           }
 
  }
 
  }
 +
 
=Wir schalten ping frei=
 
=Wir schalten ping frei=
 
*cat /etc/nftables.conf
 
*cat /etc/nftables.conf

Version vom 25. Juli 2025, 08:11 Uhr

Die ersten wirklichen Regeln die etwas bewirken

  • Momentan wollen wir nur den Host absichern.
  • Darum können wir die forward Kette erstmal aussen vor lassen.
  • Wir beziehen uns also nur auf den Host selbst.
  • Wir wollen nun folgendes tun:
  • Der Rechner soll mit sich selbst über das Loopback Interface kommunizieren können.
  • Vom Rechner selbst nach aussen soll alles zugelassen werden
  • Auf den Rechner soll per "ssh, http und https" zugegriffen werden können.

Die erste sinnvolle Konfiguration

  • cat /etc/nftables.conf
#!/usr/sbin/nft -f
flush ruleset 
define local_tcp_ports = { 22 }

table inet filter {
        chain input {
                type filter hook input priority filter; policy drop;
                ct state established,related accept
                ct state new iif "lo" accept
                ct state new tcp dport $local_tcp_ports accept 

        }
     

        chain output {
                type filter hook output priority filter; policy drop;
                ct state established,related accept
                ct state new accept
          }
}

Wir schalten ping frei

  • cat /etc/nftables.conf
#!/usr/sbin/nft -f
define local_tcp_ports = { 22 }

flush ruleset
table inet filter {
        chain input {
                type filter hook input priority filter; policy drop;
                ct state established,related accept
                ct state new iif "lo" accept
                ct state new tcp dport $local_tcp_ports accept
                ct state new icmp type echo-request accept 
        }
     

        chain output {
                type filter hook output priority filter; policy drop;
                ct state established,related accept
                ct state new accept
          }
}

Wir laden nun die Konfiguration

  • nft -f /etc/nftables.conf

Wir loggen

  • Wir wollen die abgelehnten Pakete loggen.
  • Die Idee dahinter ist, wir schreiben eine Regel kurz bevor die Default Policy greift.
  • Neu: Wir fügen in jeder Kette eine log-Regel ein, um verworfene Pakete zu protokollieren
  • cat /etc/nftables.conf
#!/usr/sbin/nft -f
define local_tcp_ports = { 22 }

flush ruleset
table inet filter {
        chain input {
                type filter hook input priority filter; policy drop;
                ct state established,related accept
                ct state new iifname "lo" accept
                ct state new tcp dport $local_tcp_ports accept
                ct state new icmp type echo-request accept 
                log prefix "--nftables-drop-input--"
        }

     

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

nftables Logging über journalctl

Erklärung
  • journalctl -k -f -g nftables
Nur Logtext ohne Metadaten
  • journalctl -k -f -g nftables -o cat
Logausgabe mit ISO-Zeitformat
  • journalctl -k -f -g nftables -o short-iso
Nur drop-input
  • journalctl -k -f -g nftables-drop-input

Aktivieren der Firewall beim Systemstart

  • systemctl enable nftables --now