در دنیای هاستینگ و مدیریت سرور، امنیت اولین حرف را می‌زند. شاید نام ابزارهایی مثل UFW یا Firewalld را شنیده باشید، اما آموزش iptables به شما این قدرت را می‌دهد که کنترل دقیق‌تری روی هر “بسته” (Packet) داشته باشید. در واقع، iptables حکم نگهبان ورودی یک مجتمع بزرگ را دارد که نه تنها کارت شناسایی، بلکه محتویات جیب هر فرد را هم بازرسی می‌کند.

ویژگیiptables (پیشرفته)UFW / Firewalld (ساده)
سطح کنترلبسیار دقیق و لایه‌ایکلی و ساده‌سازی شده
فیلترینگ Statefulعالی (با ماژول Conntrack)پایه
مقاومت در برابر DDoSبسیار بالا با Rate Limitingضعیف
پیچیدگی یادگیریمتوسط به بالاپایین
💡 iptables چیست؟
یک ابزار خط فرمان برای پیکربندی فایروال هسته لینوکس (Netfilter) است که اجازه می‌دهد ترافیک شبکه را بر اساس قوانین خاص، فیلتر یا هدایت کنید.
  • ✅ پایداری بالا در سرورهای تولیدی (Production)
  • ✅ قابلیت اجرا در تمام توزیع‌های لینوکس

حتماً زمانی که این مقاله را باز کرده‌اید، به دنبال راهی هستید تا امنیت سرور مجازی خود را از حالت پیش‌فرض خارج کرده و جلوی حملات مزاحم را بگیرید. ما در این راهنمای گام‌به‌گام، از صفر مطلق یعنی مفاهیم جداول شروع کرده و تا نوشتن اسکریپت‌های ضد DDoS پیش می‌رویم. پس همراه ما باشید تا یک بار برای همیشه، پرونده پیکربندی فایروال لینوکس را ببندیم. 😉

پیکربندی فایروال لینوکس

معماری و جریان بسته (Packet Flow) در iptables چیست؟

برای درک آموزش iptables پیشرفته، ابتدا باید بدانید که این فایروال مثل یک سیستم لوله‌کشی پیچیده است. ترافیک از یک سمت وارد شده و پس از عبور از فیلترهای مختلف، یا به مقصد می‌رسد یا دور ریخته می‌شود. قلب این سیستم، “جداول” و “زنجیره‌ها” هستند.

جداول (Tables) اصلی:

  • Filter Table: جدول پیش‌فرض برای تصمیم‌گیری درباره اجازه ورود یا خروج.
  • NAT Table: برای تغییر آدرس‌های IP (مثل فوروارد کردن پورت).
  • Mangle Table: برای تغییرات خاص در سربرگ بسته‌ها.

زنجیره‌ها (Chains) و مسیر حرکت:

  • اینترنت ➡️ [PREROUTING] ➡️ {تصمیم‌گیری مسیر} ➡️ [INPUT] ➡️ سرور شما
  • سرور شما ➡️ [OUTPUT] ➡️ [POSTROUTING] ➡️ اینترنت

نمودار جریان بسته (Simplified ASCII Flow):

      [ ورودی شبکه ]
           ⬇️
    ┌──────────────┐
    │  PREROUTING  │ (NAT/Mangle)
    └──────┬───────┘
           ⬇️
    { آیا برای سرور است؟ } ─── خیر ──▶ [ FORWARD ] ──▶ [ خروجی ]
           ⬇️ بله
    ┌──────────────┐
    │    INPUT     │ (Filter - امنیت اصلی اینجاست)
    └──────┬───────┘
           ⬇️
      [ پردازش داخلی ]
🔸 نکته فنی: اکثر کارهای امنیتی ما در جدول Filter و زنجیره INPUT انجام می‌شود؛ جایی که مستقیماً با بسته‌های ورودی سرور سر و کار داریم.

چرا به پیکربندی پیشرفته فایروال نیاز داریم؟

استفاده از تنظیمات پیش‌فرض مثل باز گذاشتن تمام پورت‌ها، مثل این است که درب خانه خود را باز بگذارید و فقط یک پرده جلوی آن بکشید! قوانین iptables برای امنیت سرور زمانی اهمیت پیدا می‌کنند که بدانید روزانه هزاران بات اسکنر در حال تست کردن پورت‌های باز سرورهای مجازی هستند.

  • کنترل دسترسی: فقط به افراد مجاز اجازه ورود می‌دهید.
  • جلوگیری از نشت داده: اجازه نمی‌دهید برنامه‌های مخرب اطلاعات را به بیرون بفرستند (Output Filtering).
  • بهینه‌سازی منابع: با بستن ترافیک هرز، پهنای باند و CPU سرور شما آزاد می‌ماند.

پیش‌نیازها و شروع کار با آموزش iptables

