امنیت شبکه خود با Iptables - Proxy - NAT - IDS: قسمت 1

در این پست سعی می شود کمی در مورد نحوه کار شبکه ها و چگونگی تبدیل تجهیزات لینوکس به روتر که شبکه ما را کمی ایمن تر می کند ، چه در خانه و چه حتی در مشاغل ، روشن شود. بنابراین بیایید به کار خود بپردازیم:

این محتوا بر اساس کتاب "Linux - سیستم مدیریت و خدمات شبکه خدمات" - Sébastien BOBILLIER

مسیریابی و فیلتر کردن

برای صحبت و درک در مورد مسیریابی ابتدا می توان عملکرد روتر را تعریف کرد؟ برای این منظور می توان گفت که یک روتر علاوه بر ایجاد شبکه و امکان اتصال با تجهیزات دیگر (دانستن اینکه این کار با AP ، Switch ، Hub یا سایر دستگاه ها قابل انجام است) توانایی اتصال دو شبکه مختلف به یکدیگر را دارد.

روتر

همانطور که در تصویر می بینیم ، یک شبکه محلی "10.0.1.0" وجود دارد که توسط روتر ایجاد می شود و به یکی از دو رابط خود می رسد. سپس روتر موجود در رابط دیگر خود ، با IP عمومی خود دارای شبکه دیگری است که می تواند به اینترنت متصل شود. عملکرد مسیریابی اساساً به عنوان واسطه بین این دو شبکه است تا بتواند ارتباط برقرار کند.

لینوکس به عنوان روتر

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

/proc/sys/net/ipv4/ip_forward

در آنجا خواهیم فهمید که این یک پرونده است که فقط شامل "0" صفر است ، آنچه که باید انجام دهیم این است که آن را به یک "1" تغییر دهیم تا این رفتار فعال شود. این متأسفانه هنگام راه اندازی مجدد رایانه حذف می شود ، برای اینکه آن را به طور پیش فرض فعال کنیم ، باید از دستور زیر استفاده کنیم:

sysctl net.ipv4.ip_forward=1

یا آن را مستقیماً در پرونده ویرایش کنید /etc/sysctl.conf. بسته به توزیع ، این پیکربندی همچنین می تواند در یک پرونده در باشد  /etc/sysctl.d/.

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

route -n

o

netstat -nr

هر دو دستور باید یکسان برگردانند.

عکس صفحه از 2014-09-30 18:23:06

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

فرض کنید لینوکس من دارای دو رابط شبکه است ، رابط اول دارای اتصال اینترنتی است که شبکه آن 172.26.0.0 و دیگری (10.0.0.0) دارای چند رایانه از شبکه محلی دیگر است. اگر می خواهیم بسته ها را به آن شبکه دیگر هدایت كنیم می توانیم استفاده كنیم:

route add -net 10.0.0.0 netmask 255.0.0.0 gw 172.26.0.8

به طور کلی این است:

route add -net REDDESTINO netmask MASCARA gw IPDELLINUX

اگر بدهیم مسیر -n صرف نظر از اینکه این شبکه وجود دارد یا نه ، این مسیریابی در جدول ما ثابت می شود.

عکس صفحه از 2014-09-30 18:31:35

اگر می خواهیم مسیریابی گفته شده را حذف کنیم می توانیم استفاده کنیم

route del -net 10.0.0.0 netmask 255.0.0.0

قابل اجتناب

اساساً از iptables برای فیلتر کردن بسته ها ، خروجی ها ، ورودی ها یا موارد دیگر استفاده می شود ، این باعث می شود که این یک ابزار عالی برای مدیریت ترافیک شبکه ما باشد. خوب ، iptables ، همانطور که به ما امکان می دهد ترافیک همان رایانه را فیلتر کنیم ، همچنین به ما امکان می دهد ترافیکی را که از طریق آن عبور می کند فیلتر کنیم. (حمل و نقل) Iptable ها را می توان به جدول ، زنجیره و عملکرد تقسیم کرد.

  • تابلوها:  در واقع می تواند دو جدول وجود داشته باشد ، فیلتر ، برای فیلتر کردن بسته ها و  NAT برای ترجمه آدرس ها ، یعنی انتقال از یک شبکه به شبکه دیگر.
  • زنجیر: این زنجیره به نوعی از ترافیکی که می خواهیم فیلتر یا شنا کنیم اشاره دارد ، یعنی قرار است جداول را به کدام ترافیک اعمال کنیم؟ و آنها می توانند:  INPUT: ترافیک ورودی ، خروجی: ترافیک خروجی یا رو به جلو: ترافیکی که از آن عبور می کند اما اتصال مناسبی نیست.
  • همچنین ممکن است ظاهر شود POSTROUTING ، برای درمان بسته به روش خاصی بعد از اینکه روت شد ، استفاده می شود.
  • اقدامات: اقدامات اساساً عملی است که باید با زنجیره انجام شود. این عمل می تواند باشد رها کردن ، که فقط آن ترافیک را از بین می برد یا تایید کنید. که به ترافیک اجازه می دهد چنین عملی را انجام دهد.

