سلام دوستان . در این سری از آموزش ها قصد داریم تا یک بررسی جامعی از فایروال ها در سمت سرور و کلاینت داشته باشیم لذا انواع فایروال ها را با رابط های مختلف ( گرافیکی و متنی ) و با پالیسی های مختلف بررسی می کنیم . ابتدا از سمت کلاینت و با رابط های گرافیکی شروع می کنیم و کم کم به سمت سرور و کار با فایروال های قوی تری همچون iptables خواهیم پرداخت . هم چنین ابتدا از روتر بودن کلاینت و سرور خود صرف نظر می کنیم اما در قسمت های بعدی به توضیح رول های مربوط به Routing نیز خواهیم پرداخت .

اگر بخواهیم در مورد امنیت صحبت کنیم طبیعتا ابتدا باید از سیستم شخصی خودمون شروع کنیم . پس باید با طرز کار یک فایروال در سیستم خودمون به خوبی آشنا باشیم . هم چنین زمانی رو فرض کنید که دوست نداریم برنامه ها و … به صورت خودکار به اینترنت متصل شده و به عنوان مثال عمل بروز رسانی را انجام دهند و یا می خوایم از پورت های سیستم خودمون مطمین باشیم تا یک وقت برنامه ای آلوده با بیرون در ارتباط نباشد . تمامی این موارد را می توان با یک فایروال و برنامه ی netstat انجام داد و چک کرد .

در ابتدا روشی مشترک برای مشاهده ی سرویس ها و پورت های فعال در تمامی توزیع ها گفته می شود سپس فایروال UFW در اوبونتو را به صورت گرافیکی بررسی می کنیم . هم چنین در قسمت های بعدی دیگر فایروال ها در دیگر توزیع ها را بررسی می کنیم .

ابتدا برای چک کردن این که چه سرویس هایی و یا چه برنامه ای روی چه پورتی روی حالت listen قرار دارد , به صورت زیر عمل می کنیم :

نکته : از سویچ t برای مشخص کردن Socket های tcp استفاده کردیم .

نکته : از سویچ u برای مشخص کردن Socket های udp استفاده کردیم .

نکته : از سویچ l برای مشخص کردن Socket هایی که روی حالت listen قرار دارند استفاده کردیم .

نکته : از سویچ p برای مشخص کردن pid سرویس و یا برنامه ای که روی یک پورت سرویس می دهد استفاده کردیم .

نکته : از عدد 4 به منظور معیین کردن آی پی ورژن 4 استفاده کردیم . ( سرویس هایی که بر روی ای پی ورژن 4 سرویس دهی می کنند )

نکته : از سویچ n برای نشان دادن خروجی به صورت numerical addresses استفاده کردیم . ( با استفاده از این سویچ , پورت ها و … همراه با وظیفه آن ها نمایش داده می شوند . مثلا به چای درج پورت 80 از کلمه ی http استفاده می شود و … )

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

001

همان طور که ملاحظه می کنید ( به عنوان مثال ) سرویس ssh با pid 743 روی پورت 22 در حال سرویس دهی است و یا برنامه ی Viber با pid 3127 بر روی آی پی 127.0.0.1 و پورت 30666 در حالت listen است .

اما برای مشاهده ی ارتباط سیستم با آی پی ها و پورت های خارج از سیستم به صورت زیر عمل می کنیم :

در واقع از همان دستور قبلی استفاده می کنیم , با این تفاوت که دیگر از سویچ l یعنی حالت listen استفاده نمی کنیم .

نکته : می توان از سویچ c- جهت مانیتور کردن این دستور استفاده کرد . یعنی به صورت خودکار این برنامه بروز می شود و هر لحظه می توان چک کرد که سیستم روی چه پورتی و با چه آی پی در تماس است .

نکته : در خروجی دستور بالا باید به دنبال ارتباط های ESTABLISHED باشیم . یعنی ارتباط هایی که فعال هستند و اطلاعات رد و بدل می کنند . پس می توان یک grep به آخر دستور بالا اضافه کرد . یعنی :