قبل از هر چیز، باید دسترسی روت (root) به سرور داشته باشید. در وب‌داده، تمام سرورهای مجازی با دسترسی کامل ارائه می‌شوند تا شما محدودیتی در اجرای دستورات نداشته باشید.

  • سیستم عامل: اوبونتو، دبیان یا سنت‌او‌اس (فرقی ندارد).
  • دسترسی: SSH با کاربر sudo.
  • نصب ابزار پایه:
sudo apt update && sudo apt install iptables
آموزش iptables

🔶 نکته مهم: قبل از شروع، مطمئن شوید که دسترسی خودتان به SSH قطع نمی‌شود! همیشه یک قانون برای باز گذاشتن پورت 22 (یا پورت سفارشی SSH) بنویسید.

پیاده‌سازی استراتژی Default Policy و امنیت حداکثری

در پیکربندی فایروال لینوکس، دو رویکرد وجود دارد:

  • همه چیز باز باشد و فقط موارد مشکوک را ببندیم.
  • همه چیز بسته باشد و فقط موارد لازم را باز کنیم. روش دوم (White-listing) تنها روش استاندارد برای سرورهای تولیدی است.

مرحله 1: پاکسازی قوانین قبلی

ابتدا تمام قوانین موجود را پاک می‌کنیم تا با یک صفحه سفید شروع کنیم:

iptables -F
iptables -F -t nat
iptables -F -t mangle
iptables -X
iptables -Z

📌 توضیح: دستور -F قوانین تمام جداول (filter، nat و mangle) را پاک می‌کند. دستور -X زنجیره‌های سفارشی خالی را حذف می‌کند و -Z شمارنده‌ها را صفر می‌کند.

پیکربندی فایروال لینوکس

مرحله 2: باز کردن پورت‌های حیاتی و Conntrack

قبل از بستن همه چیز، ابتدا Loopback، اتصالات برقرار شده (Conntrack) و پورت SSH را باز می‌کنیم. ترتیب این مراحل بسیار مهم است:

👈اجازه به ترافیک داخلی سرور (بسیار مهم)
iptables -A INPUT -i lo -j ACCEPT
آموزش iptables پیشرفته
👈 اتصالات برقرار شده و مرتبط (Stateful Firewall):
بدون این قانون، پاسخ درخواست‌های خروجی شما (مثل apt update) مسدود می‌شود!
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
👈 دور ریختن بسته‌های نامعتب
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
👈 باز کردن پورت SSH – کلمه کلیدی: بستن پورت در لینوکس با iptables
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
⚠️ هشدار بسیار مهم: قانون Conntrack (ESTABLISHED,RELATED) باید حتماً قبل از تغییر سیاست پیش‌فرض به DROP نوشته شود. در غیر این صورت، اتصال فعلی SSH شما قطع خواهد شد و دسترسی به سرور را از دست می‌دهید.

مرحله 3: تغییر سیاست پیش‌فرض به DROP

حالا به فایروال می‌گوییم هر چیزی که صراحتاً اجازه نداده‌ایم را دور بریز:

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
آموزش iptables

📌 یادآوری: با اجرای این دستور، هر پورتی غیر از ۲۲ کاملاً بسته می‌شود. اگر وب‌سرور دارید، باید پورت 80 و 443 را هم باز کنید.

فایروال هوشمند با ماژول Conntrack (Stateful Inspection)

این بخش همان چیزی است که آموزش iptables پیشرفته را متمایز می‌کند. یک فایروال هوشمند باید بداند کدام بسته مربوط به یک گفتگوی قبلی است.

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

چرا این دستور معجزه می‌کند؟

وقتی شما از داخل سرور درخواستی به گوگل می‌فرستید، گوگل پاسخی برمی‌گرداند. بدون این قانون، فایروال پاسخ گوگل را چون از بیرون آمده مسدود می‌کند. اما با ماژول conntrack و وضعیت ESTABLISHED (برقرار شده)، فایروال می‌فهمد که این بسته بخشی از یک مکالمه مجاز است.

📌 نکته: همان‌طور که در بخش قبل دیدید، ما این قانون را قبل از تغییر Default Policy به DROP نوشتیم. این ترتیب حیاتی است و اگر رعایت نشود، ممکن است دسترسی شما به سرور قطع شود.

جلوگیری از حملات DDoS با iptables و Hardening

حملات DDoS می‌توانند به راحتی منابع سرور شما را ببلعند. با استفاده از محدود کردن نرخ درخواست (Rate Limiting) می‌توانیم جلوی این حملات را بگیریم.

نکته مهم: قوانین Rate Limiting باید قبل از قوانین ACCEPT پورت‌های سرویس‌دهنده (مثل 80 و 443) قرار بگیرند تا مؤثر باشند. اگر بعد از ACCEPT قرار بگیرند، بسته‌ها قبلاً پذیرفته شده‌اند و Rate Limiting هیچ تأثیری نخواهد داشت.

