--- security_firewall_default_policy: drop security_firewall_allowed_ports: - "22/tcp" - "80/tcp" - "443/tcp" # Interfaces that accept all traffic (loopback is always recommended) security_nftables_trusted_interfaces: - lo # IPs/CIDRs that bypass all filtering security_nftables_trusted_ips: [] # - 10.0.0.0/8 # - 192.168.1.100 # IPs/CIDRs dropped immediately on input and forward security_nftables_blocked_ips: [] # - 203.0.113.0/24 # Extended port ranges with optional source filter # - { start: 8000, end: 9000, proto: tcp, source: "10.0.0.0/8", comment: "internal services" } security_nftables_allowed_port_ranges: [] security_nftables_forward_policy: accept security_nftables_output_policy: accept # Rate limiting security_nftables_rate_limit_enabled: true security_nftables_icmp_rate: "10/second" security_nftables_new_conn_rate: "100/second" security_nftables_new_conn_burst: 50 # Log packets that hit the default drop policy security_nftables_log_dropped: false security_nftables_log_prefix: "nftables-dropped: " # Raw nftables rule strings injected into the input chain # Each entry is a single nft rule line (without leading whitespace) security_nftables_custom_input_rules: [] # - 'ip saddr 10.0.0.0/8 tcp dport 8080 accept comment "internal dashboard"' # Raw nftables rule strings injected into the forward chain security_nftables_custom_forward_rules: [] # Raw nftables rule strings injected into the output chain security_nftables_custom_output_rules: [] # DNAT rules — port forwarding # Optional fields: proto (default: tcp), source, iif (input interface), comment # - { port: 8080, dest: "10.0.0.5:80", proto: "tcp", source: "0.0.0.0/0", comment: "web backend" } # - { port: 25565, dest: "10.13.45.1:25565", proto: "tcp", iif: "enp3s0", comment: "Minecraft" } security_nftables_dnat_rules: [] # SNAT rules — source NAT / masquerade # All match fields are optional; combine as needed: # source — match ip saddr (e.g. "10.0.0.0/24") # dest — match ip daddr (e.g. "10.13.45.1") # proto — protocol for dport/sport matching (e.g. "tcp", "udp") # dport — match destination port (requires proto) # sport — match source port (requires proto) # iif — match input interface name # oif — match output interface name # to — SNAT target address (e.g. "100.64.0.1") # masquerade — use masquerade instead of explicit SNAT (bool, default false) # comment — optional rule comment # # Examples: # - { source: "10.0.0.0/24", oif: "eth0", to: "203.0.113.1", comment: "outbound nat" } # - { source: "10.0.0.0/24", oif: "eth0", masquerade: true } # - { oif: "tailscale0", dest: "10.13.45.1", proto: "tcp", dport: "25565", to: "100.64.0.1", comment: "SNAT Minecraft via tailscale" } security_nftables_snat_rules: [] # Interfaces to masquerade (simple outbound NAT shorthand) security_nftables_masquerade_interfaces: [] # - eth0 # Arbitrary nftables config appended verbatim at the end of the file # Use for anything not covered above (custom tables, chains, sets, etc.) security_nftables_custom_config: ""