نکته : در دو دستور قبل از سویچ p با سطج دسترسی روت استفاده کردیم . پس می توانیم pid هر سرویس و یا برنامه ای را مشاهده کنیم و اگر به آن مشکوک بودیم آن را kill کنیم . به عنوان مثال برای kill کردن برنامه ی وایبر به شکل زیر عمل می کنیم :

نکته : عدد 9 نوع سیگنالی است که جهت kill کردن پروسه فرستاده می شود . برای مشاهده انواع نوع سیگنال man پیچ دستور kill را مطالعه کنید .

توجه : دو دستور بالا و kill کردن یک پروسه در تمامی توزیع های گنو لینوکسی یکسان می باشد .

اما بعد از این که مشاهده کردیم چه سرویس هایی روی حالت listen هستند و سیستم با چه آی پی هایی در تماس است , لازم است که با استفاده از یک فایروال جلوی برقرار ارتباط هر کدام را بگیریم . شاید بتوان یکی از قوی ترین فایروال های را iptables نام برد که تقریبا در تمامی توزیع های گنو لینوکسی از آن استفاده می شود .

تقریبا با iptables تمامی نیاز های یک سیستم را می توان بر طرف کرد همین جامع بودن باعث انعطاف بالای این فایروال شده است و این انعطاف بالا کار را برای تازه واردان کمی سخت می کند . برای همین ابتدا کار با فایروال های گرافیکی در دو توزیع ubuntu و centos را بررسی می کنیم سپس به بررسی دیگر فایروال ها از جمله iptables خواهیم پرداخت .

رابط گرافیکی فایروال UFW در اوبونتو :

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

001

به صورت پیش فرض فقط رابط CLI این فایروال نصب می باشد لذا باید رابط GUI این فایروال را نصب کرد . به صورت زیر :

برای استفاده از محیط گرافیکی فایروال UFW کافیست دستور زیر را در ترمینال وارد کنیم :

نکته : حرف g در ابتدای کلمه ی gufw به معنای gui می باشد .

نکته : برای کار با این فایروال باید سطح دسترسی روت داشت . پس لازم است که دستور بالا را با استفاده از یوزر روت اجرا کنیم و یا این که برنامه را در محیط معمولی اجرا کرده سپس بر روی گزینه ی unlock کلیک کنیم .

002

حال برای فعال کردن فایروال کافیست از قسمت status اقدام به فعال کردن فایروال کنیم . پس از فعال شدن فایروال خواهید دید که آیتم incoming به صورت پیش فرض روی حالت deny قرار گرفته و آیتم outgoing به صورت پیش فرض روی حالت allow قرار دارد .

( فعلا )‌ یک سیستم کلاینت را برای ارتباط با دیگر سیستم ها می توان در همین دو حالت خلاصه کرد . یعنی :

1. پکت هایی که از طرف دیگر سیستم ها وارد سیستم ما می شوند .

2. پکت هایی که از سیستم ما خارج شده و وارد دیگر سیستم ها می شوند .

حالت اول را incoming گویند چرا که همان طور که مشخص است , ابتدا پکت ها قصد وارد شدن به سیستم را دارند . یعنی دیگران قصد برقراری یک ارتباط با سیستم ما را دارند . مثلا روی پورت 22

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

حالا که درک نسبی ای از دو حال incoming و outgoing بدست آوردیم , لازم است که فایروال را متناسب با نیاز های سیستم خودمون کانفیگ کنیم . به عنوان مثال پالیسی های فرضی من در سیستم به شرح زیر است :

1. سیستم من فقط بتواند روی پورت 80 و 443 با بیرون ارتباط برقرار کند ( یعنی بتوانیم صفحات اینترنتی را باز کنیم )

2. دیگران از بیرون فقط و فقط بتوانند روی پورت 22 با سیستم من در ارتباط باشند .

 

یک بار دیگر حالت اول را بخوانید . قرار است که سیستم با بیرون ارتباط برقرار کند پس نتیجه می گیریم که باید با حالت outgoing کار کنیم . پس در درجه ی اول ابتدا دو پورت 80 و 443 را برای حالت outgoing باز می کنیم . سپس تمامی پورت های دیگر را می بندیم .