1- جلوگیری از SYN Flood

برای محدود کردن تعداد اتصالات جدید TCP:
این قانون باید قبل از ACCEPT پورت‌های 80 و 443 قرار بگیرد

iptables -A INPUT -p tcp --syn -m limit --limit 10/s --limit-burst 20 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP

2- جلوگیری از Ping Flood (ICMP Limit)

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

iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 5 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

این قانون یعنی: حداکثر ۱ پینگ در ثانیه قبول کن، با قابلیت تحمل 5 پینگ ناگهانی. بسته‌های بیشتر DROP می‌شوند.

پیکربندی فایروال لینوکس

3- مقابله با Port Scanning

هکرها معمولاً قبل از حمله، تمام پورت‌های شما را اسکن می‌کنند. با شناسایی بسته‌های TCP با فلگ‌های غیرعادی می‌توانیم اسکن‌های رایج را مسدود کنیم:

# بستن اسکن‌های Null (بدون فلگ)
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP

# بستن اسکن‌های XMAS (فلگ‌های FIN، PSH و URG همزمان)
iptables -A INPUT -p tcp --tcp-flags ALL FIN,PSH,URG -j DROP

# بستن ترکیب‌های غیرمجاز SYN/FIN و SYN/RST
iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP

📌 توضیح: این قوانین بسته‌هایی را هدف می‌گیرند که فلگ‌های TCP آن‌ها در ترافیک عادی وجود ندارد و معمولاً نشانه اسکن‌های Nmap هستند.

4- محدود کردن تعداد کانکشن‌ها در iptables

برای جلوگیری از حمله به وب‌سرور، می‌توانیم تعداد اتصالات همزمان از هر آی‌پی را محدود کنیم:

iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 -j DROP
iptables -A INPUT -p tcp --syn --dport 443 -m connlimit --connlimit-above 20 -j DROP
📌 نکته: در شرایط DDoS از DROP به جای REJECT استفاده کنید. چون REJECT یک پاسخ RST به مهاجم برمی‌گرداند و خودش پهنای باند مصرف می‌کند.

چالش‌ها و نکات احتیاط در استفاده از iptables

با وجود قدرت بالا، iptables معایبی هم دارد که به عنوان یک متخصص باید بدانید:

  • ترتیب قوانین: قوانین از بالا به پایین خوانده می‌شوند. اگر قانون اول “بستن همه چیز” باشد، قوانین بعدی هرگز اجرا نمی‌شوند.
  • عملکرد در ترافیک بسیار سنگین: در حملات عظیم (چندین میلیون بسته در ثانیه)، iptables ممکن است باعث درگیری بالای CPU شود. در این شرایط، تفاوت iptables و nftables مشخص می‌شود؛ nftables نسخه مدرن‌تر و سریع‌تر است.
  • فراموشی ذخیره‌سازی: قوانین iptables در حافظه RAM هستند و با ریبوت پاک می‌شوند.
  • پُر شدن جدول Conntrack: در ترافیک سنگین، جدول conntrack ممکن است پُر شود و باعث DROP شدن ناخواسته بسته‌های جدید بدون هیچ قانون صریحی شود. مقدار پیش‌فرض را با sysctl net.netfilter.nf_conntrack_max بررسی کنید و در صورت نیاز افزایش دهید.

چگونه قوانین iptables را دائمی کنیم؟

یکی از بیشترین سوالات کاربران این است: “چرا بعد از ریستارت سرور، تنظیمات من پاک شد؟”. برای حل این مشکل در اوبونتو و دبیان:

sudo apt install iptables-persistent

# برای ذخیره قوانین فعلی:
sudo netfilter-persistent save
آموزش iptables

در سیستم‌های CentOS، از دستور service iptables save استفاده می‌شود.

اسکریپت طلایی امنیت سرور (WebDade Shield)

در این بخش، تمام آموخته‌های بالا را در یک اسکریپت آماده برای شما جمع‌آوری کرده‌ایم. کافیست یک فایل با پسوند .sh بسازید و آن را اجرا کنید.

#!/bin/bash
# WebDade Advanced Firewall Script 2025
# ======================================

# 1. پاکسازی کامل قوانین قبلی
iptables -F
iptables -F -t nat
iptables -F -t mangle
iptables -X
iptables -Z

# 2. اجازه به ترافیک Loopback
iptables -A INPUT -i lo -j ACCEPT

# 3. فایروال هوشمند (Stateful) - باید قبل از همه باشد
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP

# 4. محافظت در برابر اسکن پورت (بسته‌های غیرعادی TCP)
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL FIN,PSH,URG -j DROP
iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP

