Cómo administrar firewalls y configuraciones con nftables: Una guía completa y práctica
آموزش فایروال و nftables برای مدیران سرور و کسانی که به امنیت شبکه اهمیت می‌دهند.

Cómo administrar firewalls y configuraciones con nftables: Una guía completa y práctica

Este artículo proporciona instrucciones prácticas sobre cómo usar nftables como un nuevo cortafuegos para Linux y un sistema de gestión de seguridad de red, con ejemplos prácticos.
0 acciones
0
0
0
0

چطور مدیریت فایروال و nftables را از پایه تا پیشرفته انجام دهیم؟

مدیریت فایروال و تنظیمات nftables برای هر مدیر سیستم، DevOps یا صاحب سرور حیاتی است. در این راهنما به زبان فنی و عملیاتی از مبانی تا سناریوهای پیشرفته همراه با مثال‌های قابل اجرا و فایل کانفیگ می‌پردازیم.

مفاهیم اصلی nftables

nftables اجزای مشخصی دارد که برای طراحی یک ruleset باید با آن‌ها آشنا باشید:

  • family: خانواده پروتکل (مثلاً inet برای هم‌زمان IPv4 و IPv6، ip، ip6، arp، bridge).
  • table: کانتینر قوانین (مثلاً inet filter).
  • chain: زنجیره قوانین با hook و type (input, forward, output) و priority.
  • rule: شرط‌ها و اکشن‌ها (accept, drop, reject, counter, log).
  • set / map: مجموعه‌ها برای نگهداری IPها، پورت‌ها یا مقادیر برای matching سریع.
  • conntrack: رهگیری وضعیت اتصالات (established, related, new, invalid).

چرا nftables؟

دلایل اصلی انتخاب nftables عبارت‌اند از:

  • پشتیبانی هم‌زمان IPv4 و IPv6 با استفاده از family inet.
  • عملکرد بهتر و امکان atomic replace برای بارگذاری امن ruleset.
  • Apoyo para setها با timeout y maps برای NAT پیشرفته.
  • سازگاری با iptables از طریق compatibility layer در توزیع‌های جدید.

شروع سریع: نصب، بررسی و ذخیره‌سازی قوانین

دستورات پایه برای بررسی، بارگذاری و ذخیره‌سازی ruleset:

nft --version
nft list ruleset
nft -f /etc/nftables.conf
nft list ruleset > /etc/nftables.conf
systemctl enable --now nftables

مثال عملی: یک ruleset پایه (برای سرور لینوکسی)

فایل پیشنهادی /etc/nftables.conf با استفاده از family inet تا هم IPv4 و هم IPv6 پوشش داده شود:

table inet filter {
    set allowed_ssh {
        type ipv4_addr; flags timeout;
    }

    chain input {
        type filter hook input priority 0;
        policy drop;

        # loopback
        iif "lo" accept

        # established/related
        ct state established,related accept

        # ICMP/ICMPv6
        ip protocol icmp accept
        ip6 nexthdr ipv6-icmp accept

        # Allow SSH with rate limit & whitelist
        tcp dport 22 ct state new limit rate 3/minute accept
        ip saddr @allowed_ssh accept

        # HTTP/HTTPS
        tcp dport { 80, 443 } ct state new accept

        # DNS
        udp dport 53 accept
        tcp dport 53 accept

        # log and drop others
        counter log prefix "nft-drop: " flags all drop
    }

    chain forward {
        type filter hook forward priority 0; policy drop;
    }

    chain output {
        type filter hook output priority 0; policy accept;
    }
}

Explicación: این ruleset پایه loopback، اتصالات موجود، SSH (با rate limit)، HTTP/HTTPS و DNS را اجازه می‌دهد و بقیه ترافیک را لاگ و drop می‌کند. set allowed_ssh برای whitelist آی‌پی‌ها با timeout مناسب است.

مدیریت setها و بلاک موقت

ایجاد و مدیریت setها برای whitelist یا blacklist بسیار کاربردی است. مثال‌ها:

nft add element inet filter allowed_ssh { 203.0.113.5 timeout 1h }
nft list set inet filter allowed_ssh

برای بلاک موقت مهاجمین، یک set با flag se acabó el tiempo بسازید و آی‌پی‌ها را برای مدت مشخص اضافه کنید.

NAT، Port Forwarding و Masquerade

نمونه NAT برای VPS که چند سرویس را پشت یک IP خصوصی منتشر می‌کند:

table ip nat {
    chain prerouting {
        type nat hook prerouting priority 0;
        tcp dport 2222 dnat to 10.0.0.10:22
        tcp dport 8443 dnat to 10.0.0.20:443
    }

    chain postrouting {
        type nat hook postrouting priority 100;
        oif "eth0" masquerade
    }
}

Nota: در معماری‌های cloud با چندین آدرس، از masquerade یا src NAT برای خروجی استفاده کنید. برای IPv6 از DNAT یا CIDR mapping مناسب بهره ببرید.

مقابله با DDoS و حملات SYN

