iptables یکی از ابزارهای اصلی فایروال در سیستمهای لینوکس است و نقش مهمی در امنیت شبکه دارد. اکثر آموزشها روی ساخت قوانین فایروال تمرکز میکنند، اما در این مقاله هدف ما مدیریت قوانین موجود، یعنی مشاهده، حذف و پاکسازی قوانین است.
در این آموزش میآموزید:
-
لیست کردن قوانین iptables
-
مشاهده تعداد بستهها و حجم دادهها برای هر قانون
-
حذف قوانین مشخص
-
پاکسازی یک زنجیره (chain)
-
پاکسازی همه زنجیرهها و جدولها و باز کردن همه ترافیک
نکته: هنگام کار با فایروال مراقب باشید SSH خود را مسدود نکنید (پورت پیشفرض: 22). در صورت از دست دادن دسترسی، باید از طریق کنسول خارج از شبکه به سرور وصل شوید.
پیشنیازها
-
سرور لینوکس با دستور
iptablesنصب شده -
دسترسی
sudo
توجه: این آموزش فقط برای ترافیک IPv4 است. برای IPv6 از
ip6tablesاستفاده کنید.
لیست کردن قوانین iptables
1. نمایش قوانین به صورت دستورها (Specification)
sudo iptables -Sاین دستور تمام قوانین فعال را شبیه دستوراتی که هنگام ساخت ایجاد شدهاند نمایش میدهد. برای مشاهده یک زنجیره خاص:
sudo iptables -S INPUT
sudo iptables -S TCP2. نمایش قوانین به صورت جدول
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 INPUT2. پاکسازی همه زنجیرهها
sudo iptables -F3. پاکسازی همه قوانین، حذف همه زنجیرهها و اجازه دادن به تمام ترافیک
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 میکنید
