Nftables Host absichern
Zur Navigation springen
Zur Suche springen
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 zugelassen werden tcp 22,25,53,80,465,443, udp 53 und icmp
- 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 define remote_tcp_ports = { 22,25,53,80,465,443 } define remote_udp_ports = { 53 } define local_tcp_ports = { 22,80,443 } 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 } chain forward { type filter hook forward priority filter; policy drop; ct state established,related accept } chain output { type filter hook output priority filter; policy drop; ct state established,related accept ct state new oifname "lo" accept ct state new tcp dport $remote_tcp_ports accept ct state new udp dport $remote_udp_ports accept ct state new icmp type echo-request 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.
- cat /etc/nftables.conf
#!/usr/sbin/nft -f define remote_tcp_ports = { 22,25,53,80,465,443 } define remote_udp_ports = { 53 } define local_tcp_ports = { 22,80,443 } 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 log prefix "--nftables-drop-input--" } chain forward { type filter hook forward priority filter; policy drop; ct state established,related accept log prefix "--nftables-drop-forward--" } chain output { type filter hook output priority filter; policy drop; ct state established,related accept ct state new oifname "lo" accept ct state new tcp dport $remote_tcp_ports accept ct state new udp dport $remote_udp_ports accept log prefix "--nftables-drop-output--" } }
Wir schauen und die Log Datei an
- tail -f /var/log/syslog
2022-11-09T19:07:57.409090+01:00 fedora kernel: --nftables-drop-output--IN= OUT=ens18 SRC=10.0.10.115 DST=8.8.8.8 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=43885 DF PROTO=TCP SPT=55566 DPT=87 WINDOW=64240 RES=0x00 SYN URGP=0
Aktivieren der Firewall beim Systemstart
- systemctl enable nftables --now