مقدمه ای بر IPtables - وان سرور آکـادمی

مقدمه ای بر IPtables

زمان تقریبی مطالعه: 5 دقیقه

Iptables چیست؟

Iptable یک فایروال داخلی لینوکس است که در آن شروطی دارد تحت عنوان رول ها (rules) . که عبور و مرور ترافیک یا پکت ها با توجه به این رول ها مجاز است. این فایروال ترافیک ورودی و خروجی را کنترل می کند و آن را طبق قوانین مشخص فیلتر می کند.

دیتا های ورودی و خروجی به صورت بسته یا پکت انتقال می یابد. لینوکس رابط یا اینترفیسی برای فیلتر کردن این بسته ها فراهم می کند. در اینجا ، Iptables وارد جریان می شود ، که یک ابزار خط فرمان برای تنظیم و پیکربندی فایروال است. Iptables دارای جدول هایی برای فیلتر کردن پکت ها است. این جداول حاوی چندین زنجیره یا chain هستند که حاوی رول هایی برای تنظیم رول ها هستند.

رول ها و اهداف در iptables

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

  • ACCEPT : این بدان معناست که پکت اجازه عبور از فایروال را دارد.
  • DROP: این بدان معناست که پکت اجازه عبور از فایروال را ندارد.
  • RETURN: این بدان معناست که از رول فعلی صرف نظر کرده و دوباره به chain ای که از آن فراخوانده شده است بپرد.

5 جدول داخلی در Iptabales وجود دارد که عبارت اند از filter و nat و mangle و raw و security. که در این آموزش ما فقط بر روی جدول داخلی filter تمرکز میکنیم.

یک راز بزرگ درمورد 90 % هاستینگ های ایرانی، اورسل کردن بیش از حد است که باعث افت کیفیت سرورها میشود.

وان سرور با ارائه دسترسی های مختلف این امکان را به شما خواهد داد که تمامی منابع سرورتان را مدیریت و بررسی کنید و همچنین با ارائه گارانتی 100% برگشت وجه ریسک خرید شما را به %0 کاهش میدهد.

برای خرید سرور مجازی با گارانتی 100% بازگشت وجه کلیک کنید.

جدول filter

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

  • INPUT: این چین برای کنترل ترافیک / پکت های ورودی به سرور استفاده می شود.
  • FORWARD: این chain برای فیلتر کردن بسته هایی است که به سرور وارد می شوند اما قرار است در جای دیگری ارسال شوند استفاده میشود.
  • OUTPUT: از این chain برای فیلتر کردن پکت هایی که قرار است از سرور خارج شود مورد استفاده قرار میگیرد.

در زیر تصویر مربوط به chain جدول فیلتر آمده است.

کار با دستورات Iptables

راه اندازی

با استفاده از دستور Iptables نسخه ی آن را بررسی میکنیم:

iptables --version

برای نمونه ما فرض میکنیم که Iptables نصب نیست. با استفاده از دستورات زیر آن را نصب میکنیم:

sudo apt-get update
sudo apt-get install iptables

برای نمایش جدول filter که درواقع جدول پیشفرض Iptables است از دستور زیر استفاده میکنیم:

sudo iptables -L 

این خروجی زیر را نشان می دهد که اساساً یک جدول فیلتر خالی است:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

در اینجا ، INPUT ، OUTPUT و FORWARD زنجیره یا چین هایی هستند که شامل قوانین پیکربندی فایروال هستند. هر فایروال یک خط مشی پیش فرض دارد که به عنوان (policy ACCEPT) ذکر شده است. خط مشی پیش فرض برای یک chain ، هدف پیش فرض آن دسته از پکت ها را که با هیچ قاعده آن چین مطابقت ندارند مشخص می کند. برای مثال: خط مشی پیش فرض برای chain ، ورودی ACCEPT است ، به این معنی که هر بسته ورودی توسط فایروال پذیرفته می شود.

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

sudo ifconfig [ -S/--list-rules ]

در صورتی که بخواهیم خط مشی پیشفرض (default policy) جدول را تغییر بدهیم از دستور زیر استفاده میکنیم:

sudo iptables -P <chain> <target>

در اینجا ، برای مثال ، اگر سیاست پیش فرض چین INPUT را با استفاده از دستور sudo iptables -P INPUT DROP به DROP تغییر دهیم ، هیچ کس نمی تواند با ما ارتباط برقرار کند زیرا همه بسته های داده توسط فایروال حذف می شوند.

