UFW یا iptables یا nftables؛ کدام فایروال لینوکس بهتر است؟

UFW یا iptables یا nftables؛ کدام فایروال لینوکس بهتر است؟

جدول محتوا 👇

فایروال اولین لایه دفاع هر سرور لینوکسی است. اما وقتی سراغ تنظیم آن می‌روید، با سه نام روبه‌رو می‌شوید: UFW، iptables و nftables. این سه ابزار رقیب هم نیستند؛ لایه‌های مختلفی از یک سیستم‌اند. در این مقاله توضیح می‌دهیم رابطه آن‌ها چیست، هرکدام چه مزایا و محدودیت‌هایی دارد، همان قانون‌ها در هر سه چطور نوشته می‌شوند و برای سرور شما کدام انتخاب بهتری است.

Netfilter؛ فایروال واقعی در هسته لینوکس

بسته‌های شبکه در لینوکس توسط زیرسیستمی در هسته به نام Netfilter فیلتر می‌شوند. iptables و nftables ابزارهایی هستند که قوانین را به Netfilter تحویل می‌دهند، و UFW یک لایه ساده‌تر روی آن‌هاست. پس سوال درست این نیست که «کدام فایروال قوی‌تر است»، بلکه این است که «با کدام ابزار راحت‌تر و درست‌تر قانون بنویسیم».

iptables؛ ابزار کلاسیک

iptables بیش از دو دهه ابزار استاندارد فایروال لینوکس بوده است. قوانین در جدول‌ها (filter، nat، mangle) و زنجیره‌ها (INPUT، OUTPUT، FORWARD) سازمان‌دهی می‌شوند و به ترتیب از بالا به پایین بررسی می‌شوند.

  • مزایا: مستندات و مثال‌های بسیار زیاد، آشنایی اکثر مدیران سرور، سازگاری با ابزارهای قدیمی.
  • محدودیت‌ها: ابزارهای جداگانه برای IPv4 و IPv6 (iptables و ip6tables)، بررسی خطی قوانین که با هزاران قانون کند می‌شود، و نبود روش اتمیک برای جایگزینی کل مجموعه قوانین.

نکته مهم: در توزیع‌های جدید مثل Ubuntu ۲۲.۰۴ به بعد و Debian ۱۱ به بعد، دستور iptables معمولاً نسخه iptables-nft است؛ یعنی همان نوشتار قدیمی را می‌پذیرد، اما قوانین را در nftables ثبت می‌کند. با iptables -V می‌توانید ببینید کدام نسخه نصب است.

nftables؛ جانشین مدرن

nftables از هسته ۳٫۱۳ به لینوکس اضافه شد و اکنون فریم‌ورک پیش‌فرض فایروال در اغلب توزیع‌هاست. ویژگی‌های اصلی:

  • یک ابزار برای همه: دستور nft جایگزین iptables، ip6tables، arptables و ebtables شده است. خانواده inet قوانین مشترک IPv4 و IPv6 را در یک جدول نگه می‌دارد.
  • Set و Map: می‌توانید هزاران IP یا پورت را در یک مجموعه قرار دهید و با یک قانون بررسی کنید. جستجو در مجموعه‌ها بسیار سریع‌تر از بررسی هزاران قانون جداگانه است.
  • به‌روزرسانی اتمیک: کل فایل قوانین با یک دستور بارگذاری می‌شود؛ یا همه اعمال می‌شوند یا هیچ‌کدام.
  • نوشتار خواناتر: قوانین در یک فایل ساختاریافته نوشته می‌شوند.

UFW؛ رابط ساده

UFW (Uncomplicated Firewall) ابزار پیش‌فرض Ubuntu است و هدفش ساده کردن کارهای رایج است. UFW خودش بسته‌ای فیلتر نمی‌کند؛ دستورهای ساده شما را به قوانین iptables (که در سیستم‌های جدید روی nftables اجرا می‌شود) تبدیل می‌کند.

  • مزایا: یادگیری چند دقیقه‌ای، پروفایل‌های آماده برای سرویس‌ها، محدودیت نرخ ساده با ufw limit.
  • محدودیت‌ها: برای سناریوهای پیچیده، مثل NAT، مسیریابی یا قوانین مبتنی بر Set، مناسب نیست. با Docker هم تداخل شناخته‌شده‌ای دارد که در امنیت Docker توضیح داده‌ایم.

جدول مقایسه

