將路由器打造成防火牆之IOS精典防火牆

公司預算少,買了路由器買不了防火牆?想用高大上×××技術,防火牆不支持?分公司小,只有一臺路由器不能安全防護?這些都不是問題,今天和明天筆者將向大家介紹思科的IOS防火牆,將IOS路由器打造成一臺防火牆。


筆者目前知道的支持IOS防火牆的設備有ISR (Integrated Service Router,集成多業務路由器)系列路由器,ASR 1K路由器,72系列路由器。在ISR G1 系列路由器(就是18/28/38打頭的路由器,例如1841,2801,3825,現在ISR G1已經停產)如果需要使用IOS防火牆功能,只需更換路由器的IOS即可;而ISR G2系列(就是19/29/39打頭的路由器)開始,如果想使用IOS防火牆功能,是需要security的license激活的,就是需要向思科購買license才能使用,如果是試用的話,可以在思科license網站申請試用的license來激活該功能。


思科IOS防火牆分爲兩種,一種是基於CBAC(Context-Based Access Control,基於內容的訪問控制)的傳統IOS防火牆,另一種是在IOS 12.4(6)T版本以後纔開始使用的Zone-based Firewall。本文講的是基於CBAC的IOS防火牆,下一篇博文將介紹Zone-based Firewall。


防火牆知識普及(可略過):

防火牆發至今,已經有很多各類了,大致可以分爲4類:

  1. 基於包過濾的防火牆:說白了就是ACL,通過ACL來控制數據包,實現訪問控制。這種基於數據包的控制,可以對http、telnet(單信道協議)等簡單的協議進行很好的管控,但對FTP、語音流量(多信道協議)等較複雜的協議並不能很好的支持。

  2. 基於狀態包過濾的防火牆:目前市面上能夠見到的防火牆都是狀態化的防火牆,所謂狀態化的防火牆,即當數據包穿越防火牆之後,防火牆會記錄該會話的狀態,當該會話的流量返回的時候會查詢狀態化表項,如果在表項中存在,就直接放行通過,不會查詢ACL,當沒有狀態會話的時候,纔會查詢ACL條目。這樣的話,我們只需放行始發的流量即可,無需理會回來的流量。並且,狀態化的防火牆對協議的支持更好,它本身能夠識別FTP、SIP、等多信道協議,並對這些協議進行狀態化監測。

  3. 代理防火牆:代理防火牆是一種應用層的防火牆,我們一般的防火牆都是工作在三、四層,防止或放行IP層、TCP、UDP等流量,而代理防火牆則是工作在七層,對控制更加深入。代理防火牆分爲好多種類型,有HTTP代理防火牆,郵件代理防火牆等。以HTTP代理防火牆爲例,在客戶端瀏覽器上需要配置HTTP代理,然後該電腦所有HTTP流量先到達防火牆,防火牆過濾後,再與真正的WEB服務器進行通信。代理防火牆可以針對更深入的內容進行過濾,例如可以訪問淘寶,不可以訪問視頻等策略。

  4. 下一代防火牆(Next Genaral Firewall):現在市場上谷鼓吹的NGFW,即不僅能夠對三四層流量進行控制,更能對七層應用層進行控制。例如可以對QQ、微信等各種應用,淘寶、百度等各類網站進行精準識別,對內網用戶進行高度匹配,最後實現誰可以訪問什麼,誰不能訪問什麼。例如,張三是DHCP獲取地址,但他一上線,防火牆就能夠識別出來,並對張三進行控制,可以訪問百度,不能訪問淘寶,可以發郵件,但不能用QQ,而無需對IP進行控制,即使張三下次DHCP拿到其他IP,策略還是一樣。


防火牆產品介紹(可略過):

防火牆大致分爲軟件防火牆和硬件防火牆兩類,一般常用的都是硬件防火牆。軟件防火牆如微軟的TMG。硬件防火牆的品牌就較多了,國外知名的有Checkpoint,Juniper,PALoalto,Cisco、fortinet(飛塔 )等,國內知識的有天融信、山石、華爲等。


下面正式進入今天的主題:Cisco IOS 防火牆


拓撲圖如下:

wKiom1V_x0KwxeatAAFC1sI6Cfk650.jpg


基本配置:

R1配置:

R1(config)#int f0/0

R1(config-if)#ip add 12.1.1.1 255.255.255.0

R1(config-if)#no shut

R1(config-if)#router rip 