قوانین IPTABLES به ترتیب ایجاد شده ذخیره و اجرا می شوند و اگر یک قاعده یک قاعده قبلی را حذف کند ، آخرین قانون در ترتیب همیشه اعمال می شود.

خط مشی های فایروال.

به طور کلی ، فایروال ها به طور طبیعی به دو روش کار می کنند:

  1. به همه ترافیک اجازه دهید به جز ، یا
  2. به هیچ ...

برای اعمال سیاست استفاده کنید IPTABLES - زنجیره عملکرد P

جایی که رشته نوع ترافیک را نشان می دهد (INPUT ، OUTPUT ، FORWARD ، POSTROUTING ...) و عمل DROP OR ACCEPT است.

بیایید به یک مثال نگاه کنیم.

عکس صفحه از 2014-09-30 18:53:23

 

در اینجا می بینیم که در ابتدا من قادر به پینگ بودم ، سپس به IPTABLES گفتم که تمام ترافیک OUTPUT قطره است یا مجاز نیست. سپس به IPTABLES گفتم که آن را بپذیرید.

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

iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP
اگر این خط مشی ها اعمال شوند ، هیچ نوع ارتباطی نخواهند داشت
.

برای بازگشت ما همان را می نویسیم و DROP را با ACCEPT جایگزین می کنیم.

در این مرحله ، از آنجا که همه ترافیک رد می شود ، ما شروع به بیان IPTABLES خود می کنیم که چه ترافیکی می تواند داشته باشد.

نحو این است:

iptables -A cadena -s ip_orgigen -d ip_destino -p protocolo --dport puerto -j acción

کجا:

رشته = INPUT ، OUTPUT یا FORWARD

origin_ip = منشا بسته ها ، این می تواند یک IP یا یک شبکه باشد و در این حالت باید ماسک را مشخص کنیم).

destination_ip = بسته ها به کجا می روند. این می تواند یک IP یا یک شبکه باشد و در این حالت باید ماسک را مشخص کنیم).

پروتکل = پروتکل مورد استفاده توسط بسته ها را نشان می دهد (icmp ، tcp ، udp ...)

بندر = بندر مقصد ترافیک.

عمل = رها یا قبول کنید.

به عنوان مثال:

 

عکس صفحه از 2014-09-30 19:26:41

کلیه خط مشی های محدود اعمال می شود.

عکس صفحه از 2014-09-30 19:27:42

سپس قوانین را اضافه می کنیم تا بتوانیم از طریق پورت 80 HTTP و 443 HTTPS ، با پروتکل TCP ترافیک داشته باشیم. سپس پورت 53 برای مشتری DNS اعمال می شود تا دامنه ها را برطرف کند ، در غیر اینصورت پیمایش نمی کنید. این با پروتکل udp کار می کند.

خط:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

به دلیل موارد زیر است: وقتی به عنوان مثال درخواست HTTP را انجام می دهید ، به پورت 80 سرور متصل می شوید ، اما سرور برای بازگرداندن اطلاعات نیاز به اتصال از طریق هر پورت به شما دارد. (به طور کلی بیشتر از 1024).

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

هنگام قرار دادن OUTPUT در قوانین ، این فقط مربوط به تجهیزات مورد نظر است ، اگر ما از تجهیزات خود به عنوان روتر برای اجازه دادن به این اتصالات استفاده می کنیم ، باید OUTPUT را به FORWARD تغییر دهیم. از آنجا که ترافیک از طریق کامپیوتر عبور می کند اما توسط آن آغاز نمی شود
همه این قوانین پس از راه اندازی مجدد حذف می شوند ، بنابراین شما باید اسکریپت هایی را ایجاد کنید تا به طور پیش فرض شروع شوند. اما این را در بعدی خواهیم دید

امیدوارم از این اطلاعات خوشتان آمده باشد. در مورد بعدی در مورد NAT ، پروکسی و اسکریپت های Firewal صحبت خواهم کرد.


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

12 نظر ، نظر خود را بگذارید

نظر خود را بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخشهای موردنیاز علامتگذاری شدهاند با *

