در این مقاله آموزشی قصد داریم تا در رابطه با یک فایروال (دیواره آتش) لینوکسی بنام iptables صحبت کنیم این فایروال رو بیشتر بشناسیم و نحوه کار با اون رو در سیستم عامل های لینوکسی یاد بگیریم.پس در این مقاله آموزشی با من همراه باشید تا در قدم اول بریم سراغ تعریف اولیه این فایروال :)
میتوان اینطور گفت که Iptables یک ابزار فایروال بسیار انعطاف پذیر است که برای سیستم عامل های لینوکس ساخته شده است. چه یک متخصص مبتدی لینوکس یا یک مدیر سیستم باشید،روش هایی وجود دارد که iptables می تواند برای شما مفید باشد. Iptables یک ابزار فایروال خط فرمان است که از سیاست های تعریف شده برای اجازه یا مسدود کردن ترافیک استفاده می کند. هنگامی که سیستم شما سعی می کند یک اتصال را برقرار کند، iptables به دنبال قاعده ای در لیست خود می گردد تا با آن مطابقت داشته باشد.اگر یکی را پیدا نکرد، به عملکرد پیش فرض (اجازه یا مسدود کردن ترافیک) متوسل می شود. Iptables تقریباً همیشه روی هر توزیع لینوکس از پیش نصب شده است. برای به روز رسانی و نصب آن، میتوانید از دستور زیر استفاده کنید:
sudo apt-get install iptables
همچنین جایگزین های رابط کاربری گرافیکی برای فایروال iptables مانند Firestarter وجود دارد، اما استفاده از iptables واقعاً زمانی که میخواهید چند دستور را همزمان انجام دهید کار دشواری ندارد. به عنوان مثال شما می خواهید هنگام پیکربندی (Config) قوانین iptables بسیار مراقب باشید، به خصوص اگر SSH را در یک سرور قرار دهید، زیرا یک دستور اشتباه می تواند شما را برای همیشه قفل کند تا زمانی که به صورت دستی در ماشین فیزیکی ثابت شود. و فراموش نکنید که در صورت باز کردن پورت، سرور SSH خود را قفل کنید.
??? بیشتر ببینید : جذابترین دوره آموزش هکر قانونمند (CEH v11) قسمت 66 : Firewall بخش 1
فایروال Iptables از سه سیاست (زنجیره) مختلف استفاده می کند که عبارتند از :
این قوانین برای کنترل رفتار اتصالات ورودی استفاده می شود. برای مثال، اگر کاربری بخواهد SSH را به رایانه یا سرور شما وارد کند، iptables سعی میکند آدرس IP و پورت را با یک قانون در زنجیره ورودی مطابقت دهد.
این قانون یا سیاست برای اتصالات ورودی استفاده می شود که در واقع به صورت محلی تحویل داده نمی شوند.یک روتر (Router) را در نظر بگیرید داده ها همیشه به آن ارسال می شوند اما به ندرت برای خود روتر تعیین می شوند. داده ها فقط به هدف خود ارسال می شوند. تا زمانی که در حال انجام نوعی مسیریابی، NATing یا چیز دیگری در سیستم خود باشید که نیاز به ارسال داشته باشد، حتی از این زنجیره استفاده نخواهید کرد.یک راه مطمئن برای بررسی اینکه آیا سیستم شما از سیاست (Forwarding) استفاده می کند یا نه وجود دارد که میتوانید با استفاده از دستور زیز آن را بررسی کنید:
iptables -L -v
اسکرین شات بالا مربوط به سروری است که چند هفته است کار می کند و هیچ محدودیتی برای اتصالات ورودی یا خروجی ندارد. همانطور که می بینید، زنجیره ورودی 11 گیگابایت بسته و زنجیره خروجی 17 گیگابایت پردازش کرده است. از سوی دیگر، قانون پیشرو نیازی به پردازش یک بسته واحد ندارد. این به این دلیل است که سرور هیچ نوع ارسال را انجام نمی دهد یا به عنوان دستگاه عبور استفاده نمی شود.
این قانون برای اتصالات خروجی استفاده می شود. به عنوان مثال، اگر سعی کنید به Example.com پینگ کنید، iptables زنجیره خروجی آن را بررسی میکند تا قوانین مربوط به ping و Example.com را قبل از تصمیم گیری برای اجازه یا رد تلاش برای اتصال، ببیند.
??بیشتر یاد بگیرید: آموزش هکر قانونمند (CEH v11) قسمت 67 : Firewall بخش 2
قبل از ورود و پیکربندی قوانین ، باید تصمیم بگیرید که عملکرد پیش فرض سه قانون اصلی چگونه باشد. به عبارت دیگر، اگر اتصال با قوانین موجود مطابقت نداشته باشد، میخواهید iptables چه کاری انجام دهد؟
همانطور که می بینید، ما از دستور grep برای ارائه خروجی تمیزتر استفاده کردیم .در اسکرین شات، قوانین و سیاست های ما در حال حاضر برای پذیرش ترافیک مشخص شده اند. بیشتر اوقات، شما می خواهید که سیستم شما اتصالات را به طور پیش فرض بپذیرد. مگر اینکه قبلاً قوانین را تغییر داده باشید، این تنظیم باید قبلاً پیکربندی شده باشد. در هر صورت، در اینجا فرمان پذیرش اتصالات به صورت پیش فرض وجود دارد:
iptables --policy INPUT ACCEPT iptables --policy OUTPUT ACCEPT iptables --policy FORWARD ACCEPT
با استفاده از قوانین پیش فرض پذیرش، میتوانید از iptables برای رد کردن آدرسهای IP یا شماره پورت های خاص استفاده کنید، در حالی که به پذیرش تمام اتصالات دیگر ادامه دهید.اگر ترجیح می دهید همه اتصالات را رد کنید و به صورت دستی مشخص کنید که به کدام یک از آنها اجازه اتصال داده شود، باید قوانین و سیاست های پیش فرض زنجیره های خود را تغییر دهید. انجام این کار احتمالاً فقط برای سرورهایی مفید است که حاوی اطلاعات حساس هستند و فقط آدرس های IP یکسانی به آنها متصل می شود.
iptables --policy INPUT DROP iptables --policy OUTPUT DRO iptables --policy FORWARD DROP
?بیشتر یاد بگیرید : جذابترین آموزش هکر قانونمند (CEH v11) قسمت 68 : Firewall بخش 3
با پیکربندی و تنظیمات پیشفرض، میتوانید شروع به اضافه کردن قوانین به iptables کنید تا بداند وقتی با یک اتصال از یک آدرس IP یا پورت خاص مواجه میشود، چه کاری انجام دهد.در این حالت Iptables سه عملکرد را میتواند از خود نشان دهد که این عملکرد ها عبارتند از :
1- پذیرش و دادن اجازه اتصال (Accept)
2- رها کردن یا نادیده گرفتن اتصال (Drop)
3- رد کردن اتصال (Reject) : در صورتی که نمی خواهید منبع خاصی به سیستم شما متصل شود.
با پیکربندی زنجیره های قوانین خود، میتوانید iptable ها را برای اجازه یا مسدود کردن آدرسها، محدوده های آدرس و پورت های خاص پیکربندی کنید.
iptables -A INPUT -s 10.10.10.10 -j DROP
در این مثال بالا ، از iptables -A برای اضافه کردن قوانین به زنجیره موجود استفاده میکنیم. iptables از بالای لیست شروع می شود و از هر قانون عبور می کند تا زمانی که یکی را پیدا کند که مطابقت دارد. اگر نیاز به درج یک قانون بالاتر از قانون دیگر دارید، می توانید از iptables -I [chain] [number] برای تعیین عددی که باید در لیست باشد استفاده کنید. این مثال نحوه مسدود کردن تمام اتصالات از آدرس IP 10.10.10.10 را نشان می دهد.
جهت یادگیری و آشنایی بیشتر با انواع فایروال های سخت افزاری و نرم افزاری پیشنهاد میکنیم جذابترین دوره آموزشی هکر قانونمند | هک قانونی | CEH نسخه 11 رو به هیچ وجه از دست ندید.