تغییر دادن رول ها در Iptables

برای اضافه کردن یک قانون خاص در داخل هر chain ای. ابتدا دستور را پوشش خواهیم داد ، و سپس برخی از موارد برای همان مورد استفاده می شود.

sudo iptables [ -A|-S ] <chain> -t <table> -p <protocol> -s<source ip> -d<destination-ip> --sport <source-port> --dport<destination-port>  -j<target> -i<input-interface> -o<output-interface>

در دستور بالا ، از چندین flag استفاده شد. هر یک از آنها و در صورت نیاز به آنها توضیح خواهیم داد.

  • -A: برای ضمیمه یک قانون در انتهای جدول استفاده می شود
  • -S: برای درج رول در موقعیت مشخص شده در جدول استفاده می شود. اگر موقعیت مشخص نشده باشد ، این رول را به بالاترین موقعیت اضافه می کند.
  • -t: برای دادن نام جدول استفاده می شود. به طور پیش فرض ، این جدول فیلتر است.
  • -p: برای تعیین پروتکل استفاده می شود. می تواند tcp ، udp ، icmp یا همه باشد.
  • -s: برای مشخص کردن منبعی از پکت ها استفاده می شود. عمدتا برای استفاده از یک قانون در چین INPUT برای هر آدرس IP خاص استفاده می شود.
  • -d: برای تعیین مقصد تحویل پکت ها استفاده می شود. عمدتا برای استفاده از یک قانون در چین OUTPUT برای آدرس IP خاص مقصد استفاده می شود.
  • --sport & --dport: اگر این قاعده روی پروتکل tcp اعمال شود ، از این دستور به ترتیب برای مشخص کردن پورت مبدا و مقصد استفاده می شود.
  • -j: برای مشخص کردن هدف مورد استفاده در قانون منطبق استفاده می شود. می تواند ACCEPT ، REJECT ، DROP و غیره باشد.
  • -i: رابط ورودی (Input-interface) – برای مشخص کردن نام واینترفیسی که از طریق آن پکت ای دریافت می شود ، استفاده می شود.
  • -j: رابط خروجی (Output-interface) – برای مشخص کردن نام اینترفیسیی که از طریق آن بسته ای ارسال می شود ، استفاده می شود.

اضافه کردن رول در Iptables

برای مسدود کردن یک وب سایت خاص ، مثلا فیس بوک ، به طوری که از سرور شما نمی توان به آن دسترسی داشته باشد.

sudo iptables -I INPUT -t filter -s www.facebook.com -j DROP

برای مسدود کردن هر پکت از آدرس IP در اینترنت ، فرض کنید 192.168.0.107

sudo iptables -I INPUT -t filter -s 192.168.0.107 -j DROP

برای مسدود کردن آدرس لوپ بک ، یعنی localhost 127.0.0.1

sudo iptables -A INPUT -i lo -j DROP

برای غیرفعال کردن هر پورت از سرور ، فرض کنید نمی خواهید به کسی اجازه دهید ssh را روی سیستم شما انجام دهد ، پس باید پورت 22 را مسدود کنید ، این کار به صورت زیر انجام می دهیم:

sudo iptables -A INPUT -t filter -p tcp --dport 22 -j DROP

ما همچنین می توانیم هدف را روی ALLOW یا DROP بسته های داده از پورت های دیگر تنظیم کنیم ، مانند اینکه برای مسدود کردن http و https ، باید پورت منبع 80 و 443 را مسدود کنیم:

sudo iptables -A INPUT -t filter -p tcp --sport 80 -j DROP
sudo iptables -A INPUT -t filter -p tcp --sport 443 -j DROP

حذف رول ها در Iptables

برای حذف یک قانون خاص توسط شماره خط آن:

sudo iptables -D <chain> <line-number>

برای حذف تمامی رول ها در یک chain خاص :

sudo iptables -F <chain>

برای حذف همه رول ها یا قوانین از iptables :

sudo iptables -F/--flush

اکنون ، برای دریافت خروجی هر دستوری با اطلاعات بیشتر ، می توانید آن را در حالت دراز نویس یا verbose mode اجرا کنید:

sudo iptables -L -v

جمع بندی

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

لطفا جهت بهبهود کیفیت آموزش های ارسالی، نظرات خود را از طریق کامنت و درج ستاره ارسال کنید

3.9/5 - (8 امتیاز)