*

*

  1. مسئول داده ها: میگل آنخل گاتون
  2. هدف از داده ها: کنترل هرزنامه ، مدیریت نظرات.
  3. مشروعیت: رضایت شما
  4. ارتباط داده ها: داده ها به اشخاص ثالث منتقل نمی شوند مگر با تعهد قانونی.
  5. ذخیره سازی داده ها: پایگاه داده به میزبانی شبکه های Occentus (EU)
  6. حقوق: در هر زمان می توانید اطلاعات خود را محدود ، بازیابی و حذف کنید.

  1.   روژلیو پینتو dijo

    این مبنایی است که بسیاری از کارآفرینان برای ساخت دیوارهای آتش خود استفاده می کنند ، به همین دلیل مارک های زیادی از دیوارهای آتش با لینوکس تعبیه شده در بازار وجود دارد ، برخی خوب و برخی دیگر نه چندان زیاد.

  2.   هبر dijo

    مقاله عالی منتظر قسمت دوم هستم.

  3.   میلتون dijo

    توضیح بسیار خوب ، به من کمک کرد تا پروکسی کار خود را درک کنم. متشکرم

  4.   فاضل dijo

    سلام Jlcmux ،

    عالی ، من واقعاً دوستش داشتم ، چه موقع طرف مقابل در دسترس خواهد بود؟

    با سلام و تشکر از به اشتراک گذاری

    1.    Jlcmux dijo

      ممنون بابت نظرتان.

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

      سلام.

  5.   اسرائيل dijo

    مقاله بسیار خوبی دوست @ Jlcmux ، من واقعاً با او آموختم ، زیرا او برخی از تردیدهای من را برای مدتی روشن کرد ، اتفاقا شما بدتان نمی آید کتاب منبع مقاله ، از Sébastien BOBILLIER ، به خوبی slau2s و به اشتراک گذاشتن قسمت 2 ، salu2s را ببینید.

    1.    Jlcmux dijo

      سلام ممنون از اینکه درباره اسرائیل نظر دادید.

      معلوم می شود که من کتاب را به صورت فیزیکی دارم. اما من این لینک را در Google Books پیدا کردم. http://books.google.com.co/books?id=zxASM3ii4GYC&pg=PA356&lpg=PA356&dq=S%C3%A9bastien+BOBILLIER+Linux+%E2%80%93+Administraci%C3%B3n+del+sistema+y+explotaci%C3%B3n+de+los+servicios+de+red#v=onepage&q=

      فکر کنم کامل باشه

  6.   آریل dijo

    مقاله بسیار خوبی ، من یک سوال اضافه می کنم: استفاده از linux به عنوان روتر ، در صورت وجود ، با توجه به سخت افزار اختصاص داده شده چه مزیتی دارد؟ یا فقط برای ورزش است؟ من می دانم که توزیع های اختصاصی وجود دارد اما نمی دانم آیا آنها برای نجات رایانه های شخصی قدیمی هستند یا انعطاف بیشتری در تنظیمات دارند.

    1.    Jlcmux dijo

      خوب ، من فکر می کنم که مزایا و معایب آن بستگی به سناریویی دارد که در آن قصد اجرای آن را دارید. چرا مطمئناً شما قصد ندارید UTM یا چیزی شبیه به آن را برای خانه خود بخرید؟ و شاید برای یک تجارت کوچک که توانایی پرداخت آن را هم ندارد. این همچنین به عنوان یک تمرین خوب است ، زیرا به شما کمک می کند منطق این مسئله را درک کنید و می توانید یک FWall اختصاصی را پیکربندی کنید. علاوه بر این تقریباً همه این دستگاه ها واقعاً دارای لینوکس جاسازی شده هستند.

      سلام.

  7.   آریل dijo

    سلام ، یک سوال ، آیا می توانید یک رابط "مصنوعی" در linux برای مسیریابی مشابه بین شبکه ها ایجاد کنید؟ (سبک ردیاب بسته) برای کار با ماشین های مجازی؟ به عنوان مثال اگر من دارای eth0 هستم (چون البته من یک کارت دارم) آیا می توانم برای ایجاد شبکه دیگری eth1 ایجاد کنم؟ مربی بسیار خوب!

    1.    ایلاو dijo

      البته در لینوکس می توانید رابط های مجازی ایجاد کنید. اگر eth0 دارید می توانید eth0: 0 ، eth0: 1 ، eth0: 2 ... و غیره داشته باشید

  8.   چینولوکو dijo

    خیلی خوب ، ممنون از به اشتراک گذاشتن