رفتن به محتوای اصلی
دیدگاه کلود | ارائه‌کننده سرورهای ابری و اختصاصی
لیست و حذف قوانین فایروال iptables در لینوکس

لیست و حذف قوانین فایروال iptables در لینوکس

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

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

در این آموزش می‌آموزید:

  • لیست کردن قوانین iptables

  • مشاهده تعداد بسته‌ها و حجم داده‌ها برای هر قانون

  • حذف قوانین مشخص

  • پاک‌سازی یک زنجیره (chain)

  • پاک‌سازی همه زنجیره‌ها و جدول‌ها و باز کردن همه ترافیک

نکته: هنگام کار با فایروال مراقب باشید SSH خود را مسدود نکنید (پورت پیش‌فرض: 22). در صورت از دست دادن دسترسی، باید از طریق کنسول خارج از شبکه به سرور وصل شوید.


پیش‌نیازها

  • سرور لینوکس با دستور iptables نصب شده

  • دسترسی sudo

توجه: این آموزش فقط برای ترافیک IPv4 است. برای IPv6 از ip6tables استفاده کنید.


لیست کردن قوانین iptables

1. نمایش قوانین به صورت دستورها (Specification)

 
sudo iptables -S

این دستور تمام قوانین فعال را شبیه دستوراتی که هنگام ساخت ایجاد شده‌اند نمایش می‌دهد. برای مشاهده یک زنجیره خاص:

 
sudo iptables -S INPUT sudo iptables -S TCP

2. نمایش قوانین به صورت جدول

 
sudo iptables -nL
  • گزینه -n از DNS lookup جلوگیری می‌کند و سرعت را افزایش می‌دهد.

  • برای یک زنجیره خاص:

 
sudo iptables -nL INPUT

ستون‌ها به این معنا هستند:

  • target: عملی که در صورت تطابق بسته با قانون انجام می‌شود (ACCEPT, DROP, REJECT)

  • prot: پروتکل (tcp, udp, icmp, all)

  • source/destination: مبدا و مقصد بسته‌ها

  • آخرین ستون: جزئیات اضافی مانند شماره پورت یا وضعیت اتصال


3. نمایش تعداد بسته‌ها و حجم داده‌ها

برای مشاهده تعداد بسته‌ها و حجم داده‌های عبوری از هر قانون:

 
sudo iptables -nvL INPUT
  • ستون pkts تعداد بسته‌ها

  • ستون bytes حجم داده‌ها بر حسب بایت


پاک‌سازی شمارنده‌ها

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

  • برای همه قوانین و زنجیره‌ها:

 
sudo iptables -Z
  • برای یک زنجیره خاص:

 
sudo iptables -Z INPUT
  • برای یک قانون مشخص:

 
sudo iptables -Z INPUT 1

حذف قوانین iptables

1. حذف با استفاده از Specification

 
sudo iptables -D INPUT -m conntrack --ctstate INVALID -j DROP

توجه: گزینه -A هنگام حذف استفاده نمی‌شود و باید قانون دقیقاً مطابق ایجاد شده باشد.


2. حذف با شماره خط

  • ابتدا شماره خطوط را مشاهده کنید:

 
sudo iptables -nL INPUT --line-numbers
  • سپس قانون مورد نظر را حذف کنید:

 
sudo iptables -D INPUT 3

پاک‌سازی زنجیره‌ها (Flush)

1. پاک‌سازی یک زنجیره

 
sudo iptables -F INPUT

2. پاک‌سازی همه زنجیره‌ها

 
sudo iptables -F

3. پاک‌سازی همه قوانین، حذف همه زنجیره‌ها و اجازه دادن به تمام ترافیک

 
sudo iptables -P INPUT ACCEPT sudo iptables -P FORWARD ACCEPT sudo iptables -P OUTPUT ACCEPT sudo iptables -t nat -F sudo iptables -t mangle -F sudo iptables -F sudo iptables -X

هشدار: این کار فایروال شما را غیرفعال می‌کند. فقط در صورتی انجام دهید که بخواهید پیکربندی را از نو شروع کنید.


تفاوت iptables -D و iptables -F

گزینهکاربردمثال
-Dحذف یک قانون مشخصsudo iptables -D INPUT 1
-Fحذف همه قوانین یک زنجیرهsudo iptables -F INPUT

خطاهای رایج

  • No chain/target/match by that name: نام زنجیره یا قانون اشتباه است. با sudo iptables -nL زنجیره‌ها را بررسی کنید.

  • Rule not being deleted due to mismatch: قانون دقیقاً مطابق ایجاد نشده است، با iptables -S مطابقت دهید.

  • حذف با شماره خط اشتباه: همیشه با --line-numbers شماره صحیح را بررسی کنید.


نکات مهم

  • تغییرات iptables به صورت موقت هستند و بعد از ریستارت از بین می‌روند. برای ذخیره تغییرات:

 
sudo iptables-save > rules.v4

جمع‌بندی

حالا شما:

  • قوانین فعال iptables را مشاهده می‌کنید

  • تعداد بسته‌ها و حجم داده‌ها را بررسی می‌کنید

  • قوانین مشخص یا همه قوانین را حذف می‌کنید

  • زنجیره‌ها و جدول‌ها را flush می‌کنید