# 5. محدود کردن SYN Flood (Rate Limiting)
iptables -A INPUT -p tcp --syn -m limit --limit 10/s --limit-burst 20 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP

# 6. محدود کردن ICMP (Ping Flood)
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 5 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

# 7. محدود کردن کانکشن همزمان روی پورت‌های وب
iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 -j DROP
iptables -A INPUT -p tcp --syn --dport 443 -m connlimit --connlimit-above 20 -j DROP

# 8. باز کردن پورت‌های ضروری
iptables -A INPUT -p tcp --dport 22 -j ACCEPT   # SSH
iptables -A INPUT -p tcp --dport 80 -j ACCEPT   # HTTP
iptables -A INPUT -p tcp --dport 443 -j ACCEPT  # HTTPS

# 9. بستن بقیه ترافیک (Default Policy)
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

echo "✅ Security applied successfully! - WebDade.com"
echo "📌 برای دائمی کردن: sudo netfilter-persistent save"

📌 نکات مهم درباره ترتیب قوانین در اسکریپت بالا:

  • قانون Conntrack (مرحله 3) اول از همه آمده تا اتصالات فعلی (مثل SSH شما) قطع نشود.
  • قوانین ضد اسکن (مرحله 4) قبل از Rate Limiting آمده‌اند تا بسته‌های مخرب زودتر حذف شوند.
  • Rate Limiting (مرحله 5) قبل از ACCEPT پورت‌ها قرار گرفته تا واقعاً مؤثر باشد.
  • ACCEPT پورت‌ها (مرحله 8) در آخر آمده، یعنی فقط ترافیکی که از فیلترهای قبلی رد شده به پورت‌ها دسترسی پیدا می‌کند.

خدمات وب‌داده؛ امنیت تضمین شده در سرور مجازی

اگر به دنبال بهترین کانفیگ فایروال برای سرور مجازی (VPS) هستید اما فرصت یا دانش کافی برای درگیری با کدهای پیچیده را ندارید، تیم فنی وب‌داده در کنار شماست.

  • ✅ ارائه سرورهای مجازی با امنیت سخت‌افزاری بالا
  • ✅ پشتیبانی 24 ساعته برای رفع مشکلات شبکه
  • ✅ امکان نصب خودکار سیستم‌عامل‌های بهینه شده
svgexport 58 آموزش پیکربندی پیشرفته iptables؛ از امنیت پایه تا مقابله با DDoSسرور مجازی وب داده
VPS وب داده با حضور قدرتمند در بیش از 9 لوکیشن استراتژیک در سراسر جهان…
برای مشاهده موقعیت‌های
سرور های مجازی وب‌داده
روی دکمه زیر کلیک کنید

نتیجه‌گیری: پیکربندی پیشرفته iptables؛ از امنیت پایه تا مقابله با DDoS

در این مقاله آموختیم که پیکربندی فایروال لینوکس یک فرآیند ایستا نیست. شما باید مدام لاگ‌های سرور را در مسیر /var/log/syslog چک کنید تا متوجه فعالیت‌های مشکوک شوید. استفاده از آموزش iptables پیشرفته به شما اجازه داد تا از یک کاربر عادی به یک مدیر سرور حرفه‌ای تبدیل شوید که می‌داند چطور با حملات DDoS مقابله کند و پورت‌های اضافی را ببندد.

امیدوارم این مقاله از بلاگ وب‌داده برای شما مفید بوده باشد. اگر در هر مرحله از تنظیمات دچار مشکل شدید یا سوالی درباره نصب iptables-persistent داشتید، حتماً در بخش نظرات با ما در ارتباط باشید. ما خوشحال می‌شویم به شما کمک کنیم! 🚀

سوالات متداول از آموزش iptables

1- آیا iptables برای اوبونتو 20.04 و 22.04 هم مناسب است؟

بله، iptables همچنان کار می‌کند. البته در اوبونتو 22.04 و 24.04، دستور iptables به صورت پیش‌فرض از iptables-nft (نسخه‌ای که backend آن nftables است) استفاده می‌کند. سینتکس دستورات یکسان است ولی موتور زیرین متفاوت است. برای بررسی نسخه خود از دستور iptables --version استفاده کنید.

نرسی مزداب
نرسی مزداب

من نویسنده و تولیدکننده محتوای تخصصی در حوزه هاستینگ هستم که با تمرکز بر کپی‌رایتینگ و ارائه آموزش‌های کاربردی، به ارتقای دانش و مهارت کاربران کمک می‌کنم. سال‌هاست که در زمینه هاستینگ و شبکه فعالیت می‌کنم و همواره تلاش دارم با به‌روزرسانی اطلاعات خود، بهترین و مفیدترین مطالب را برای مخاطبان ارائه دهم.

مقاله‌ها: 187
پاسخی بگذارید

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