Cisco安全實戰——將你的路由器改造成防火牆

    在很多人的觀念中,路由器是路由器,防火牆是防火牆。路由器和防火牆都是可以作出口網關使用的,路由器作網關安全性差,防火牆安全性強。其實對於路由器和防火牆來說,他們可以算是一家人;同樣作爲網關,防火牆擁有路由功能,爲何路由器不能有安全功能呢?對於路由器和防火牆來說,它們都是全才,只不過各自精通的領域不一樣。路由器精通路由輔以防護,防火牆精通防護輔以路由。就跟我們網絡工程師的一樣,不能只懂網絡不懂系統,而是要精通網絡輔以系統,這纔是最佳的選擇。下面就介紹一下如何把一個普通的路由器變成防火牆來運行吧。
    懂點IOS安全的都知道,有一種傳統的路由器防火牆叫做CBAC(context-based access control),也就是以ip inspect開頭的那些命令,它提供了基於接口的流量保護。CBAC在流量過濾、流量檢查、警告和審計蛛絲馬跡、***檢測等方面表現卓越。例如CBAC使用超時值和閾值確定會話的狀態及其持續的時間.可清除不完全會話和閒置會話,用以對Dos進行檢測和防護。但是CBAC的缺點就是會對所有穿過接口的流量進行相同的審查策略,無法精確控制防火牆策略,部署起來相對困難。
    針對這種問題,一種新的IOS防火牆應運而生,那就是ZFW(Zone-base Firewall)。這種防火牆改變了老式CBAC基於接口的配置模式,而是以區域爲單位進行配置。就拿大家熟悉的防火牆來說,我們都知道分內部和外部區域,還有一個DMZ區域;ZFW跟硬件防火牆同理,也是按照這麼分的,只是你可以自己決定哪個接口需要加進什麼區域,以及每個區域的功能。自由程度很高,使用起來也很方便。下面就用一個實驗來驗證一下(本實驗需要用到7200安全IOS或者L3IOU模擬器)。
    某公司有一臺服務器,需要映射到外網讓別人去訪問。
 


其中具體需求如下:
1、只允許外網用戶ping通服務器以及通過SSH登錄服務器;
2、只允許內網用戶ping通服務器以及通過telnet登錄服務器;
3、內網用戶可以自由訪問外網;
4、服務器不能訪問外網。
第一步:
首先保證服務器和PC能夠ping通網關GW,然後在GW上做NAT,並保證內網PC可以ping通外網。這裏網關的NAT地址池爲100.1.1.2—100.1.1.5,另外服務器做靜態映射,映射的公網IP爲100.1.1.6。內網PC接口爲F0/1,外網接口爲S1/0。
GW:
access-list 1 permit any
ip nat pool cisco 100.1.1.2 100.1.1.5 netmask 255.255.255.0
ip nat inside source list 1 pool cisco overload
ip nat inside source static 172.16.1.2 100.1.1.6
ip route 0.0.0.0 0.0.0.0 Serial1/0
int f0/1
ip nat inside
int s1/0
ip nat outside
服務器開啓SSH和telnet登錄
Server:
ip domain name hujw.com
crypto key generate rsa
line vty 0 4
password cisco
login
transport input ssh telnet
第二步:
劃分區域,並將相應接口加入區域。
這裏我們劃分三個區域,分別是private、internet和dmz。private對應內部主機,dmz對應服務器,internet對應外網。然後把相應接口加入這三個區域,其中服務器接口爲F0/2。
GW:
zone security internet
zone security dmz
zone security private
int f0/1
zone-member security private
int f0/2
zone-member security dmz
int s1/0
zone-member security internet
第三步:
創建class-map,加入各區域需要用到的協議
首先是從內網訪問外網的class-map。在ZFW中,默認是拒絕所有流量的。因爲內網PC可以自由,所以可以用ACL匹配所有流量予以放行。這裏使用之前創建的access-list 1。
class-map type inspect match-any pri-to-int
match access-group 1
其次是創建內網PC訪問DMZ的策略。根據要求,只能ping以及telnet服務器,所以應該匹配icmp和telnet協議。
class-map type inspect match-any pri-to-dmz
match protocol icmp
match protocol telnet
最後是外網訪問DMZ服務器的策略。根據要求,只能ping以及ssh服務器,所以應該匹配icmp和ssh協議。
class-map type inspect match-any int-to-dmz
match protocol ssh
match protocol icmp
第四步:
創建policy-map,應用剛纔所創建的策略。
ZFW策略包括三種:pass、drop、inspect。Drop是默認行爲,inspect是對流量進行審查,返回流量通過查看路由器的session表來決定是否允許進入。PASS行爲不會跟蹤連接或者流量的session,但是隻允許單方向通過。也就是說,如果要配置PASS的話,就要在兩個方向同時配上PASS。
分別創建private-to-dmz、private-to-internet、internet-to-dmz這三個策略去調用相應的class-map。
policy-map type inspect private-to-dmz
class type inspect pri-to-dmz
  inspect
class class-default
  drop

policy-map type inspect private-to-internet
class type inspect pri-to-int
  inspect
class class-default
  drop

policy-map type inspect internet-to-dmz
class type inspect int-to-dmz
  inspect
class class-default
drop
第五步:
將策略關聯在接口上。
ZFW用的可不是普通的物理接口,它有着自己專用的接口,那就是zone-pair。在這裏,物理接口的地位不再重要,它纔是路由器真正的守衛!這裏需要填寫zone的源和目的區域名稱,並且將policy-map應用在zone-pair裏。
zone-pair security private-internet source private destination internet
service-policy type inspect private-to-internet

zone-pair security internet-dmz source internet destination dmz
service-policy type inspect internet-to-dmz

zone-pair security private-dmz source private destination dmz
service-policy type inspect private-to-dmz
第六步:
測試各個區域的功能。
測試內網PC對DMZ服務器的訪問
clip_p_w_picpath002
發現服務器可以正常ping通和telnet訪問。
測試外網PC對DMZ服務器的訪問
clip_p_w_picpath002[7]
發現可以ping和ssh登錄服務器,但是不能telnet服務器。
內網PC可以任意訪問外網。
看,一臺路由器已經變成了一臺有模有樣的防火牆了。雖然不是很專業,但是如果專業硬件防火牆對你的網絡來說是殺雞用牛刀的話,這種“業餘”的防火牆就再適合不過啦!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章