Author
saeed farhang

iptables

Author
saeed farhang
iptables
iptables

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

ابزار iptables, فایروال اصلی و اولیه‌‌ی توسعه داده شده برای سیستم های لینوکسی است. این ابزار با استفاده از قابلیت تعریف قوانین و policy ها، به ادمین سیستم اجازه‌ی فیلتر کردن ترافیک شبکه را می‌دهد.

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


پیش‌نیاز ها:

  • یک سیستم لینوکسی
  • یوزری با sudo privilege
  • دسترسی به ترمینال

ابزار iptables

برنامه iptables یک ابزار کامندلاینی برای کانفیگ فایروال کرنل لینوکس است و به ادمین سیستم دسترسی تعریف قوانین زنجیره ای (chained rules) که برای کنترل ترافیک ورودی و خروجی نتورک استفاده می‌شود را می‌دهد.

این قوانین یک سازوکار امنیتی قدرتمند ایجاد می‌کنند که تعیین می‌کند کدام بسته‌های شبکه (network packets) مجاز به عبور هستند و کدام باید مسدود شوند. iptables به‌عنوان ابزار اعمال سیاست‌های فایروال، از سیستم‌های لینوکسی در برابر نشت داده، دسترسی غیرمجاز و سایر تهدیدهای امنیتی شبکه محافظت می‌کند.

مدیران سیستم با تعریف و اعمال قوانین در iptables، سیاست‌های امنیتی شبکه را اجرا کرده و سیستم‌های لینوکسی را در برابر طیف گسترده‌ای از حملات مبتنی بر شبکه محافظت می‌کنند.

در ادامه به تعریف کامپوننت های اصلی iptables میپردازیم و سپس درمورد هرکدام دقیق تر حرف می‌زنیم.

اجزای اصلی iptables

  • جدول ها: tables یا جدول ها فایل هایی هستند که قوانین مشابه را گروهبندی می‌کنند. یک جدول شامل چندین زنجیره‌ی قانون (rule chains) است.
  • زنجیره ها: chains یا زنجیره، یک رشته از قوانین است. زمانی که بسته‌ی ترافیک دریافت می‌شود، iptables جدول مناسب آن packet را پیدا و آن بسته را از زنجیره‌ی قوانین جدول عبور می‌دهد تا زمانی که یک قانون منطبق پیدا شود.
  • قوانین: یک rule دستوریست که شرایط تطبیق یک packet را مشخص می‌کند. در صورت تطبیق، بسته به یک هدف ارسال می‌شود.
  • اهداف - targets: یک هدف، تصمیم نهایی درباره‌ی بسته‌ی منطبق با قانون آن هدف است. یک packet یا قبول (ACCEPTED) می‌شود، یا حذف (DROPED) و یا رد (REJECTED) می‌شود.

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

Tables:

فایروال لینوکسی iptables چهار جدول پیشفرض دارد که rule chain های مختلف را مدیریت می‌کند:

filter:

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

Network Address Translation (NAT):

شامل رول های NAT برای مسیریابی بسته های نتورک به شبکه های راه دور (remote). این جدول برای پکت هایی که استفاده می‌شود که نیاز به اعمال تغییرات دارند.

Mangle:

بخش Mangle برای تنظیم و تغییر ویژگی‌های هدر IP بسته‌ها استفاده می‌شود.

Raw:

بخش Raw بسته‌ها را از ردیابی اتصال (Connection Tracking) مستثنا می‌کند.


بعضی از توزیع های لینوکسی جدول دیگری به نام security را نیز دارا هستند که برای مدیریت قوانین mandatory access control (MAC) ساخته شده تا امکان مدیریت دسترسی محدود تر به وجود آید.

Chains:

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

INPUT:
OUTPUT:
FORWARD:
PREROUTING:
POSTROUTING:


Rules:


Targets: