تغییرات اخیر

در اینجا اطلاعیه‌ها، نسخه‌ها و تغییرات جدید لیارا فهرست می‌شوند.

فایروال Iptables چگونه کار می‌کند؟


۲ اسفند ۱۴۰۳

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

iptables یک فایروال استاندارد است که به صورت پیش‌فرض در بیشتر توزیع های لینوکس وجود دارد. این ابزار یک رابط خط فرمان برای netfilter، یعنی هسته مدیریت ترافیک شبکه در لینوکس، فراهم می‌کند. عملکرد آن براساس بررسی بسته‌های شبکه‌ای ورودی و مقایسه آن‌ها با مجموعه‌ای از قوانین است تا مشخص کند که بسته موردنظر باید اجازه عبور داشته باشد یا مسدود شود.

در ادامه خواهید خواند:

  • iptables چگونه کار می‌کند؟
  • نکات مهمی که باید در نظر بگیرید!
  • سوالات متداول
  • جمع بندی

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

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

نحوه عملکرد فایروال iptables

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

فایروال Iptables

معیارهای تطبیق بسته‌ها

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

  • نوع پروتکل بسته (مانند TCP، UDP یا ICMP)
  • آدرس مبدأ و مقصد (آی‌پی‌های ورودی و خروجی)
  • پورت مبدأ و مقصد (مانند پورت 80 برای HTTP)
  • رابط شبکه‌ای مورد استفاده (مانند eth0 یا wlan0)
  • وضعیت ارتباط با بسته‌های قبلی: آیا بسته مربوط به یک ارتباط موجود است یا ارتباطی جدید را آغاز می‌کند؟

اقدامات (Targets) در iptables

هنگامی که یک بسته با یک قانون تطابق داشته باشد، یک اقدام یا هدف (Target) روی آن اعمال می‌شود. هدف می‌تواند یکی از موارد زیر باشد.

  • ACCEPT: اجازه عبور بسته را می‌دهد.
  • DROP: بسته را بدون هیچ پاسخی حذف می‌کند.
  • REJECT: بسته را مسدود کرده و پیامی برای فرستنده ارسال می‌کند.
  • LOG: ثبت اطلاعات بسته در لاگ‌های سیستم، بدون تأثیر روی پردازش آن.
  • REDIRECT: هدایت بسته به مقصدی دیگر.
  • MARK: علامت‌گذاری بسته برای پردازش‌های بعدی.

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

مفهوم زنجیره‌ها (Chains) در iptables

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

  • INPUT: پردازش تمام بسته‌هایی که به سرور شما ارسال شده‌اند.
  • OUTPUT: شامل قوانینی برای ترافیکی که از سرور شما به بیرون فرستاده می‌شود.
  • FORWARD: برای پردازش بسته‌هایی که از سرور شما عبور می‌کنند اما مقصد نهایی آن‌ها سرور شما نیست. این زنجیره در سرورهای مسیریاب (Router) بسیار کاربرد دارد.

هر زنجیره می‌تواند شامل هیچ یا چندین قانون باشد و درصورتی‌که هیچ‌کدام از قوانین با بسته تطابق نداشته باشند، سیاست پیش‌فرض (Default Policy) زنجیره اعمال می‌شود. این سیاست معمولاً به یکی از دو صورت زیر است:

  • DROP: بسته‌های نامطابق را حذف کند.
  • ACCEPT: بسته‌های نامطابق را اجازه عبور دهد.

ردیابی وضعیت اتصال (Connection Tracking)

iptables می‌تواند ارتباطات شبکه‌ای را ردیابی (Track) کند. به این معنی که می‌توان قوانینی تنظیم کرد که بسته‌ها را بر اساس ارتباطشان با بسته‌های قبلی پردازش کند. این قابلیت که به نام “ردیابی وضعیت” (State Tracking) یا “ماشین حالت” (State Machine) شناخته می‌شود، امکان مدیریت دقیق‌تری روی ترافیک شبکه را فراهم می‌کند.

تفاوت IPv4 و IPv6 در iptables

در کرنل لینوکس، فایروال netfilter ترافیک IPv4 و IPv6 را کاملاً جداگانه پردازش می‌کند. بنابراین، ابزارهای مدیریت قوانین فایروال برای این دو نسخه از پروتکل اینترنت نیز جداگانه هستند.

  • برای مدیریت ترافیک IPv4 از دستور iptables استفاده می‌شود.
  • برای مدیریت ترافیک IPv6 از دستور ip6tables استفاده می‌شود.

بنابراین، اگر سرور شما از IPv6 پشتیبانی می‌کند، باید به‌طور جداگانه برای آن قوانین تعریف کنید. توجه داشته باشید که هر قانونی که با دستور iptables تعریف شود، فقط روی ترافیک IPv4 تأثیر می‌گذارد و برعکس، قوانین تعریف‌شده با ip6tables تنها روی بسته‌های IPv6 اعمال خواهند شد.

انتقال از iptables به nftables

nftables به‌عنوان جایگزین مدرن iptables معرفی شده است و یکی از مزایای آن، مدیریت هم‌زمان قوانین IPv4 و IPv6 در یک ساختار یکپارچه است. برای مهاجرت از iptables به nftables، می‌توان از دستور iptables-translate استفاده کرد تا قوانین iptables را به قالب nftables تبدیل کرد.

بیشتر بخوانید: نحوه بررسی و تست پیکربندی فایروال با Nmap و Tcpdump

نکات مهمی که باید در iptables به آن توجه کنید!

اکنون که با نحوه عملکرد iptables آشنا شده‌اید—اینکه چگونه بسته‌ها را به زنجیره مناسب هدایت می‌کند، آن‌ها را با قوانین مقایسه می‌کند و در صورت عدم تطابق، سیاست پیش‌فرض (Default Policy) زنجیره را اعمال می‌کند—می‌توانید شروع به تعریف قوانین کنید.

حفظ اتصال‌های فعلی در هنگام اعمال سیاست DROP

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

نکات مهمی که باید در iptables به آن توجه کنید

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

اهمیت ترتیب قوانین در زنجیره‌ها

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

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

اگر بسته‌ای با هیچ‌یک از قوانین زنجیره مطابقت نداشته باشد، سیاست پیش‌فرض زنجیره (Default Policy) اجرا می‌شود.

نقش سیاست پیش‌فرض (Default Policy) در طراحی قوانین

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

اگر سیاست پیش‌فرض زنجیره ACCEPT باشد

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

اگر سیاست پیش‌فرض زنجیره DROP باشد

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

هنگام تنظیم iptables، موارد زیر را در نظر داشته باشید.

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

سیاست پیش‌فرض زنجیره، نوع قوانین مورد نیاز را مشخص می‌کند:

  • ACCEPT به‌عنوان سیاست پیش‌فرض: قوانین باید بسته‌های ناخواسته را حذف کنند.
  • DROP به‌عنوان سیاست پیش‌فرض: قوانین باید مشخص کنند که چه ترافیکی مجاز است.

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

در ادامه به برخی از سوالات شما در رابطه با iptables بررسی و پاسخ داده شده است.

1. iptables چیست و چه کاربردی دارد؟

iptables یک فایروال خط فرمانی در لینوکس است که ترافیک ورودی و خروجی را کنترل می‌کند.

2. تفاوت iptables با UFW یا Firewalld چیست؟

iptables سطح پایین‌تر و انعطاف‌پذیرتر است، درحالی‌که UFW و Firewalld رابط‌های ساده‌تری برای مدیریت آن ارائه می‌دهند.

3. آیا iptables روی همه توزیع‌های لینوکس نصب است؟

بله، در اکثر توزیع‌ها به‌صورت پیش‌فرض نصب است، اما در برخی توزیع‌ها مانند CentOS از Firewalld استفاده می‌شود.

4. تفاوت iptables و nftables چیست؟

nftables جایگزین جدیدی برای iptables است که عملکرد بهتری دارد و پیکربندی آن ساده‌تر است.

5. iptables چگونه کار می‌کند؟

بسته‌های شبکه را با قوانین مشخص مقایسه کرده و تصمیم می‌گیرد که آن‌ها را قبول (ACCEPT) یا رد (DROP) کند.

6. چرا ترتیب قوانین در iptables مهم است؟

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

7. زنجیره‌های پیش‌فرض iptables چیست؟

INPUT (برای بسته‌های ورودی)، OUTPUT (برای بسته‌های خروجی) و FORWARD (برای ترافیک عبوری).

8. چگونه iptables بسته‌های IPv4 و IPv6 را مدیریت می‌کند؟

برای IPv4 از iptables و برای IPv6 از ip6tables استفاده می‌شود و قوانین هرکدام جداگانه تعریف می‌شوند.

همینطور بخوانید: سرور مجازی چیست؟

iptables چگونه کار می‌کند

جمع بندی

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

در هنگام استفاده از iptables، لازم است نکاتی مانند حفظ اتصال‌های فعلی (به‌ویژه در ارتباطات SSH) و تفاوت بین قوانین IPv4 و IPv6 را در نظر بگیرید. همچنین، با معرفی nftables به‌عنوان جایگزین مدرن‌تر، امکان مدیریت ساده‌تر و بهینه‌تر فایروال در لینوکس فراهم شده است.