nftables امکاناتی برای نرخ‌محدودسازی و flowtable دارد که می‌توان از آن‌ها برای کاهش اثر حملات استفاده کرد.

# allow limited number of new SYNs per second
tcp flags syn ct state new limit rate 10/second burst 20 accept

# synproxy can be used in extreme cases (kernel feature)
# nftables can match and direct traffic to synproxy or other mitigations

برای حملات حجمی بزرگ، ترکیب فایروال سرور (nftables) با یک لایه ضد DDoS شبکه‌ای بهترین رویکرد است تا ترافیک مخرب قبل از رسیدن به سرور فیلتر شود.

لاگینگ و مانیتورینگ قوانین

ابزارها و دستورات مفید برای مانیتورینگ:

  • نمایش counters برای هر rule: nft list ruleset.
  • فعال‌سازی لاگ با prefix و محدودسازی نرخ:
nft add rule inet filter input tcp dport 22 counter log prefix "ssh-drop: " limit rate 10/minute drop

ابزارهای دیگر: journalctl -f -u nftables, volcado de tcp, tshark, و nft monitor.

Consejos prácticos de seguridad

چند توصیه عملی و مهم:

  • همیشه پشتیبان بگیرید: قبل از deploy، خروجی nft list ruleset را ذخیره کنید.
  • از بارگذاری اتمیک استفاده کنید: nft -f /etc/nftables.conf به‌صورت atomic فایل را لود می‌کند.
  • از قفل شدن SSH جلوگیری کنید: یک rule accept موقت برای IP خود قرار دهید یا از کنسول بیرونی استفاده کنید.
  • اسکریپت undo خودکار: هنگام اعمال تغییرات حساس، یک rollback خودکار در صورت عدم تأیید تنظیم کنید.

Consejos prácticos para diferentes aplicaciones

برای مدیران وردپرس و وب‌سایت‌ها

تنها پورت‌های ضروری (80/443/22) را باز کنید. از rate limit برای فرم‌های ورود و XML-RPC استفاده کنید و مجموعه‌ای از IPهای پنالتی برای جلوگیری از brute-force بسازید. ترکیب با CDN و WAF توصیه می‌شود.

Para programadores y DevOps

از family inet برای هم‌زمان پشتیبانی IPv4/IPv6 استفاده کنید. قوانین را در VCS نگهداری و از CI/CD برای اعمال خودکار استفاده کنید. برای تست تغییرات از بارگذاری از فایل و قابلیت rollback سریع بهره ببرید.

Para comerciantes (VPS para comercio)

لوکیشن نزدیک به سرورهای بروکر یا صرافی برای کمترین latency انتخاب کنید. ترافیک inbound و outbound را به IPهای لازم محدود کنید و از whitelist برای جلوگیری از بسته‌شدن پورت‌ها در زمان آپدیت بهره ببرید.

Para jugadores (VPS para juegos)

پورت‌های UDP مورد نیاز بازی را باز کنید و conntrack timeouts را برای UDP بهینه کنید. در صورت نیاز به NAT، از flowtable برای عملکرد بهتر استفاده کنید و لوکیشن با پینگ پایین انتخاب نمایید.

برای هوش مصنوعی و GPU Cloud

دسترسی به پورت‌های مدیریت (SSH, Kubernetes API) را فقط از IPهای مشخص مجاز کنید. در محیط‌های توزیع‌شده قوانین بین نودها را تعریف و عملکرد conntrack را بررسی کنید. استفاده از شبکه اختصاصی و BGP/Private VLAN برای امنیت و throughput بالا توصیه می‌شود.

نکات عملی برای پیاده‌سازی و نگهداری

چند نکته عملی برای فرایند نگهداری:

  • پشتیبان‌گیری همیشگی از ruleset قبل از تغییر.
  • Uso de atomic replace Con nft -f /etc/nftables.conf.
  • قرار دادن یک rule موقت accept برای IP مدیریتی قبل از اعمال تغییرات حساس.
  • راه‌اندازی cron یا systemd-timer برای rollback خودکار در صورت عدم تأیید.

ابزارها و دیباگ

ابزارهای کلیدی برای دیباگ و مانیتورینگ:

  • nft list ruleset
  • nft monitor / nft monitor trace
  • ss -tunlp برای نمایش پورت‌ها
  • conntrack -L از بسته conntrack-tools
  • volcado de tcp O tshark برای packet capture

نتیجه‌گیری و توصیه‌های عملی

nftables ابزار قدرتمندی است که مدیریت فایروال را مدرن، سریع و منعطف می‌کند. با استفاده از family inet، setها، rate limit و conntrack می‌توانید یک لایه حفاظتی مؤثر بسازید که برای وب‌سرور، VPS ترید، گیمینگ و GPU cloud مناسب است.

در کنار پیکربندی سرور، ترکیب با سرویس‌های شبکه‌ای مانند CDN، Anti-DDoS و BGP که در ۸۵+ لوکیشن جهانی ارائه می‌شوند، امنیت و دسترسی‌پذیری را به سطح قابل‌اطمینان‌تری می‌رساند.

Preguntas frecuentes

También te puede gustar