برای این منظور در فایروال قسمت Outgoing را انتخاب کرده و بر روی Reject کلیک کنید . حال برای باز کردن دو پورت خواسته شده در بالا از قسمت Rules بر روی + کلیک کنیم تا پنجره ی firewall: add role باز شود .

003 حال به سربرگ simple می رویم . قرار بود که دو پورت 80 و 443 را برای حالت outgoing باز بزاریم . پس به ترتیب موارد زیر را انتخاب می کنیم :

نکته : اگر فقط این دو رول را ست کنید , خواهید توانست آی پی آدرس ها را روی پورت 80 و 443 باز کنید یعنی نمی توانید با دامنه ی سایتی کار کنید , چرا که ارتباط با dns server را قطع کرده اید ! یعنی نمی توانید دامنه ی گوگل را با مرورگر خودتون باز کنید . اما می توانید آی پی سرور گوگل را روی پورت 80 ویا 443 باز کنید .

برای حل این مشکل کافیست پورت 53 را هم باز کنید . فقط توجه داشته باشید که ارتباط با dns server از نوع udp می باشد . لذا به صورت زیر عمل می کنیم :

004

نکته : v6 به معنای IPv6 می باشد که می توان 3 رول آخر را انتخاب کرد و سپس روی گزینه ی – کلیک کرد تا پاک شوند . حال برای تست نتایج یک ترمینال باز کنید و به عنوان مثال به صورت زیر عمل کنید :

اگر مراحل بالا را درست طی کرده باشید باید بتوانید دو پورت 80 و 443 را باز و پورت 8080 را بسته ببینید .

005

توجه : پورت 8080 بر روی سایت بالا باز می باشد اما توجه کنید که ما فقط دو پورت 80 و 443 را برای outgoing انتخاب کرده ایم و ارتباط روی تمامی پورت های دیگر را بسته ایم .

 

اما پالیسی شماره ی دوم . یعنی : دیگران از بیرون فقط و فقط بتوانند روی پورت 22 با سیستم من در ارتباط باشند

همان طور که در بالا گفته شد , به صورت پیش فرض تمامی ارتباطات روی حالت incoming بسته می باشد یعنی نمی توان روی هیچ پورتی از خارج با سیستم در تماس بود . حال برای اعمال پالسی بالا ابتدا از پنجره ی اصلی فایروال از قسمت incoming گزینه ی Reject را انتخاب کنید سپس برای باز کردن یک پورت خاص کافیست از قسمت roles بر روی + کلیک کنیم تا پنجره ی Firewall: add Role باز شود . سپس به سربرگ simple می رویم . حال کافیست پالیسی مورد نظر را به صورت زیر وارد کنیم :

006_1حالا برای مشاهده نتیجه کافیست از سیستمی دیگر آی پی اوبونتوی خود را روی پورت 22 اسکن کنیم . به عنوان مثال :

007

در قسمت بعدی به توضیح رابط متنی این فایروال در اوبونتو خواهیم پرداخت

 

نویسنده : E2MA3N

منبع : او اس لرن |http://OSLearn.ir

 

از این مطلب راضی هستید ؟ می خواهید به سایت کمک کنید ؟ رضایت خودتون رو با دونیت به ما اعلام کنید . برای دونیت روی خرید کلیک کنید . با تشکر

[parspalpaiddownloads id=”8″]

درباره نویسنده :

ایمان همایونی هستم، از سال 2009 با گنو لینوکس فعالیت خودم رو در زمینه ی کامپیوتر و IT شروع کردم و تا الان موفق به گذروندن دوره هایLPIC 1 / LPIC 2 / VCP5-DCV / MCITP / CCNA / MTCNA شدم . مدتی در زمینه امنیت فعالیت هایی داشتم اما در حال حاضر تمرکز خودم رو بر روی مجازی سازی و لینوکس گذاشته ام .

تمام پست های من - وب سایت من