#!/usr/sbin/nft -f flush ruleset table inet filter { chain input { type filter hook input priority 0; policy drop; iif lo accept ct state established,related accept ct state invalid drop icmp type echo-request limit rate 5/second accept ip6 nexthdr icmpv6 icmpv6 type echo-request limit rate 5/second accept tcp dport 22 ip saddr {{ ssh_admin_access_cidr }} accept {% if enable_nginx_proxy %} tcp dport 443 accept {% else %} tcp dport {{ jumphost_app_port }} accept {% endif %} } chain forward { type filter hook forward priority 0; policy drop; } chain output { type filter hook output priority 0; policy drop; oif lo accept ct state established,related accept udp dport 53 accept tcp dport 53 accept udp dport 123 accept {% for net in target_networks %} ip daddr {{ net }} accept {% endfor %} # ACME/interne PKI (tls_certificates-Rolle) und OS-Paketquellen tcp dport 443 accept tcp dport 80 accept # Befund B5 (Umsetzungsauftrag_Sonnet5.md Teil A.3): ohne diese Zeile # verwirft "policy drop" alles Uebrige lautlos -- z.B. guacds RDP-Pakete # zu einem Ziel ausserhalb von target_networks. Das sieht der Benutzer # nur als "Server timeout" (guacamole-common-js), im Journal steht dazu # nichts. Rate-limitiert geloggt, damit ein Fehlkonfigurationsfall # (falsches/fehlendes target_networks-Netz) in Sekunden statt Tagen # auffaellt, ohne das Journal bei einem Portscan zu fluten. limit rate 10/second log prefix "jumphost-output-drop: " counter drop } }