Zone Based Firewall سیسکو چیست؟ ZBPFW چیست؟ یکی از مهمترین بخش ها در امن سازی شبکه ، پیاده سازی و اجرای فایروال می باشد. فایروال همانند یک دیوار بین شبکه داخلی و شبکه خارجی قرار می گیرد و اطلاعات داخلی شبکه را در برابر حملات خارج شبکه محافظت می کند. هر چند که فایروال تنها بخشی از سیستم امنیتی می باشد اما طراحی و پیاده سازی درست و صحیح آن جهت جلوگیری از حملات از اهمیت بسیار بالایی برخوردار است. در این مقاله می خواهیم با مباحث ، نحوی پیاده سازی و اجرای (Zone-Based Firewall (ZBPFW سیسکو آشنا شویم.
یک فایروال برای اعمال سیاست های دسترسی بین بخش های مختلف شبکه استفاده می شود. در ZBPFW هر بخش از شبکه تحت عنوان Security Zone استفاده می شود. نسخه قبلی IOS فایروال سیسکو تحت عنوان Context-Based Access Control یا CBAC نامیده می شد و اعمال Policy براساس بازرسی و استفاده از ACL بین اینترفیس ها انجام می گرفت. ZBPFW سیاست ها را براساس Cisco Common Classification Policy Language (C3PL) اعمال می کند که مشابه ساختار Modular QoS Command-Line Interface (MQC) است. و به طور کلی با استفاده از Class maps ترافیک طبقه بندی می شود سپس با Policy Map ترکیب می شود و در انتها این Policy mapها به Security Zone اعمال می شوند.
ZBPFW ازstateful inspection ، Application Inspection and Control (AIC)وDeep Packet Inspection (DPI) پشتیبانی می کند که شامل بازرسی از لایه سوم تا هفتم می باشد. Stateful inspection این قابلیت را به ما می دهد که بتوانیم Connection های فعال بین Security zone ها را ردیابی و کنترل کنیم. این قابلیت باعث می شود که اجازه ورود ترافیک برگشتی به یک Security Zone را بدهد. AIC این قابلیت را فراهم می کند که Sessionهای لایه چهارم را در حافظه سرهم کند تا بتواند اطلاعات مربوط به جریان ترافیک بین دو Host متصل بهم را بدست آورد و همچنین این قابلیت را دارد که اطلاعات مربوط به پروتکل های لایه هفتم را با استانداردها مطابقت دهد.
همانطور که قبلا اشاره شد یکی از تفاوت های اصلی بین CBAC و ZBPFW استفاده از Security Zone می باشد. این Zoneها باعث می شود شبکه به چند بخش خاص تقسیم شود. در هر سازمان بخش های از شبکه دارای اهمیت ویژه ای است و باید قبل از اجرای ZBPFW این بخش ها مشخص شوند. به طور معمولا برای فایروال سه بخش اصلی زیر را در نظر می گیرند:
بعد از اینکه Zoneها ایجاد شد باید اینترفیس ها را عضو Zone مربوطه شوند و ترافیک ورودی و خروجی هر اینترفیس توسط Policyهای مربوط به Zone کنترل شوند. برخی از نقش که به صورت پیش فرض زمانی که ZBPFW استفاده می شود وجود دارد که به شرح زیر است:
اعمال Policyها به صورت یکطرفه بین Zoneها توسط Zone pair انجام می گیرد. زمانی که به یک جریان ترافیک بین Zoneها نیاز است یک Zone Pair در جهت جریان ترافیک تنظیم می شود. اگر جریان به صورت دوطرفه نیاز باشد باید دو Zone Pair تعریف شود. برای ویژگی Stateful inspection نیاز به Zone pair دوم نیست و بصورت پیش فرض ترافیک بازگشتی اجازه ورود پیدا خواهد کرد. در تصویر زیر یک شبکه با سه Zone pair نمایش داده شده است:
خود دستگاه به عنوان یک Zone معرفی شود و از آن برای محافظت از خود دستگاه استفاده می شود و برای مباحث control and management planes استفاده می شود. این Zone تحت عنوان Self zone می باشد. این Zone شامل ترافیک هایی می باشد که مقصد آن خود دستگاه می باشد یا توسط خود دستگاه تولید می شود. همانطور که در تصویر زیر می بینید Self zone همانند سایر Zoneها می تواند به عنوان zone مبدا یا مقصد استفاده شود و همچنین به صورت یک طرفه تنظیم می شود.
تا قبل از نسخه IOS 15.0.1M ترافیک بین اینرفیس های متعلق بین یک Zone اجازه عبور داشت وکنترلی روی آن صورت نمی گرفت اما از این نسخه به بعد امکان تعریف Zone pair برای ترافیکی که مبدا و مقصد آنها یک Zone است وجود دارد. که این ویژگی باعث می شود بتوانیم Policy مورد نظر خود را برای ترافیک مربوط به یک Zone را اعمال کنیم. در تصویر زیر نمونه آن را می بینیم:
ZBPFW از Transparent Firewall پشتیبانی می کند که در آن از قابلیت Bridge برای اینترفیس ها استفاده می کند. بعد از اینکه اینترفیس ها در حالت Bridge تنظیم شدند این اینترفیس ها همانند حالت Routed Mode با قرار گرفتن اینترفیس های Bridge در Zone مورد نظر استفاده می شوند. بزرگترین محدودیت استفاده از Transparent Firewall این است که نمی توان از (Network-Based Application Recognition (NBAR استفاده کرد. در بخش بعدی به سایر مباحث و نحوی پیاده سازی Zone-Based Firewall خواهیم پرداخت
همانطور که قبلا گفته شد ZBPFW با استفاده از C3PL پیکربندی می شود. این ساختار برای بسیار از مردم آشنا است چون بسیار شبیه MQC می باشد. در ZBPFW یک Class map ایجاد می شود تا ترافیک مورد نظر توسط آن شناسایی شود. برای ترافیک لایه 3 و 4 ، اینکار به وسیله مطابقت پروتکل یا ACL انجام می شود. سپس یک Policy ایجاد و در آن اقدامی که می خواهیم نسبت به این ترافیک شناسایی شده انجام شود را مشخص می کند.
یک Class map پیش فرض وجود دارد که برای زمان های خاص مثل Drop کردن کل ترافیک غیر از یک ترافیک خاص می استفاده قرار می گیرد.در صورتی که بخواهیم پارامترهای پیش فرض که توسط Policy map و inspect type مورد استفاده قرار می گیرد را تغییر دهیم از Parameter map استفاده می کنیم و به inspect در policy map اعمال می کنیم.
ZBPFW از ویژگی (to Application Matching (PAM پشتیبانی می کند. این ویژگی زمانی مورد استفاده می شود که از پورت های غیر استاندارد برای سرویس های عمومی استفاده شود به طور مثال ، اگر پروتکل HTTP تنظیم شود به جای پورت 80 از پورت 8000 استفاده کند و به وسیله PAM می توانیم پورت 8000 را به این پروتکل Map کنیم و از این پس این پورت نیز به عنوان یک پورت نرمال HTTP برای Connectionهای مورد آنالیز قرار می گیرد. PAM با دستور زیر تعریف می شود :
Router(config)# ip port-map http port 8000
قبل از شروع به پیکربندی ZBPFW نیاز به یک سری اطلاعات داریم که شامل موارد زیر می باشد:
شناسایی ترافیک را می توان براساس پروتکل یا ACL انجام داد. برای ترافیک لایه 3 و 4 همیشه Class map از نوع inspect می باشد. زمانی که از Class map استفاده می کنیم دو نوع متد برای شناسایی ترافیک وجود دارد که به شرح زیر هستند :
در اینجا یک Class map با دستور زیر به نام class1 ایجاد شده است و ترافیکی که با ACL 150 یا پروتکل FTP مطابقت داشته باشد را شناسایی می کند. همچنین یک Class map با نام class2 تعریف شده است و ترافیکی که با ACL 151 و پروتکل HTTP مطابقت داشته باشد را شناسایی می کند.
Router(config)# access-list 150 permit any 192.168.1.0 255.255.255.0 Router(config)# access-list 151 permit 192.168.2.0 255.255.255.0 any Router(config)# class-map type inspect match-any class1 Router(config-cmap)# match access-group 150 Router(config-cmap)# match protocol ftp Router(config)# class-map type inspect match-all class2 Router(config-cmap)# match access-group 151 Router(config-cmap)# match protocol http
زمانی که از حالت inspect در Policy map استفاده می شود بهره گرفتن از Parameter map اختیاری است و شامل تنظیمات پیش فرض مربوط به Policy map می باشد که می توانیم آنها را تغییر دهیم به طور مثال تعداد Session نیمه باز ، Logging و ... از جمله این تنظیمات می باشد.
در جدول زیر برخی از این پارامترهای عمومی نمایش داده شده است:
در مثال زیر یک Parameter map با نام example-parms تعریف شده و در آن Alert فعال شده است.
Router(config)# parameter-map type inspect example-parms Router(config-profile)# alert on
یک Policy map برای مشخص کردن اقدامی است که می خواهیم نسبت به ترافیکی که توسط Class map شناسایی شده است انجام دهیم برخی از این اقدامات به شرح زیر است:
نحوی تعریف Policy map در زیر نمایش داده شده است:
در مثال زیر یک Policy map با نام Policy1 تعریف شده است:
outer(config)# policy-map type inspect policy 1
سپس اقدامی که نسبت به ترافیک شناسایی شده توسط Class1 را Drop تعیین می کنیم:
Router(config-pmap)# class type inspect class1 Router(config-pmap-c)# drop
همچنین parameter map که از قبل تعیین کرده ایم را به Class-Default که class پیش فرض است نسبت می دهیم :
Router(config-pmap)# class class-default Router(config-pmap-c)# inspect example-parms
همانطور که قبلا گفته شده در ZBPFW شبکه را Zone بندی می کنیم و اینترفیس ها را به Zoneها اختصاص می دهیم و اینکار به سادگی انجام می گیرد.
تعریف Zone :
Router(config)# zone security DMZ Router(config)# zone security internal Router(config)# zone security external
اختصاص اینترفیس به Zone :
Router(config)# interface fastethernet0/0 Router(config-if)# zone-member security internal Router(config-if)# interface fastethernet0/1 Router(config-if)# zone-member security DMZ Router(config-if)# interface fastethernet0/2 Router(config-if)# zone-member security external
تنظیم Zone pair از اهمیت ویژه برخوردار است چون جهت جریان توسط آن مشخص می شود. همانطور که قبلا گفته شد یک Zone Pair بخشی از تنظیمات ZBPFW است که به صورت یکطرفه جریان ترافیک بین Zoneها را کنترل می کند. اگر Zone Pair وجود نداشته باشد ترافیک بین zoneها جریان پیدا نخواهد کرد و تنها استثناء مربوط به ترافیک Stateful بازگشتی است.
همچنین از Zone pair برای کنترل ترافیک مربوط به خود دستگاه می توان استفاده کرد و تنظیم آن با استفاده از Self zone که به عنوان Zone مبدا و مقصد معرفی می شود انجام می گیرد (نسخه IOS 15.0.1M یا بالاتر). ترافیک بین یک Zone را نیز می توان کنترل کرد که به آن intrazone گفته می شود و با ایجاد Zone Pair که zone مبدا و قسمت آن یکسان است انجام می گیرد. نحوی تعریف Zone pair به صورت زیر است :
Router(config)# zone-pair DMZ-Internal-pair source internal destination external Router(config-sec-zone-pair)# service-policy type inspect policy1
در قسمت بعدی یک سناریو را با هم اجرا می کنیم تا این مبحث را بهتر درک کنیم.
در خیلی از سازمان ها چند سروریس وجود دارد که می خواهند از خارج از شبکه مثل اینترنت به آن دسترسی داشته باشند برخی از این سرویس بیشتر مورد استفاده قرار می گیرند مثل Web برای نمایش سایت سازمان ، DNS ، SMTP و ...
در این سناریو یک شبکه را در نظر می گیریم که به سه Zone با نام های internal ، internet و DMZ تقسیم شده است. دسترسی ها به صورت زیر می خواهد تعریف شود:
با توجه به مطالب فوق برای شبیه سازی و پیاده سازی شبکه به شبکه internal ، DMZ و internet یک روتر قرار می دهیم و آنرا به عنوان یک شبکه فرض می گیریم:
در ابتدا تنظیمات مربوط به IP و Routeها و همچنین Telnet را روی روترها فعال می کنیم :
روتر internal :
internal(config)#interface FastEthernet 0/0 internal(config-if)#ip address 192.168.1.2 255.255.255.0 internal(config)#ip route 0.0.0.0 0.0.0.0 192.168.1.1 internal(config)#line vty 0 4 internal(config-line)#password 123 internal(config-line)#login
روتر DMZ :
DMZ(config)#interface FastEthernet 0/0 DMZ(config-if)#ip address 192.168.2.2 255.255.255.0 DMZ(config)#ip route 0.0.0.0 0.0.0.0 192.168.2.1 DMZ(config)#line vty 0 4 DMZ(config-line)#password 123 DMZ(config-line)#login
روتر internet :
internal(config)#interface FastEthernet 0/0 internal(config-if)#ip address 5.5.5.2 255.255.255.0 internal(config)#ip route 0.0.0.0 0.0.0.0 5.5.5.1 internal(config)#line vty 0 4 internal(config-line)#password 123 internal(config-line)#login
روتر R1 :
R1(config)#interface FastEthernet 0/0 R1(config-if)#ip address 192.168.1.1 255.255.255.0 R1(config)#interface FastEthernet 0/1 R1(config-if)#ip address 192.168.2.1 255.255.255.0 R1(config)#interface FastEthernet 1/0 R1(config-if)#ip address 5.5.5.1 255.255.255.0 R1(config)#line vty 0 4 R1(config-line)#password 123 R1(config-line)#login
در حال حاضر کلیه این روترها با یکدیگر به صورت کامل ارتباط دارند و هیچ محدویتی وجود ندارد به طور مثال روتر internet روتر internal را می تواند ping کند.
مراحل پیاده سازی Zone Based Firewall به شرح زیر است :
در اینجا براساس پروتکل هایی که قرار است اجازه عبور داشته باشند Class map تعریف می کنیم. که در اینجا ما نیاز به 4 تا class map داریم. :
R1(config)#access-list 101 permit ip any any R1(config)#class-map type inspect match-any dmz-internet-class R1(config-cmap)#match access-group 101 R1(config)#class-map type inspect match-any internet-dmz-class R1(config-cmap)#match protocol http R1(config-cmap)#match protocol dns R1(config-cmap)#match protocol telnet R1(config)#class-map type inspect match-any internal-dmz-class R1(config-cmap)#match protocol http R1(config-cmap)#match protocol telnet R1(config)#class-map type inspect match-any internal-internet-class R1(config-cmap)#match access-group 101
نکته : برای تعریف کلاس که با همه ترافیک ها مطابقت پیدا کند از یک ACL از نوع Extended تعریف می کنیم و در آن مشخص می کنیم با همه پروتکل ها مطابقت پیدا کند سپس این ACL را به Class map ها مورد نظر اختصاص می دهیم.
حالا Policyها را ایجاد می کنیم و برای class-map هایی که ایجاد کرده ایم Action مورد نظر را مشخص می کنیم:
R1(config)#policy-map type inspect internal-internet-policy R1(config-pmap)#class type inspect internal-internet-class R1(config-pmap-c)#inspect R1(config)#policy-map type inspect internal-dmz-policy R1(config-pmap)#class type inspect internal-dmz-class R1(config-pmap-c)#inspect R1(config)#policy-map type inspect dmz-internet-policy R1(config-pmap)#class type inspect dmz-internet-class R1(config-pmap-c)#inspect R1(config)#policy-map type inspect internet-dmz-policy R1(config-pmap)#class type inspect internet-dmz-class R1(config-pmap-c)#inspect
با توجه به شبکه ما سه Zone با نام internal ، DMZ و internet نیاز داریم که آنها را تعریف می کنیم:
R1(config)#zone security internal R1(config)#zone security internet R1(config)#zone security dmz
براساس جریان ترافیک و جهت Zone pair ها را تعریف و Policy مربوطه را به آن اختصاص می دهیم:
R1(config)#zone-pair security internal-dmz source internal destination dmz R1(config-sec-zone-pair)#service-policy type inspect internal-dmz-policy R1(config)#zone-pair security internal-internet source internal destination internet R1(config-sec-zone-pair)#service-policy type inspect internal-internet-policy R1(config)#zone-pair security dmz-internet source dmz destination internet R1(config-sec-zone-pair)#service-policy type inspect dmz-internet-policy R1(config)#zone-pair security internet-dmz source internet destination dmz R1(config-sec-zone-pair)#service-policy type inspect internet-dmz-policy
نکته : برای Zone هایی که با یکدیگر در یک جهت نباید ارتباط داشته باشند مثل ارتباط از شبکه اینترنت به شبکه داخلی ، نیاز به تعریف Zone pair نیست و عدم وجود Zone pair باعث جلوگیری از عبور ترافیک بین این دو Zone می شود.
در نهایت اینترفیس ها را به Zone مربوطه اختصاص می دهیم:
R1(config)#interface FastEthernet0/0 R1(config-if)#zone-member security internal R1(config)#interface FastEthernet0/1 R1(config-if)#zone-member security dmz R1(config)#interface FastEthernet1/0 R1(config-if)#zone-member security internet
نکته : اختصاص اینترفیس ها به Zone بهتر است که در آخرین مرحله انجام شود چون اگر قبلا از تعریف موارد قبل مانند Zone pair اینکار انجام شود باعث قطع کلی ارتباط بین Zone ها می شود.کلیه تنظیمات مربوطه انجام شده و برای اطمینان از صحت عملکرد چند تست را می گیریم. بر اساس تعاریف از طریق شبکه اینترنت امکان دسترسی به شبکه داخلی وجود ندارد و همچنین به شبکه dmz از طریق پروتکل هایی DNS ، http و telnet امکان دسترسی وجود دارد. در تصویر زیر این تست ها نمایش داده شده است:
براساس تعاریف از طریق شبکه DMZ امکان دسترسی به شبکه داخلی وجود ندارد و همچنین به شبکه اینترنت دسترسی کامل وجود دارد. در تصویر زیر این تست ها نمایش داده شده است:
براساس تعاریف از طریق شبکه اینترنال امکان دسترسی کامل به شبکه اینترنت وجود دارد و به شبکه DMZ از طریق پروتکل http و telnet امکان دسترسی وجود دارد. در تصویر زیر این تست ها نمایش داده شده است:
مهندس و مدرس زیرساخت و امنیت و مدیر ارشد وب سایت توسینسو
جعفر قنبری شوهانی ، مهندس و مدرس شبکه ، آشنایی من با شبکه برمی گرده به سال 1382 که دوره NT و Novel رو گذروندم و الان بیشتر از 10 ساله سابقه اجرایی در سطح Enterprise (بانک ها ، موسسه مالی ، ادارات دولتی ، سرویس پروایدر) را دارم و در حال حاضر به عنوان مهندس شبکه در شرکت توزیع برق مشهد و به عنوان مدیر ارشد و مدرس شبکه در سایت ToSinSo مشغول به کار هستم. در اکثرا حوزه های شبکه کار کردم و تجربه دارم اما تخصص اصلیم رو در حوزه زیرساخت و امنیت اون میدونم
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود