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

باسلام و عرض خسته‌نباشد خدمت تمامی نتورک‌باز های عزیز :)؛ در ادامه قسمت قبلی از این سری آموزشی، امروز با مبحث طراحی ، ایجاد و توسعه فایروالها در خدمتتون هستم. میدانیم که براحتی ، فیچرها و Ruleهای بسیاری را میتوان بروی فایروالها پیاده‌سازی کرد و قدمی برای امن‌سازی شبکه برداشت ...، اما در اینجا میخواهیم درمورد Best Practice های پیاده‌سازی یک فایروال صحبت کنیم و استانداردهای طراحی را بررسی کنیم.تکنولوژی های فایروال: میدانیم که هدف فایروالها، "جداسازی دو یا چند موجودیت نسبت به یکدیگر وهمچنین بررسی دقیق و کنترل دسترسیهای این موجودیت ها به‌یکدیگر" میباشد. امروزه اکثر فایروالهای تجاری میتوانند تمامی موارد پکت فیلترینگapplication layer inspection، stateful packet filtering، NAT، AAA و همچنین سرویس های virtual private network (یا همان VPN) را پیاده‌سازی و اجرا کنند. یک مثال خوب که میتوانیم درمورد فایروالها نسبت‌بهش اشاره داشته باشیم، فایروال سیسکو، Cisco Adaptive Security Appliance یا همان ASA میباشد که یک فایروال در یک دیوایس‌اختصاصی است (یعنی اینکه به عنوان یک ماژول به دیوایس دیگری اضافه نمیشود ویا اینکه بصورت نرم‌افزاری بروی سیستمی نصب نمیشود و خودش یک دستگاه جداگانه میباشد)(گرچه قابل ذکر است که انواع دیگری از این نوع فایروال مانند ASA Moduleهایی هم برای دیوایسهای رده‌بالای سیسکو وجود دارند).بسیاری از این فیچرها میتوانند بصورت نرم‌افزاری بروی IOSـه روتری که Memory ، CPU و لایسنس‌اش پاسخگو باشند، پیاده‌سازی شوند؛ یک فایروال اختصاصی موارد امنیتی بیشتری را برای اجرا در نظر گرفته میگیرد، بنابراین ترجیحا از Dedicated Firewallها ، بجای استفاده از یک تَک‌روتر استفاده میشود. قوانین مربوط به دفاع‌درعمق(defense-in-depth) به شما پیشنهاد میدهد که برای اضافه کردن Levelهای امنیتی بیشتر، بهتر است این فیچرهای امنیتی را بجای یک Device ، بروی دیوایسهای متعددی پیاده‌سازی کنید؛ پس دلیل اینکه این موارد بروی یک روترهم قابل پیاده‌سازی میباشند، فراهم کردن امکان defense-in-depth برای شما میباشد. مواردی که میبایست در طراحی فایروالها در نظر گرفت(Firewall Design Considerations) در ادامه ، لیستی جزئی از Best Practice هایی که برای توسعه فایروالها در شبکه در نظر گرفته میشود،مطرح شده است: فایروالها میبایستی در بین خطوط امنیتی شما قرار داده شوند ، به عنوان مثال بین 2 شبکه مختلف که از نظر سازمان‌شما دارای سطوح اعتماد گوناگونی میباشند؛ مثل شبکه داخلی سازمان و شبکه اینترنت.در شبکه شما ، فایروال میبایستی یک دیوایس‌امنیتی اصلی باشد ، اما نباید تنها نقطه امنیتی شبکه ویا تنها دیوایس امنیتی شما باشد.استفاده از یک پالیسی "Deny all" برای تمامی ترافیک و سپس اجازه عبور یک ترافیک خاص در شبکه(از نظر شما خطرناک نمیباشد) بسیار بهتر از استفاده از یک پالیسی "Permit all" و بلاک کردن ارتباطهای خطرناک در شبکه میباشد(که در پستهای قبل درمورد این موضوع بصورت مفصل‌تر صحبت کردیم).از فیچرهای فایروال ، به بهترین نحو ممکن استفاده کنید. به عنوان مثال اگر در سازمان شما هزاران کاربر حضور دارند که نیاز به دسترسی به اینترنت دارند ، شما میتوانید Dynamic NAT/PAT را برای آن کاربران ، همراه با Stateful packet-filtering و deny تمامی ترافیک ورودی به شبکه از طرف اینترنت استفاده کنید. این موارد به کاربران خارج از شبکه اجازه نمیدهد که سشن‌ای به داخل شبکه شما برقرار کنند چراکه از deny all استفاده کرده‌اید ؛ همچنین به دلیل استفاده از NAT ، به کاربران داخلی شما اجازه ارتباط به اینترنت را میدهد و Stateful firewall شبکه شمارا نسبت به پکت‌های بازگشتی امن میسازد.مطمئن باشید که موارد امنیتی فیزیکی فایروال، از قبیل محل دیوایس ، محل عبور کابلهای فایروال و موارد زیرساختی دیگر امن باشند.یک پروسه و ساختار منظم برای بررسی متناوب Logهای فایروال داشته باشید. ابزارهای بسیاری وجود دارند که به شما اجازه بررسی SYSLOG ، پیامها ودیگر موارد ناهنجار دیگر را میدهند که ممکن است نیاز به بررسی بیشتر و عمیقتر داشته‌باشند.بروی تغییرات خود ، مدیریت داشته باشید. با استفاده از مواردی مانند AAA و تهیه مستندات کافی ، همیشه از تغییراتی که یک administrator بروی دیوایس انجام میدهد Record تهیه کنید تا در زمان نیاز بتوانید متوجه شوید که چه شخصی ، چه کاری انجام داده است و دلیل آنکار چه‌بوده است ؛ همچنین درنظر داشته باشید که این مستندات و موارد در سروری خارج از دسترسی دیگر administrator ها نگهداری شوند. این موارد میتوانند پیشگیری‌ای باشند برای امنیت شبکه‌شما نسبت به مدیران‌شبکه‌ای که به هردلیلی قصد تخریب دارند.Firewall Access Rulesهمانطور که قبلا مطرح شد، یک متد خوب و مناسب برای پیاده‌سازی Ruleهای فایروال، نوشتن Policyها بروی کاغذ میباشد. پالیسی‌های روی کاغذ مشخص میکنند که پیکربندی فایروال بایستی به چه صورت باشد ، نیازها، خطرات و راهکارها چیست. برای یک فایروال ، شما میتوانید انواع مختلفی از Access Rule هارا بنویسید که در ادامه به تعدادی از آنها اشاره شده‌است: قوانینی برای کنترل‌سرویس(Rules based on Service Control) : این نوع Ruleها(قوانین) بر اساس نوع سرویسهایی که ممکن است ازطریق فایروال قابل دسترسی باشند نوشته میشوند(هم ورودی و هم خروجی) ؛ مثلا برای دسترسی به Web-server ها ، به HTTP و HTTPS اجازه عبور داده میشود و دیگر سرویسها بلاک میگردند. قوانینی برای کنترل‌آدرس(Rules based on Address Control) : این نوع Ruleها بر اساس مبدا ها و مقصدها نوشته میشوند. که عموما Deny و Permit شدن یکسری مبدا و مقصدها مشخص میشود و در فیچرهایی مانند ACLها پیاده‌سازی میگردند. قوانینی برای کنترل جهت(Rules based on Direction Control) : این Ruleها مشخص میکنند که کدامیک از انواع ترافیک، درکجاها اجازه جریان دارند. به عنوان مثال ، یک Rule ممکن است بگوید که این نوع ترافیک(مقلا HTTP) از سَمت داخل به سَمت بیرون(اینترنت) ، اجازه عبور دارد و Permit شده است.درنظر داشته باشید که Stateful packet-filtering در Stateful database اش میتواند بصورت داینامیک با یکسری پروتکلها و سرویسها ترکیب شود و به عنوان مثال مشخص کند که در ترافیک‌های بازگشتی به سمت کاربران ، فقط فلان نوع ترافیک(مثلا HTTP) اجازه عبور داشته باشد و هر ترافیکی هم نتواند بازگشت داده شود. قوانینی برای کنترل کاربر(Rules based on User Control) : این نوع Ruleها ، بر اساس شناخت از کاربر و تعریف کارهایی که میتواند انجام دهد نوشته میشوند. که بعدا در سرویسهایی مانند AAA پیاده‌سازی میگردند. قوانینی برای کنترل رفتار(Rules based on Behavior Control) : این Ruleها مشخص میکنند که مثلا از یک سرویس‌ درحال استفاده ، به چه صورتی میبایستی بهره گرفته‌شود و چه کنترلهایی باید برای آنها انجام شود. به عنوان مثال ممکن است بروی یک فایروال ، سرویسی برای Email-filtering جهت جلوگیری از Spam پیاده‌سازی شود.مرسی که تا اینجا همراه من بودیدموفق باشید.