nftables.test.rules 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. #!/usr/sbin/nft -f
  2. # Well known ports 0:1023
  3. # Registered ports 1024:49151
  4. # Goldielocks zone 32768:65535
  5. # Dynamic/Private 49152:65535
  6. #
  7. # WAN 86.83.121.29
  8. # vps 185.66.250.42
  9. # tor-exit 185.87.185.45
  10. # To preent double enries when loading rules when rule smight already be present.
  11. flush ruleset
  12. # IPv6 specific
  13. #add table ip6 filter
  14. #add chain ip6 filter INPUT { type filter hook input priority 0; policy accept; }
  15. #add chain ip6 filter FORWARD { type filter hook forward priority 0; policy accept; }
  16. #add chain ip6 filter OUTPUT { type filter hook output priority 0; policy accept; }
  17. #add chain ip6 filter clutter
  18. # inet = IPv4 & IPv6 combined
  19. add table inet filter
  20. add chain inet filter INPUT { type filter hook input priority 0; policy accept; }
  21. add chain inet filter FORWARD { type filter hook forward priority 0; policy accept; }
  22. add chain inet filter OUTPUT { type filter hook output priority 0; policy accept; }
  23. add chain inet filter clutter
  24. # Local loopback
  25. add rule inet filter INPUT iifname != "lo" ip daddr 127.0.0.0/8 limit rate 5/minute burst 5 packets counter log prefix "iptables dropped 127.0.0.0/8," level debug
  26. add rule inet filter INPUT iifname != "lo" ip daddr 127.0.0.0/8 counter drop
  27. add rule inet filter INPUT iifname "lo" counter accept
  28. add rule inet filter OUTPUT oifname "lo" counter accept
  29. # Active connections
  30. add rule inet filter INPUT ct state related,established counter accept
  31. add rule inet filter OUTPUT ct state related,established counter accept
  32. # ICMPv6 accept neighbour discovery otherwise IPv6 connectivity breaks | Accept dynamic IPv6 configuration (DHCP) | Accept sending of listenerreport
  33. add rule inet filter INPUT ip6 nexthdr icmpv6 icmpv6 type { nd-redirect, nd-neighbor-solicit, nd-router-advert, nd-neighbor-advert } accept
  34. add rule inet filter OUTPUT ip6 nexthdr icmpv6 icmpv6 type { nd-redirect, nd-neighbor-solicit, nd-router-advert, nd-neighbor-advert, echo-request, mld2-listener-report } accept # mld2-listener-report does not seem to work, TYPE 143 is not filtered out.
  35. add rule inet filter OUTPUT icmpv6 type { mld2-listener-report } accept # Workaround for mld2-listener-report from the previous line
  36. # ICMP ping
  37. add rule inet filter OUTPUT icmp type echo-request counter accept
  38. # SSH
  39. add rule inet filter INPUT tcp sport 1024-65535 tcp dport 22 counter accept
  40. add rule inet filter OUTPUT tcp sport 32768-65535 tcp dport 22 counter accept
  41. # WHOIS
  42. add rule inet filter OUTPUT tcp sport 32768-65535 tcp dport 43 counter accept
  43. # DNS
  44. add rule inet filter OUTPUT udp sport 1024-65535 udp dport 53 counter accept
  45. add rule inet filter OUTPUT tcp sport 32768-65535 tcp dport 53 counter accept
  46. add rule inet filter INPUT meter DNSTHROTTLE_UDP_INGRESS { ip saddr and 255.255.255.0 timeout 60s limit rate 30/minute burst 10 packets} udp sport 1024-65535 udp dport 53 counter accept
  47. add rule inet filter INPUT meter DNSTHROTTLE_TCP_INGRESS { ip saddr and 255.255.255.0 timeout 60s limit rate 30/minute burst 10 packets} tcp sport 32768-65535 tcp dport 53 counter accept
  48. #add rule inet filter INPUT udp sport 1024-65535 udp dport 53 counter accept
  49. #add rule inet filter INPUT tcp sport 32768-65535 tcp dport 53 counter accept
  50. # DHCP client
  51. add rule inet filter INPUT ip daddr 255.255.255.255 udp sport 67 udp dport 68 counter accept
  52. add rule inet filter OUTPUT udp sport 68 udp dport 67 counter accept
  53. # HTTP(s)
  54. add rule inet filter INPUT tcp dport 80 counter accept
  55. add rule inet filter OUTPUT tcp sport 32768-65535 tcp dport 80 counter accept
  56. add rule inet filter INPUT tcp dport 443 counter accept
  57. add rule inet filter OUTPUT tcp sport 32768-65535 tcp dport 443 counter accept
  58. # NTP
  59. add rule inet filter OUTPUT udp sport 32768-65535 udp dport 123 counter accept
  60. # Privoxy
  61. add rule inet filter INPUT tcp sport 32768-65535 tcp dport 8118 counter accept comment "Privoxy"
  62. # OpenPGP HTTP Key servers
  63. add rule inet filter OUTPUT tcp sport 32768-65535 tcp dport 11371 counter accept comment "OpenPGP HTTP key servers"
  64. # Traceroute
  65. add rule inet filter OUTPUT udp sport 32768-65535 udp dport 6881-33534 counter accept comment "Traceroute"
  66. # Attacks, crawls, scans, etc to clutter chain
  67. add rule inet filter INPUT ip protocol icmp counter jump clutter
  68. add rule inet filter INPUT ip daddr 255.255.255.255 counter jump clutter comment "Broadcast messages"
  69. add rule inet filter INPUT udp dport 19 counter jump clutter comment "Character generator, looping to echo = DDoS"
  70. add rule inet filter INPUT tcp dport 23 counter jump clutter
  71. add rule inet filter INPUT udp dport 53 counter jump clutter
  72. add rule inet filter INPUT udp dport 111 counter jump clutter comment "Probe/fingerprint Nix OS"
  73. add rule inet filter INPUT tcp dport 445 counter jump clutter comment "MS-DS active directory"
  74. add rule inet filter INPUT tcp dport 2323 counter jump clutter comment "3d-nfsd"
  75. add rule inet filter INPUT udp dport 5060 counter jump clutter
  76. add rule inet filter INPUT tcp dport 3389 counter jump clutter comment "MS terminal server RDP"
  77. # Log & drop
  78. add rule inet filter INPUT limit rate 5/minute burst 5 packets counter log prefix "netfilter dropped: " level debug
  79. add rule inet filter INPUT counter drop
  80. add rule inet filter FORWARD limit rate 5/minute burst 5 packets counter log prefix "netfilter forward dropped: " level debug
  81. add rule inet filter FORWARD counter drop
  82. add rule inet filter OUTPUT limit rate 5/minute burst 5 packets counter log prefix "netfilter rejected: " level debug
  83. add rule inet filter OUTPUT counter reject
  84. add rule inet filter clutter limit rate 5/minute burst 5 packets counter log prefix "netfilter clutter dropped: " level debug
  85. add rule inet filter clutter counter drop