پروازی بر دنیای امنیت شبکه (قسمت یازدهم) – طراحی قوانین

با سلام و عرض خسته‌نباشید دوباره خدمت تمام دوستان عزیز! بعد از یک مدت طولانی که سرمون کَمی شلوغ بود، امروز با ادامه قسمت قبلی از این سری آموزشی در خدمتتون هستم، در ادامه بحث Firewall Access rule ها، امروز درمورد مبحث طراحی قوانین صحبت خواهیم کرد؛ بامن همراه باشید.ـ Firewall Rule Design Guidelines / دستورالعملهای طراحی قوانین فایروالبرای ایجاد قوانین(بدون توجه به نوع قانون) ، شما میبایستی یکسری دستورالعملهارا برای طراحی بهتر در نظر بگیرید ، در ادامه، با تعدادی از این Guideline ها آشنا خواهیم‌شد : از یک رویکرد محدودکننده (restrictive approach) برای تمامی Interfaceها و تمامی مسیرهای ترافیکی استفاده کنید ؛ با استفاده از این مورد ، شما میتوانید فقط ترافیکهای موردنظر خودرا Permit کنید و تمامی چیزهای دیگر Deny خواهدشد.گرچه قابل گفتن است که تنظیم دقیق و آماده‌سازی این مورد کمی زمان‌بر و سخت میباشد ، چراکه بسیاری از Network Administratorها بیشتر اوقات پروتکلهای گوناگون دیگری را در شبکه خود پیدا میکنند که برای عملکرد صحیح شبکه موردنیاز باشند و در زمان طراحی آنهارا درنظر نگرفته‌اند ؛ مانند Routing Protocolها ، پروتکلهای مدیریت شبکه و الی آخر.فرض کنید که سیستم‌های کاربران داخلی شما، همگی یک مشکل‌امنیتی باشند. اگر شما بدون توجه به موارد امنیتی به تمام Deviceهای داخلی خود اعتماد کنید و از طریق فایروال به آنها دسترسی به تمامی منابع را فراهم سازید ، میتوانید باعث مشکلات خطرناکی شوید؛ چراکه ممکن است یک Attacker دسترسی مستقیم و فیزیکی به یک PC در سازمان شما داشته‌باشد ویا ازطریقی بدون اطلاع کاربر، به سیستم‌اش دسترسی داشته باشد و از راه‌دور و از طریق آن سیستم برای شبکه شما مشکل ایجاد کند.در Permit کردن های خود ، تا جایی که امکان دارد Specific شوید و جزئیات را لحاظ کنید و از استفاده از موارد Any و All تاجایی که امکان دارد جلوگیری کنید.همیشه توازن بین عملکرد و امنیت را رعایت کنید؛ سازمان‌ها برای یکسری اهداف دارای شبکه میباشند و آن اهداف نیازهای بیزینسی آنها میباشد ، مثل داشتن سرورهای مالی گوناگون ، اشتراک منابع و ...؛ گاهی اوقات ممکن است که Permit کردن یکسری موارد از نظر امنیتی و از نظر شما مشکل داشته باشد ولی باتوجه به نیازهای سازمان ، آن‌مورد میبایستی انجام شود و دسترسیها فراهم باشد.در این‌موارد معمولا شخص دارای مرتبه‌شغلی بالاتر تصمیم‌گیرنده نهایی میباشد و درنهایت هرچه که آن شخص گفت میبایستی انجام شود.ترافیک‌های جعلی(bogus traffic) را در شبکه خود فیلتر کنید و از آنها Log تهیه کنید؛ بعضی از پکتها هیچوقت نباید اجازه عبور در شبکه شمارا داشته باشند. به عنوان مثال اگر شبکه شما 23.1.2.0/24 میباشد ،هیچوقت نباید پکتی از بیرون شبکه وارد شبکه شما بشود که ادعا میکند دارای آدرس‌مبدا 23.1.2.0/24 می‌باشد. یا اینکه باتوجه به RFC 1918 ، بسیار غیرعقلانی است که IP های Private از سمت Internet وارد شبکه شما شوند. این دو موردی که نام بردیم را میتوان گفت مثالی از Bogus traffic میباشند که باید در لبه‌شبکه(Network Edge) فیلتر شوند ؛ حتی اگر فکر میکنید که این فیلترینگ ها توسط Service Provider انجام میشود ، بازهم بسیار بهتر است که شماهم به این موارد توجه کنید و در روترهایتان این موارد را فیلتر کنید.در دوره‌های متناوب زمانی گوناگون Policy های پیاده‌سازی شده بروی فایروال‌را بررسی کنید که از صحیح بودن و درست عمل کردن آنها اطمینان حاصل کنید.Rule Implementation Consistencyبرای هر تغییری که داخل فایروال انجام میشود ، یک روش کنترل‌تغییر(Change Control procedure) میبایستی مشخص کند که دقیقا چه کاری قرار است انجام شود؟ چرا این کار باید انجام شود؟ وهمچنین دارنده‌ی تاییدی از طرف شخصی که نسبت به اجازه‌ ایجاد تغییر مسئول است، باشد.مستندات کنترل‌تغییر میبایستی دارای شرح تاثیر(Impact)ـه تغییری که بروی شبکه ایجاد میشود بعلاوه روش بازگشت به حالت قبل(Restore procedure) به همراه دوره و زمان‌مورد نیاز(برای بازگشت) باشد.متاسفانه ، روش مطمئنی که دارای ساختار دقیق،استوار و مرتبی برای پیاده‌سازی Rule ها در فایروال باشد، وجود ندارد ؛ و گاهی اوقات در نتیجه پیاده‌سازی پالیسی‌های ما ، بصورت ناخواسته نتایج منفی‌ای در شبکه ایجاد میشود. در ادامه تعدادی از این قوانین را مشاهده خواهیم کرد: قوانینی که بیش‌ازحد بی‌پروا میباشند(Rules that are too promiscuous): این نوع از قوانین ، معمولا دسترسی بیشتری نسبت به آن چیزی که واقعا نیاز است ارائه میکنند.به عنوان مثال میتوان گفت که اکثر اوقات ، یک Rule برای درست کار کردن یک Application در سطح شبکه ایجاد میشود و در زمان ایجاد، در کل Protocol Stack از کلیدواژه‌ی Any برای کل IP ها استفاده میشود؛ متاسفانه اگر به این صورت پیاده‌سازی را انجام بدهیم واجازه دهیم که از مرحله تست عبور کرده و از برنامه در سطح سازمان بصورت گسترده استفاده شود، بعدها اگر تصمیم به بازنگری داشته باشیم و بخواهیم بازهم این دسترسی‌را با Ruleـی Specific تر جابجا کنیم بطوری که در عملکرد برنامه هم مشکلی ایجاد نکنیم، کارمان بسیار سخت و زمان‌بر خواهدشد. در پالیسی های امنیتی ، Ruleهای بی‌پروا موارد قابل توجهی میباشند که میبایستی دقت کافی‌ای برای جلوگیری از پیش‌آمدنشان داشته‌باشیم. قوانین زائد(Redundant rules): میدانیم که لیست قوانین ACL ها از بالا به پایین Process میشوند ؛ اگر Ruleـی در خط اول ایجاد کردیم که اجازه‌ی جریان یافتن یک نوع ترافیک خاص را فراهم میکند ، Rule دومی برای آن نیاز نمیباشد. متاسفانه اگر ACL دارا صدها و هزاران خط قوانین باشند ویا از Object Groupهایی که برای Administrator قابل فهم نباشند استفاده کرده‌باشد ، Rule های اضافی و بی‌کاربردی که به آنها نیازی نخواهیم داشت ممکن است سهوا توسط Administrator به لیست اضافه شوند. قوانین زیر سایه(Shadowed rules): قوانین‌زیرسایه قوانینی هستند در در ترتیب اشتباهی در لیست قرار گرفته‌اند.به عنوان مثال ما میخواهیم ترافیک یک Source IP Address خاص به سمت یک Web Server خاص Deny گردد و Rule اش را به ACL اضافه میکنیم ؛ همانطور که میدانید قوانین جدیدی که به ACL اضافه میگردند به انتهای لیست میروند ، پس اگر در خطوط قبلی شما اجازه برقراری ارتباط Web-server از Any آیپی به هر آیپی مقصدی Permit کرده باشید، با توجه به خواندن ACL از بالا به پایین آن Ruleـی که اضافه کرده‌اید بی‌کاربرد خواهد بود و ترافیک موردنظر شما Allow خواهد شد. قوانین یَتیم(Orphaned rules): قوانینی میباشند که هیچوقت Matched نمیشوند و میتوان گفت که اکثر اوقات اشتباها به ACL اضافه میشوند و الکی فضا اشغال میکنند. قوانینی که بصورت اشتباه طراحی شده‌اند(Incorrectly planned rules): این قوانین معمولا بدلیل اشتباه انسانی در بحث تکنیکال و ارائه پروتکل،پورت ویا موارد دیگر بصورت اشتباه به Administrator میباشد. قوانینی که بصورت اشتباه پیاده‌سازی شده‌اند(Incorrectly implemented rules): این قوانین ، مواردی هستند که در پیاده‌سازی آنها توسط Administrator اشتباهی پیش‌میآید و مواردی مانند Port، Protocol ویا IP بصورت اشتباه Set میشوند.امیدوارم که این مقاله تا به اینجا برای شما مفید واقع شده باشد.موفق باشید