R1(config-router)#ver 2

R1(config-router)#no auto

R1(config-router)#net 12.0.0.0


R2配置:

Router(config)#host R2

R2(config)#int f0/0

R2(config-if)#ip add 12.1.1.2 255.255.255.0

R2(config-if)#no shut

R2(config-if)#int f1/0

R2(config-if)#ip add 23.1.1.2 255.255.255.0

R2(config-if)#no shut

R2(config-if)#router rip 

R2(config-router)#ver 2

R2(config-router)#no auto

R2(config-router)#net 12.0.0.0

R2(config-router)#ver 23.0.0.0


R3配置:

Router(config)#host R3

R3(config)#int f1/0

R3(config-if)#ip add 23.1.1.3 255.255.255.0

R3(config-if)#no shut

R3(config-if)#router rip 

R3(config-router)#ver 2

R3(config-router)#no auto

R3(config-router)#net 23.0.0.0

R3(config)#line vty 0 4

R3(config-line)#no login


防火牆配置:

  1. 在防火牆出接口配置一條Deny any的ACL,防止由外部始發的流量訪問內部網絡(如果內網有服務器發佈到外網,需要在ACL中進行放行)

  2. 在內部網絡的流量訪問外部網絡時候配置監測,可以在內部接口入方向或外部接口出方向配置監測。推薦在外接口的出方向做inspect,這樣可以不用考慮inside區域接口的數量,都能夠監測到。

  3. 配置全局參數(可選)


配置要求:

R1能夠ping通R3,不能telnetR3。


配置前測試:

R1#ping 23.1.1.3

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 23.1.1.3, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 92/99/116 ms

R1#telnet 23.1.1.3

Trying 23.1.1.3 ... Open


R3>


R2 CBAC配置

R2(config)#ip access-list extended outside-acl

R2(config-ext-nacl)#deny ip any any

R2(config)#int f1/0

R2(config-if)#ip access-group outside-acl in

配置完上述命令,R1再次telnetR3


[Connection to 23.1.1.3 closed by foreign host]

R1#telnet 23.1.1.3

Trying 23.1.1.3 ... 

% Connection timed out; remote host not responding

 

發現無法telnet通R3,還一正處於一種卡着的狀態。其實telnet的數據包是能夠發出去的,並且已經到達了R3,但是R3回來的數據包被在R2入方向的ACL阻止了,因此導致telnet超時。

繼續配置第二步,對數據包進行檢測:

R2(config)#ip inspect name outside.inspect tcp

R2(config)#ip inspect name outside.inspect udp

R2(config-if)#int f1/0

R2(config-if)#ip inspect outside.inspect out 

再次telnet進行測試,已經可以telnet通R3了。

R1#telnet 23.1.1.3

Trying 23.1.1.3 ... Open

R3>

通過show命令進行查看 

R2#show ip inspect sessions 

Established Sessions

 Session 682C3818 (12.1.1.1:30018)=>(23.1.1.3:23) tcp SIS_OPEN

我們再來進行PING測試,發現PING不通,這是因爲沒有配置針對ICMP的檢測。

R1#ping 23.1.1.3

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 23.1.1.3, timeout is 2 seconds:

.....

Success rate is 0 percent (0/5)

配置ICMP監測:

R2(config)#ip inspect name outside.inspect icmp 

再次測試:

R1#ping 23.1.1.3

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 23.1.1.3, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 76/98/116 ms

show ip inspect查看:

R2#show ip inspect sessions 

Established Sessions

 Session 682C3818 (12.1.1.1:8)=>(23.1.1.3:0) icmp SIS_OPEN

注意:雖然配置了針對TCP和UDP的檢測,但只能單信道的一些協議生效,如果是FTP、SIP等多協議的,還需要對它們進行專門的監測。

配置如下:

R2(config)#ip inspect name outside.inspect ftp 

R2(config)#ip inspect name outside.inspect sip

這樣配置只能監控FTP默認21端口,假設FTP服務器更改端口爲2121則無法監測了。下面引入技術PAM(Port-To-ApplicationMapping),通過這個技術,爲應用定義端口號。例如我公司裏面21和2121都是FTP,配置如下:

R2(config)#ip port-map ftp port tcp 21 2121

通過show ip port map來查看已有的映射關係。


思科IOS CBAC防火牆現在已有不怎麼使用了,IOS Zone-Based Firewall更加靈活好用和專業。


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