配置防火墻安全策略之前,在《防火墻基礎——安全區域、安全策略》一文的基礎上,還需要對狀態檢測和會話進行了解。
目前的防火墻多是以狀態檢測技術為基礎的,而狀態檢測技術是包過濾技術的改進(兩者在《包過濾與狀態檢測防火墻的區別淺述》中有過簡單的比較),狀態檢測是基于連接狀態的檢測機制——將屬于通信雙方同一個連接的所有交互報文作為一個數據流看待,對這個數據流進行檢查時會考慮數據報文之間的聯系。
而這個連接狀態則是用會話來體現——如果安全策略允許,狀態檢測防火墻會為通信雙方同一個連接的第一個報文建立一個會話并暫存在會話表中,后繼報文將會直接匹配該會話而進行轉發,不再進行安全策略檢查,示意如圖1。防火墻中的這個會話表就是快速、準確配置防火墻安全策略的關鍵。
圖1
下面通過圖2所示的拓撲進行模擬實驗:
實驗場景是:在某單位的出口防火墻FW2(USG5500)上配置安全策略:僅允許內網的特定計算機Client1(10.1.1.1)可以ping通和訪問外網中的特定Web服務器(1.1.1.1)。
圖2
一、配置防火墻的接口IP地址
[FW2]interface GigabitEthe.NET 0/0/0
[FW2-GigabitEthernet0/0/0]ip address 10.1.1.254 24
[FW2-GigabitEthernet0/0/0]interface GigabitEthernet 0/0/1
[FW2-GigabitEthernet0/0/1]ip address 1.1.1.254 24
[FW2-GigabitEthernet0/0/1]quit
二、將防火墻的接口加入安全區域
將連接內網的G0/0/0口加入trust區域,連接外網的G0/0/1口則加入untrust區域。
[FW2]firewall zone trust
[FW2-zone-trust]add interface GigabitEthernet 0/0/0
[FW2-zone-trust]firewall zone untrust
[FW2-zone-untrust]add interface GigabitEthernet 0/0/1
[FW2-zone-untrust]quit
此時,因為防火墻缺省安全策略是禁止,所以內網的Client1還無法ping通和訪問外網的Web服務器。
三、將防火墻的缺省安全策略從禁止臨時修改為允許
[FW2]firewall packet-filter default permit all
注:
- 此時防火墻將放行所有數據報文,因此為安全計,建議盡量在測試環境中調試好,再轉移到生產環境中。
- 此時,內網的Client1可以ping通和訪問外網的Web服務器。
四、查看防火墻會話表
(一) 用內網的Client1訪問外網的Web服務器
操作如圖3
圖3
注:
Web服務器返回的HTTP的狀態是404,這應該是模擬器的原因,不影響實驗效果。
(二) 查看防火墻的會話表
[FW2]display firewall session table
顯示如圖4
圖4
可以看到內網的Client1訪問外網的Web服務器時,防火墻為其建立的會話。其中使用的協議:http;(Client1的)源IP地址:10.1.1.1,源端口:2050;(Web服務器的)目的IP地址:1.1.1.1,目的端口:80,IP地址和端口之間的“-->”代表的是Client1主動訪問Web服務器——數據請求方向從安全區域trust 到 untrust。這幾個就是配置Client1訪問web服務器所需安全策略的要素。
注:
- 其中源端口是隨機的,因此在配置安全策略時需要忽略。
- 因為會話表中的會話有老化時間,超時后會自動刪除,而在eNSP中訪問Web需要傳輸的數據很少所需時間很少,為了能看到會話,可以先將命令輸入后不敲回車鍵,接著用Client1訪問web,然后及時切換回防火墻命令界面按回車鍵。
- 不同協議/服務的會話默認具有不同的老化時間,可以手動調整這個時間,一般情況下默認就可以正常工作。
(三) 用內網的Client1 ping 外網的Web服務器
操作如圖5
圖5
可以看到ping發了10次測試包,均成功。
(四) 再次查看防火墻的會話表
[FW2]display firewall session table
顯示如圖6
圖6
可以看到Client1 ping Web服務器時,防火墻也為其建立了會話。其中使用的協議:icmp;(Client1的)源IP地址:10.1.1.1,源端口:256;(Web服務器的)目的IP地址:1.1.1.1,目的端口:2048,IP地址和端口之間的“-->”代表的是Client1 ping Web服務器。這幾個則是配置ping所需安全策略的要素。
注:
- ICMP工作在傳輸層以下,報頭中并沒有端口字段,因此在會話表中用ICMP報頭中的標識符字段值代表源端口,用固定的值2048代表目的端口,來標識ping的數據流。
- 其它有些協議也存在報頭中沒有端口字段的情況,處理方式和ICMP類似。
- 對于TCP連接來說首個報文的標志是SYN,因此對于TCP協議,防火墻只有收到SYN報文且配置的規則允許通過才會建立會話。由此在路徑不一致的環境中,如果防火墻沒有收到SYN報文,只收到SYN+ACK的及后繼報文將無法建立會話(使用undo firewall session link-state check命令關閉狀態檢測功能后則可以建立會話,如無必須不建議關閉)。
- UDP協議是沒有連接狀態的協議,因此只要防火墻上配置的規則允許UDP報文通過,防火墻就會建立會話。
- 對于ICMP協議,其中Ping報文,防火墻只有收到Ping回顯請求報文且配置的規則允許通過,才會建立會話(關閉狀態檢測功能后只收到Ping回顯應答報文也可以建立會話);其他類型的ICMP報文,只要防火墻上配置的規則允許通過,防火墻就會轉發報文,但不建立會話。
五、 配置防火墻的安全策略
[FW2]policy interzone trust untrust outbound
[FW2-policy-interzone-trust-untrust-outbound]policy 1
[FW2-policy-interzone-trust-untrust-outbound-1]policy source 10.1.1.1 0
[FW2-policy-interzone-trust-untrust-outbound-1]policy destination 1.1.1.1 0
[FW2-policy-interzone-trust-untrust-outbound-1]policy service service-set http i
cmp
[FW2-policy-interzone-trust-untrust-outbound-1]action permit
[FW2-policy-interzone-trust-untrust-outbound-1]quit
[FW2-policy-interzone-trust-untrust-outbound]quit
注:
- 安全區域方向從區域trust 到untrust ,源地址僅為10.1.1.1,目的僅為1.1.1.1,服務集則有http icmp分別代表了使用的協議和目的端口,動作為permit——允許。
- 與包過濾不同,不用再配置Web服務器響應Client1的數據報文方向的策略。
- 只能Client1 ping和主動訪問 Web,Web不能 ping通和主動訪問 Client1。
- 對于多通道協議如FTP,以及QQ之類的協議,僅像上面那樣配置還不行,還需要開啟ASPF功能,以后有機會專門進行實驗。
六、將防火墻的缺省安全策略修改為禁止
[FW2]firewall packet-filter default deny all
七、驗證配置
(一) 用Client1訪問Web服務器
圖7
結果如圖7,訪問成功。
(二) 用Client1 、 Web服務器相互ping
圖8
Client1 ping Web服務器,結果如圖8,可以ping通。
圖8
Web ping Client1服務器,結果如圖8,不能ping通。
綜上,安全策略配置正確。
以上輸入和描述可能有疏漏、錯誤,歡迎大家在下方評論區留言指正!
另以上文字如有幫助,望不吝轉發!