پروازی بر دنیای امنیت شبکه (قسمت هفتم) – فایروال (2)

با سلامی دوباره خدمت تمامی نتورک‌باز های عزیز؛ در ادامه پست قبلی از این سری آموزشی، امروز با ادامه‌ی مباحث مربوط به Firewall ها در خدمتتون هستیم.

بسیاری بر این باور هستند که فقط با خریداری و وارد مدار کردن یک Firewall، تمامی مشکلات امنیتیشان از حل میشود؛ خیر ، از این خبرا نیست! امروزه میبایستی متوجه باشیم که داشتن یک فایروال و پیاده‌سازی صحیح Policy های سازمان، فقط قدم هایی جهت کاهش‌ریسک میباشند، ولی هیچگاه نمیتوانند کاملا ریسک را از بین ببرند.

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

  • اشتباهات در پیکربندی یک Firewall ، عواقب جدی و خطرناکی در پی دارد: کار اصلی یک Firewall چیست؟ پیاده سازی و اجرای یک پالیسی. بر اساس انواع فایروالهای موجود، راه های بسیاری برای پیاده‌سازی Feature هایی نظیر ACL, Packet Inspection, NAT, Authentication, و ... وجود دارد. اگر Rule ها و قوانین اجرایی Firewall به درستی پیاده‌سازی نشوند ، ممکن است کاری که از Firewall انتظار داشتید به درستی انجام نشود. برای این مورد به تجربه و دانش‌فنی زیادی نیاز است تا پالیسیهای شما به درستی پیاده سازی شوند.
  • تمامی اپلیکیشن های تحت شبکه ، بصورتی نوشته نشده‌اند که بتوانند براحتی از فایروال عبور کنند: ممکن است در شبکه‌ی شما از یکسری اپلیکیشن‌ها و نرم افزارهای سفارشی استفاده شود که بصورت استاندارد بر اساس Rule های Firewall شما نوشته نشده باشند ؛ در اینجور مواقع میبایستی یا برنامه را بر اساس سیاستهای Firewall دوباره بنویسید ویا اینکه در فایروال ، یک exception(استثنا) قائل شوید و اجازه عبور ترافیک آن برنامه را بدهید.
  • افرادی که به اجبار ترافیکشان از Firewall عبور میکند ، ممکن است سعی کنند تا قوانین فایروال را دور بزنند: اگر یک قانونی توسط فایروال شما درحال اجرا باشد، به عنوان مثال شما اجازه و دسترسی‌ای برای عبور داده های مربوط به هرگونه نرم‌افزارهای پیام‌رسان را در شبکه خود نمیدهید؛ ممکن است که کاربر شما با کمی خلاقیت بتواند این قانون را دور بزند. مثلا بیاید و روش استفاده از آن سیستم پیام‌رسان خودرا در قالب یک پروتکل دیگر مانند بستر Http ویا Https مخفی کند و چون این پروتکل ها به در شبکه اجازه عبور دارند، براحتی به کاربر اجازه‌ دور زدن محدودیت شما را میدهند؛ به اینکار tunneling میگویند و میتواند توسط پروتکلهای مختلفی انجام شود. در یکسری Firewall ها که دارای application layer inspection میباشند ، میتوان از اینگونه Tunnelingهای مخرب جلوگیری کرد.
  • ـ Latency و تاخیری که توسط فایروال اضافه میشود: اگر یک فایروال در شبکه شما ، وظیفه ی آنالیز میزان ترافیک زیاد و بسیار سنگینی را بر عهده داشته باشد ، ممکن است چند میلی‌ثانیه باعث تاخیر در زمان تحویل ترافیک شود و در نتیجه در شبکه شما Delay ایجاد میشود.
  • رویکرد Defense-in-Depth (دفاع در عمق):

همانطور که قبلا به این موضوع اشاره ای کرده بودیم، داشتن فقط یک نقطه برای برقراری کنترل و امنیت کل شبکه، کار زیاد هوشمندانه و درستی نیست؛ اگر همان یک نقطه به بصورت ناقص و اشتباه پیکربندی شده باشد ویا به هر دلیلی در پیاده‌سازی پالیسی موردنظر شما شکست بخورد و Fail شود، کل شبکه بصورت کامل در معرض تمام خطرها و تاثیرات منفی ای که سعی داشتید با  Firewall از آنها جلوگیری کنید، قرار میگیرد. یک راهکار که میتوانید برای جلوگیری از این موارد بکار ببرید استفاده از رویکرد دفاع در عمق (defense-in-depth approach) ویا همان رویکرد لایه ای(layered approach) است.

بگذارید برای بهتر متوجه شدن موضوع ، یک مثال از defense-in-depth approach را در یک کمپانی سطح متوسط که دارای یک وب‌سرور(که بصورت عمومی توسط اینترنت قابل دسترس است) مورد بررسی قرار دهیم. ما ، به عنوان یک کاربر نهایی(End-user) مرورگر خودرا باز میکنم و نام سرور را تایپ میکنیم. در آنطرف مرورگر ما بدون آنکه ما متوجه مورد خاصی شویم یک درخواست DNS برای پیدا کردن IP سرور موردنظر ارسال میکند و به محض اینکه IP موردنیاز خودرا بدست آورد ، یک سِشِن(Session)ـه TCP با سرور ایجاد خواهد کرد.

همانطور که پکتهای ما از طریق اینترنت به سمت آن کمپانی میروند، روتر مرزی آنها ، خط اول دفاعی میباشد. روتر میتواند منبع و IP Addressـه فرستنده را بررسی کند و مطمئن شود که آن IP ، یک آدرسه جعلی و Spoof شده نمیباشد. همچنین ممکن است که کمپانی در روتر مرزی خود دارای یکسری ACL ها باشد که بلافاصله ترافیک‌های مخربه معروف و شاخته‌شده را در همان لبه‌ی شبکه Drop کند.

با توجه به اینکه پکت‌ما مخرب نیست(یا اینکه حداقل توسط روتر مخرب شناخته نشده است)، به داخل شبکه و به سمت Firewall آنها که خط دوم دفاعی کمپانی میباشد ، Forward میگردد.

حالا در اینجا، فایروال میتواند قبل از آنکه پکت را به سمت سرور مربوطه Forward کند، هرکاری که مدنظرش است برای بررسی و Verification انجام دهد. فایروال میتواند وانمود کند که سرور مدنظر ما میباشد و پاسخی در برابر پکت ما ارسال و روال three-way handshake را طی کند و اطمینان حاصل کند که شخص درخواست دهنده درحال اجرای حمله SYN Flood نمیباشد. فایروال میتواند قبل اینکه هرگونه Forwardـی انجام دهد، مارا مجبور به احرازهویت و اجرای ده‌ها Rule دیگر که بروی فایروال پیاده‌سازی شده اند، بکند؛ با توجه به اینکه ما از نظر تمامی Rule ها مشکلی نداشتیم، پکت ما به سمت سرور ارسال میگردد.

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

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

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

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


در قسمت آینده درمورد Firewall Methodologies صحبت خواهیم کرد، با من همراه باشید...