#!/usr/sbin/nft -f flush ruleset # ============================================================================== # 🌐 ТАБЛИЦА IPV4 (Только для IPv4 трафика) # ============================================================================== table ip filter { set trusted_ips { type ipv4_addr; flags interval; elements = { 193.123.36.107, # oracle 1 129.151.237.120, # oracle 2 65.21.73.59, # pbs2.mlp.pp.ua 168.119.210.104, # Gia2 144.76.74.132, # BKU 65.108.104.32, # MTIR 78.46.64.247, # Gia1 95.217.60.246, # Him, Diol 142.132.149.175, # Kovi 95.217.46.123, # DTZ_PBS } } chain input { type filter hook input priority filter; policy drop; # 🔒 Защита от пустых TCP-пакетов tcp flags & (fin|syn|rst|psh|ack|urg) == 0 counter drop comment "Drop malformed TCP packets" # ❌ Отбросить недопустимые соединения ct state invalid counter drop comment "Drop invalid connections" # ✅ Разрешить установленные и связанные соединения ct state established,related accept comment "Accept established and related connections" # ✅ Разрешить loopback iifname "lo" counter accept comment "Accept loopback interface" # ✅ Доступ с доверенных IP ip saddr @trusted_ips tcp dport { 22, 8006 } counter accept comment "Accept Trusted SSH/WebUI" ip saddr @trusted_ips ip protocol icmp accept comment "Accept ICMPv4" } chain forward { type filter hook forward priority filter; policy drop; } chain output { type filter hook output priority filter; policy accept; } } # ============================================================================== # 🌐 ТАБЛИЦА IPV6 (С доступом по SSH для Сервера 1 и Сервера 2) # ============================================================================== table ip6 filter { # 🏠 Ваши доверенные IPv6-адреса/подсети set trusted_ips_v6 { type ipv6_addr; flags interval; elements = { 2a11:840:20:1b::/64, # Сервер 1 (Вся подсеть /64) 2a03:7380:254:58::/64 # Мак } } chain input { type filter hook input priority filter; policy drop; # ❌ Отбросить недопустимые соединения ct state invalid counter drop comment "Drop invalid connections" # ✅ Разрешить ответы на исходящие запросы сервера ct state established,related accept comment "Accept established and related IPv6 connections" # ✅ Разрешить локальную петлю IPv6 iifname "lo" counter accept comment "Accept loopback interface IPv6" # 🛠️ КРИТИЧНО ДЛЯ IPV6: Разрешаем служебный ICMPv6 трафик icmpv6 type { destination-unreachable, packet-too-big, time-exceeded, parameter-problem, echo-request, echo-reply, nd-router-solicit, nd-router-advert, nd-neighbor-solicit, nd-neighbor-advert } accept comment "Accept vital ICMPv6 packets for IPv6 stack to work" # 🔓 Разрешаем SSH (порт 22) только для ваших серверов из списка trusted_ips_v6 ip6 saddr @trusted_ips_v6 tcp dport 22 counter accept comment "Accept SSH from my IPv6 servers" } chain forward { type filter hook forward priority filter; policy drop; } chain output { type filter hook output priority filter; policy accept; } }