جعفر قنبری شوهانی
مهندس و مدرس زیرساخت و امنیت و مدیر ارشد وب سایت توسینسو

Zone Based Firewall چیست؟ آموزش راه اندازی ZBPFW در سیسکو

Zone Based Firewall سیسکو چیست؟ ZBPFW  چیست؟ یکی از مهمترین بخش ها در امن سازی شبکه ، پیاده سازی و اجرای فایروال می باشد. فایروال همانند یک دیوار بین شبکه داخلی و شبکه خارجی قرار می گیرد و اطلاعات داخلی شبکه را در برابر حملات خارج شبکه محافظت می کند. هر چند که فایروال تنها بخشی از سیستم امنیتی می باشد اما طراحی و پیاده سازی درست و صحیح آن جهت جلوگیری از حملات از اهمیت بسیار بالایی برخوردار است. در این مقاله می خواهیم با مباحث ، نحوی پیاده سازی و اجرای (Zone-Based Firewall (ZBPFW سیسکو آشنا شویم.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
وب سایت توسینسو

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 متصل بهم را بدست آورد و همچنین این قابلیت را دارد که اطلاعات مربوط به پروتکل های لایه هفتم را با استانداردها مطابقت دهد.

Security Zone چیست؟

همانطور که قبلا اشاره شد یکی از تفاوت های اصلی بین CBAC و ZBPFW استفاده از Security Zone می باشد. این Zoneها باعث می شود شبکه به چند بخش خاص تقسیم شود. در هر سازمان بخش های از شبکه دارای اهمیت ویژه ای است و باید قبل از اجرای ZBPFW این بخش ها مشخص شوند. به طور معمولا برای فایروال سه بخش اصلی زیر را در نظر می گیرند:

  • Internal : شبکه داخلی سازمان
  • DMZ : محلی است برای سرورهایی که می خواهیم از طریق شبکه خارجی به آنها دسترسی داشته باشم
  • External : شبکه خارج از سازمان مثل اینترنت


وب سایت توسینسو

بعد از اینکه Zoneها ایجاد شد باید اینترفیس ها را عضو Zone مربوطه شوند و ترافیک ورودی و خروجی هر اینترفیس توسط Policyهای مربوط به Zone کنترل شوند. برخی از نقش که به صورت پیش فرض زمانی که ZBPFW استفاده می شود وجود دارد که به شرح زیر است:

  • ترافیک داخل هر Zone به صورت پیش فرض اجازه عبور دارد و کنترلی روی آن انجام نمی شود. اما از IOS 15.0.1M به بعد این امکان فراهم شده است که این ترافیک نیز کنترل شود.
  • ترافیک بین Zoneها به صورت پیش فرض اجازه عبور ندارد و تنها در صورت تنظیم Policy این امکان فراهم می شود.
  • همه اینترفیس ها نیاز نیست که عضو Zone باشند ولی ترافیک بین یک اینترفیس عضو Zone و یک اینترفیس که عضو Zone نیست اجازه عبور ندارد.

Zone Pair چیست؟

اعمال 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 را اعمال کنیم. در تصویر زیر نمونه آن را می بینیم:

وب سایت توسینسو

Transparent Firewall چیست؟

ZBPFW از Transparent Firewall پشتیبانی می کند که در آن از قابلیت Bridge برای اینترفیس ها استفاده می کند. بعد از اینکه اینترفیس ها در حالت Bridge تنظیم شدند این اینترفیس ها همانند حالت Routed Mode با قرار گرفتن اینترفیس های Bridge در Zone مورد نظر استفاده می شوند. بزرگترین محدودیت استفاده از Transparent Firewall این است که نمی توان از (Network-Based Application Recognition (NBAR استفاده کرد. در بخش بعدی به سایر مباحث و نحوی پیاده سازی Zone-Based Firewall خواهیم پرداخت

Zone-Based Layer 3/4 Policy 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 که باید بدانید

قبل از شروع به پیکربندی ZBPFW نیاز به یک سری اطلاعات داریم که شامل موارد زیر می باشد:

  • Security zone separation policy : قبل از اجرای ZBPFW باید Zoneهای مورد نیاز با جمع آوری اطلاعات و تحقیق با دقت انتخاب شوند.
  • Access rule definition : بعد از تعیین کردن Zoneها باید نقش و Policy مشخص شود و با عملکرد نرم افزاری های موجود در شبکه تناقصی نداشته باشد.
  • Dynamic application requirements definition : برخی از پروتکل به صورت دینامیک عمل می کنند و بازرسی و کنترل آنها نیز متفاوت است. باید قبل از اجرای ZBPFW وضعیت این پروتکل ها مشخص شود.
  • Management access requirements : خود دستگاه باید دارای بالاترین سطح از Security باشد چون این دستگاه است که وظیفه کنترل دسترسی در کل شبکه را دارد. باید دستگاه از لحاظ امنیت و دسترسی مدیریت شود.
وب سایت توسینسو

Class Map Configuration چیست؟

شناسایی ترافیک را می توان براساس پروتکل یا ACL انجام داد. برای ترافیک لایه 3 و 4 همیشه Class map از نوع inspect می باشد. زمانی که از Class map استفاده می کنیم دو نوع متد برای شناسایی ترافیک وجود دارد که به شرح زیر هستند :

  • Match any : برای شناسایی فقط کافیست یکی از شرایط در نظر گرفته شده را داشته باشد.
  • Match all : برای شناسایی باید همه شرایط در نظر گرفته شده را داشته باشد.

در اینجا یک 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

Parameter Map Configuration چیست؟

زمانی که از حالت 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 Configuration چیست؟

یک Policy map برای مشخص کردن اقدامی است که می خواهیم نسبت به ترافیکی که توسط Class map شناسایی شده است انجام دهیم برخی از این اقدامات به شرح زیر است:

  • Pass : باعث می شود ترافیک شناسایی شده اجازه عبور پیدا کند.
  • Drop : باعث می شود ترافیک شناسایی شده اجازه عبور پیدا نکند.
  • Inspect : برای Stateful مورد استفاده قرار می گیرد.
  • log : باعث تولید log مبنی بر شناسایی ترافیک مورد نظر می کند.

نحوی تعریف 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

Zone Configuration چیست؟

همانطور که قبلا گفته شده در 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 Configuration چیست؟

تنظیم 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

در قسمت بعدی یک سناریو را با هم اجرا می کنیم تا این مبحث را بهتر درک کنیم.

سناریوی راه اندازی Zone Based Firewall

در خیلی از سازمان ها چند سروریس وجود دارد که می خواهند از خارج از شبکه مثل اینترنت به آن دسترسی داشته باشند برخی از این سرویس بیشتر مورد استفاده قرار می گیرند مثل Web برای نمایش سایت سازمان ، DNS ، SMTP و ...

در این سناریو یک شبکه را در نظر می گیریم که به سه Zone با نام های internal ، internet و DMZ تقسیم شده است. دسترسی ها به صورت زیر می خواهد تعریف شود:

  1. کاربران internal zone به صورت کامل به اینترنت دسترسی داشته باشند به از طریق پروتکل http و telnet به محیط DMZ دسترسی داشته باشند.
  2. از محیط DMZ به internal هیچ دسترسی وجود ندارد و به internet دسترسی کامل دارد.
  3. از محیط internet به DMZ از طریق پروتکلهای http ، DNS و Telnet دسترسی دارد و به محیط internal هیچ دسترسی ندارد.

با توجه به مطالب فوق برای شبیه سازی و پیاده سازی شبکه به شبکه 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 کند.

وب سایت توسینسو

نحوی ایجاد ZBPFW در سیسکو

مراحل پیاده سازی Zone Based Firewall به شرح زیر است :

  • تعریف Class map : در این مرحله ترافیک مورد نظر شناسایی می شود.
  • تعریف Policy map : در این مرحله Action یا عملی که نسبت به ترافیک شناسایی شده توسط class map مشخص می شود.
  • تعریف Zone : در این مرحله Zone های مورد نیاز تعریف می شود.
  • تعریف Zone pair : در این مرحله ارتباط بین Zone ها را و جهت را با استفاده از Policy map مشخص می کنیم.
  • اختصاص اینترفیس ها به Zone : در اخرین مرحله اینترفیس را به Zone مربوطه اختصاص می دهیم.

آموزش تعریف Class map

در اینجا براساس پروتکل هایی که قرار است اجازه عبور داشته باشند 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 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

آموزش تعریف Security Zone

با توجه به شبکه ما سه Zone با نام internal ، DMZ و internet نیاز داریم که آنها را تعریف می کنیم:

R1(config)#zone security internal
R1(config)#zone security internet
R1(config)#zone security dmz

آموزش تعریف Zone Pair

براساس جریان ترافیک و جهت 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

در نهایت اینترفیس ها را به 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 مشغول به کار هستم. در اکثرا حوزه های شبکه کار کردم و تجربه دارم اما تخصص اصلیم رو در حوزه زیرساخت و امنیت اون میدونم

نظرات