Как управлять брандмауэрами и настройками с помощью nftables: полное и практическое руководство.
آموزش فایروال و nftables برای مدیران سرور و کسانی که به امنیت شبکه اهمیت می‌دهند.

Как управлять брандмауэрами и настройками с помощью nftables: полное и практическое руководство.

В этой статье представлены практические инструкции по использованию nftables в качестве нового средства управления сетевой безопасностью в Linux, с примерами из практики.
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 тайм-аут بسازید و آی‌پی‌ها را برای مدت مشخص اضافه کنید.

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 که در ۸۵+ لوکیشن جهانی ارائه می‌شوند، امنیت و دسترسی‌پذیری را به سطح قابل‌اطمینان‌تری می‌رساند.

Часто задаваемые вопросы

Вам также может понравиться
Анализ трафика с помощью mitmproxy: полное руководство по отладке и безопасности.

Анализ трафика с помощью mitmproxy: полное руководство по отладке и безопасности.

В этой статье мы рассмотрим инструмент mitmproxy, используемый для анализа и отладки HTTP/HTTPS-трафика. От установки и настройки до советов по безопасности и практического применения — это руководство поможет вам эффективно управлять вашим трафиком.
Пошаговое руководство по настройке и конфигурации OpenVPN в Ubuntu 22.04

Пошаговое руководство по настройке и конфигурации OpenVPN в Ubuntu 22.04

В этой статье вы узнаете, как установить и настроить сервер OpenVPN на Ubuntu 22.04. Руководство охватывает различные этапы, включая установку пакетов, настройку брандмауэра и советы по безопасности.

Как собирать метрики для управляемого DBaaS на DigitalOcean

Введение В этом руководстве мы научимся собирать агрегированные показатели для базы данных PostgreSQL, управляемой в DigitalOcean, с помощью…
Включение и отключение Cloudflare Universal SSL — практическое и безопасное руководство для администраторов серверов и разработчиков.

Включение и отключение Cloudflare Universal SSL — практическое и безопасное руководство для администраторов серверов и разработчиков.

В этой статье мы подробно и технически объясним, как включить и отключить Universal SSL в Cloudflare. Это руководство поможет вам максимально эффективно использовать этот сервис для защиты вашего сайта. Узнайте, как его включить и отключить, и ознакомьтесь с настройками безопасности.