معیار UFW iptables nftables
سطح یادگیری بسیار آسان متوسط متوسط تا پیشرفته
IPv4 و IPv6 خودکار ابزار جداگانه یکپارچه در خانواده inet
کارایی با قوانین بسیار زیاد وابسته به لایه زیرین کاهش می‌یابد بالا با Set و Map
به‌روزرسانی اتمیک ندارد محدود دارد
سناریوهای پیچیده (NAT، مسیریابی) محدود کامل کامل
مناسب برای سرورهای تک‌کاربردی سیستم‌های قدیمی و اسکریپت‌های موجود سرورهای جدید و پیکربندی‌های جدی

یک سیاست، سه نوشتار

سیاست نمونه: همه ورودی‌ها مسدود، به‌جز SSH از یک IP مشخص و وب (۸۰ و ۴۴۳) برای همه.

UFW

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow from 203.0.113.10 to any port 22 proto tcp
sudo ufw allow 80,443/tcp
sudo ufw enable

iptables

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -s 203.0.113.10 --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT
iptables -P INPUT DROP
# همین قوانین برای IPv6 باید جداگانه با ip6tables تکرار شوند

nftables

table inet filter {
    chain input {
        type filter hook input priority 0; policy drop;
        iif "lo" accept
        ct state established,related accept
        ip saddr 203.0.113.10 tcp dport 22 accept
        tcp dport { 80, 443 } accept
    }
}

فایل nftables را در /etc/nftables.conf قرار دهید، با sudo nft -c -f /etc/nftables.conf بررسی کنید و با sudo systemctl enable --now nftables فعال کنید.

کدام را انتخاب کنیم؟

  • UFW: برای اغلب VPSهایی که یک وب‌سایت، اپلیکیشن یا سرویس مشخص اجرا می‌کنند. ساده، کافی و با احتمال خطای کم.
  • nftables: برای سرورهایی با نیاز پیچیده‌تر، مثل NAT، Gateway، فهرست‌های بزرگ IP یا قوانین مشترک IPv4 و IPv6، و هر پیکربندی جدیدی که نیاز به کنترل کامل دارد.
  • iptables: فقط وقتی اسکریپت‌ها یا ابزارهای موجود به آن وابسته‌اند. برای پیکربندی جدید، nftables را انتخاب کنید.

هرگز دو ابزار را همزمان برای مدیریت قوانین به کار نبرید. مثلاً UFW را فعال نگه ندارید و همزمان فایل nftables جداگانه بارگذاری نکنید؛ نتیجه غیرقابل پیش‌بینی خواهد بود.

اشتباه‌های رایج

  • قطع دسترسی SSH: قبل از فعال کردن سیاست «مسدود به‌طور پیش‌فرض»، قانون SSH را اضافه کنید و نشست فعلی را باز نگه دارید.
  • فراموش کردن IPv6: با iptables، اگر ip6tables تنظیم نشود، سرور از طریق IPv6 کاملاً باز است.
  • ذخیره نکردن قوانین: قوانین iptables بعد از ری‌استارت پاک می‌شوند، مگر با بسته iptables-persistent ذخیره شوند.
  • اتکا به فایروال به‌جای سخت‌سازی: فایروال جایگزین امن‌سازی SSH و به‌روزرسانی نرم‌افزارها نیست.

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

برای یک VPS معمولی کدام را انتخاب کنیم؟

UFW. برای اغلب سرورهایی که چند پورت مشخص را باز می‌کنند، UFW ساده‌ترین و کم‌خطاترین انتخاب است.

آیا iptables منسوخ شده است؟

نوشتار iptables هنوز پشتیبانی می‌شود، اما در توزیع‌های جدید معمولاً روی nftables اجرا می‌شود. برای پیکربندی‌های جدید، nftables توصیه می‌شود.

چطور قوانین فعلی را ببینم؟

با sudo ufw status verbose برای UFW و sudo nft list ruleset برای مشاهده همه قوانین واقعی که در هسته بارگذاری شده‌اند، از جمله قوانینی که UFW یا Docker ساخته‌اند.

آیا فایروال سرور در برابر DDoS محافظت می‌کند؟

فقط در برابر حملات کوچک. حملات حجیم پهنای باند ورودی را قبل از رسیدن به سرور اشباع می‌کنند و باید در سطح شبکه ارائه‌دهنده مهار شوند. در این مورد مقاله حمله DDoS چیست را بخوانید.

امنیت شبکه در لایه‌های بالاتر

علاوه بر فایروال سرور، خدمات امنیت شبکه و WAF تراست هاست از سرویس‌های شما در برابر حملات لایه شبکه و اپلیکیشن محافظت می‌کند.

سرور مجازی ابری تراست هاست

مشاوره تراست‌هاست​

با متخصصان و کارشناسان به صورت رایگان!

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *