نحوه مدیریت فایروال و تنظیمات با nftables: راهنمای کامل و عملی
آموزش فایروال و nftables برای مدیران سرور و کسانی که به امنیت شبکه اهمیت می‌دهند.

نحوه مدیریت فایروال و تنظیمات با nftables: راهنمای کامل و عملی

در این مقاله آموزش استفاده از nftables به‌عنوان فایروال جدید لینوکس و مدیریت امنیت شبکه به‌صورت عملی و با مثال‌های کاربردی ارائه می‌شود.
0 اشتراک گذاری
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.
  • پشتیبانی از setها با timeout و 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;
    }
}

توضیح: این 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 timeout بسازید و آی‌پی‌ها را برای مدت مشخص اضافه کنید.

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
    }
}

نکته: در معماری‌های 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, tcpdump, tshark, و nft monitor.

نکات امنیتی عملی

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

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

نکات عملی برای کاربردهای مختلف

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

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

برای برنامه‌نویسان و DevOps

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

برای تریدرها (VPS مخصوص ترید)

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

برای گیمرها (VPS مخصوص گیم)

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

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

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

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

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

  • پشتیبان‌گیری همیشگی از ruleset قبل از تغییر.
  • استفاده از atomic replace با 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
  • tcpdump یا tshark برای packet capture

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

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

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

سؤالات متداول

شاید دوست داشته باشید
Best-practices-for-preventing-DNS-and-WebRTC-leaks-when-using-a-VPN

بهترین روش‌های جلوگیری از نشت DNS و WebRTC هنگام استفاده از VPN

استفاده از VPN به‌عنوان یکی از بهترین ابزارهای حفظ حریم خصوصی آنلاین، روزبه‌روز افزایش می‌یابد. اما نکته‌ای که بسیاری از کاربران از آن غافل هستند، این است که حتی با وجود VPN نیز امکان نشت اطلاعات واقعی شما وجود دارد.
راهن‌اندازی HA با Proxmox: راهنمای جامع برای کلاسترهای تولیدی

راه‌اندازی HA با Proxmox: راهنمای جامع برای کلاسترهای تولیدی

این راهنمای جامع به شما کمک می‌کند تا با راه‌اندازی HA با Proxmox، یک کلاستر تولیدی پایدار بسازید. از مراحل اولیه نصب تا پیکربندی‌های امنیتی و عملی، تمامی نکات به تفصیل توضیح داده شده است.
Amazon AWS Lambada

AWS Lambda — اجرای کد بدون سرور (Serverless Computing)

در دنیای امروز که سرعت توسعه و مقیاس‌پذیری حرف اول را می‌زند، سرویس‌های Serverless یا «بدون سرور» نقش بسیار مهمی در تحول معماری نرم‌افزار دارند. AWS Lambda یکی از مهم‌ترین سرویس‌های آمازون در این حوزه است که به توسعه‌دهندگان اجازه می‌دهد کد خود را بدون مدیریت سرور اجرا کنند.به کمک Lambda دیگر نیازی به راه‌اندازی، پشتیبانی یا نگهداری از سرورها ندارید — تنها کافی است کد خود را بنویسید، و آمازون باقی کارها را انجام می‌دهد.