河南 劉景云
為了防御外來威脅,很多單位都配置了思科IPS 入侵防御系統。利用IPS 的Blocking Device 功能,可以使其登錄到不同的網絡設備上,在其中寫入各種安全控制指令,對可疑的流量進行攔截。
例如,思科IPS 入侵防御系統支持思科所有類型的路由器、思科的ASA/PIX 防火墻設備、老版的防火墻模塊以及Catalyst 6500 交換機等。對于路由器來說,IPS 可以在其上寫入ACL 列表信息,利用Police 指令執行限速操作。在ASA 等設備上可以寫入Shun 規則,對于Catalyst 6500 交換機來說,可以寫入VACL 列表。
IPS 支持的登錄協議包括Telnet 和SSH,當然目標設備既然允許IPS 登錄,那么它必須擁有可用的IP,并且需要打開Telnet 或者SSH功能。如果使用SSH 的話,需要進行加密授權。
若要使用基于IPS 設備的Block 攔截功能,需要開啟防地址欺騙功能,因為外部攻擊者可能會通過偽裝內部IP 的辦法來侵入內部主機。當IPS 發現其攻擊行為后,自然會登錄到ASA 設備上寫入Shun 規則,來攔截該流量。
但是因為攻擊者使用偽裝的合法內部源地址,就會造成正常的網絡通訊中斷。因此,通過啟用防地址欺騙功能,在相應設備(例如網關等)的外部接口入方向寫入ACL 列表,拒絕源自于內部網絡的流量從外部接口進入,就可以避免上述情況的發生。
對于一些重要的服務器以及路由器等設備,為了不影響它們的正常工作,需要將其放入到排除列表中,這樣即使和這些設備相關的IP出現違規的情況,也不會遭到攔截。
對于大型的網絡來說,可能存在多個網絡入口點,而IPS 設備可以同時控制這些入口點,當黑客通過某個入口點攻擊內部網絡時,IPS 設備可以對其進行分析判斷,以獲取攻擊者的實際IP,之后登錄到所有的網絡入口點上,分別寫入對應的ACL 列表項目,并對其進行全面攔截。
當然,也可以在每個接入點上掛接一臺IPS 設備,并且將其中的某臺IPS 設備設置為Master 并激活聯動功能,這樣,當其中的任何一臺IP 設備探測到了黑客的攻擊行為,都將會通過Master 設備,讓其登錄到所有的接口點上,寫入相應的ACL 控制列表,并對黑客進行全面攔截。
對于IPS 設備來說,其內置的Signature 項目默認沒有Block 行為,需針對特定的Signature 激活Block 操作,當Block 攔截行為發生后,默認攔截時間為30 分鐘。
例如,當IPS 登錄到某個路由器上寫入ACL 列表后,當超過該時間后,就會重新登錄并清除該ACL 列表。為了實現靈活的控制,可以登錄到IPS 設備上,在管理界面工具欄上點擊“Configuration”按鈕,在左側左側選擇“Event Action Rules”項,并選擇具體的規則名稱,在右側的“General”面板中的“Block Action Durations”欄中可以對攔截時間進行修改。
當IPS 設備探測到非法的攻擊行為后,可以采取兩種方式作出響應。其一是自動進行攔截,例如,可將某個Signature 項目行為是指為“Request block host”或“Request block connection”項,這樣當攻擊行為觸發了該Signature,該Signature 就會自動進行攔截。對于前者來說,IPS 可以從數據包中提取攻擊者的源IP,通過編寫ACL 列表攔截該IP 到所有目標地址的流量。對于后者來說,則會提取攻擊包中的源和目的IP和端口信息,通過在路由器上編寫ACL 列表攔截該連接。
注意,對于路由器來說,其支持以上兩種攔截方式,對于ASA 防火墻來說,則只支持“Request block host”方式。當然,也可手動創建對應的攻擊響應控制項目來攔截該攻擊行為。
本例中使用ASA 防火墻對內外網進行隔離,內網IP 范圍為192.168.1.0/24,外網IP 范圍為69.100.1.0/24,路由器R1 位于內網,與ASA 連接的端口IP 為192.168.1.1,ASA 內部IP 為192.168.1.10。
路由器R2 位于外網,與ASA 連接的端口IP 為69.100.1.1,ASA 外 部IP 為69.100.1.10。兩臺路由器默認網關均指向ASA 防火墻,思科IPS 設備連接在外部網段,其管理口IP 為69.100.1.100,管理主機IP為69.100.1.200。此處IPS設備工作在雜合模式,通過在核心交換機上使用SPAN 技術將外網VALN 流量復制一份,發送到IPS 設備Sensor 口。
接下來就以實際的例子,來說明具體的配置方法。
當R2 試 圖Telnet 到R1上,如果其輸入的內容包括“virus”字樣,IPS 設備就以SSH 方式登錄到到ASA 防火墻上對其進行攔截。
先在ASA 設備上執行“access-list out permit tcp host 69.100.1.1 host 192.168.1.1 eq 23”命令,以允許執行上述Telnet 操作。
在ASA 上執行:

在“Do you really want to replace them?”欄 中輸入“yes”項,創建密鑰信息。執行“username user1 password mima”命令,創建用戶名和密碼。執行“enable password hello@”命令,激活ASA 的特權密碼。執行“ssh 0 0 outside”命令,激活SSH 登錄功能。執行“aaa authentication ssh console LOCAL”命令,激活本地3A 認證功能。

圖1 創建所需的Signature
登錄到IPS 設備上,在管理界面工具欄上點擊“Configuration”按鈕,在左側選擇“All Signatures”項,在右側顯示所有存在 的Signatures,點 擊“Signature Wizard”按鈕,在向導界面(如圖1 所示)的“Select Engine”列表中選擇“String TCP”項,在下一步窗口中輸入該 Signatures 的 ID(例如“60000”)、名稱(例如“Block01”),點擊“下一步”按鈕,在“Event Action”列表中選擇“Produce Alert”和“Request Block Host”項。在“Regex String”欄中輸入匹配的內容(例如“virus”),在“Service Ports”欄中輸入“23”,之后創建該Signatures。
在IPS 管理界面左下部選擇“Sensor Management”項,在左側選擇“SSH”-“Known Host RSA Keys”項,在右側點擊“Add”按鈕,在打開窗口中輸入ASA 的外部接口IP,點擊“Retrieve Host Key”按鈕,得到所需的Host Key 公鑰。
所謂Host Key,指的是當客戶端初次登錄目標設備時,目標設備會將該Host Key 公鑰信息發送給客戶,客戶將其進行哈希處理后,將得到的內容通過合適的方法,和目標設備上的公鑰的哈希值進行比對,如果兩者一致,那么客戶端就將該公鑰保存在本地。
當客戶端再次訪問目標設備時,目標設備會將公鑰再次發送給客戶,客戶通過存儲在本地的公鑰與其進行比對,如果相符則完成對該設備的認證。
客戶端將對應的賬戶名和密碼提交給目標設備,讓該設備對客戶端進行認證。當雙向認證全部通過,雙方才可以正常的進行通訊。在左側選擇“Blocking”→“Blocking Properties”項,在右側確保選擇“Enable blocking”項,激活攔截功能。選擇“Blocking”→“Device Login Profiles”項,在右側點擊“Add”按鈕,在打開窗口(如圖2 所示)中輸入該Profile 的名稱(例如“Profile1”),設置用戶名(即上述“user1”),密碼以及Enable 密碼,點擊“OK”按鈕保存配置。

圖2 創建設備登錄項目
在左側選擇“Blocking Devices”項,點擊右側的“Add”按鈕,輸入ASA 的外部接口地址,如果涉及到地址轉換的話,就需要在“Sensor’s NAT Address”欄中輸入IPS 設備可能轉換的地址,這樣當IPS 登錄到目標設備后,在編寫ACL 列表時可以放行該地址到ANY地址的流量,可以避免出錯的情況。
選擇上述Profile 項目,在“Device Type”列表中選擇“PIX/ASA”項。在“Communication”列表中選擇具體的登錄方式,這里選擇“SSH2”項。設置完成后,在R2 上執行“ssh -l user1 69.100.1.10”命令,進行登錄測試。在ASA 上執行“show ssh sessions”命令,可以看到IPS 設備已經連接上來了。在R2 上執行“telnet 192.168.1.1”命令,來登錄內網中的R1,當前登錄完成后,如果輸入“virus”字樣,連接就會被IPS 攔截。在IPS管理界面工具欄上“Configuration”按鈕,在左側選擇“Time-Based Actions”→“Host Blocks”項,在右側顯示到攔截信息。
在ASA 上執行“show shun”命令,也可以看到攔截信息。當經過設定攔截的時間后,IPS 就會重新登錄到ASA 上,將該攔截的Shun 條目清除。當然,也可以在上述窗口中點擊“Delete”按鈕,直接將其清除。
上述操作可以實現自動的Block 操作,也可以進行手動攔截。方法是在上述“Host Blocks”窗口中點擊“Add”按鈕,在打開窗口中的“Source”欄中輸入輸入R2的IP,點擊“Apply”按鈕保存,這樣就可以實現相同的攔截效果。
以上操作可以實現讓IPS 登錄到ASA 上寫入Shun條目,來實現攔截的操作。而接下來實現的是,讓IPS設備Telnet 到內網中的R1上,在其相關的連接端口上寫入ACL 列表,來實現攔截效果。
為了能讓IPS 同時登錄到ASA 和路由器設備,需要先將上述在IPS 和ASA 上的配置信息清除。
可在ASA 上執行“acccess-list out permit tcp host 69.100.1.100 host 192.168.1.1 eq 23”命令,允許IPS 設備Telnet登錄到R1 上。
在IPS 上打開配置界面,在左下角點擊“Sensor Setup”項,在左側選擇“Network”項,在右側的“Default Route”欄中輸入ASA 的外部接口,保證其網關指向ASA 的外部接口。
在R1 上執行命令:

enable password tqpass
激活Telnet 登錄功能,并設置登錄密碼和特權密碼。在IPS 管理界面中依次選 擇“Blocking →Device Login Profiles”項,在右側點擊“Add”按鈕,在打開窗口中輸入該Profile 的名稱(例如“Profile2”),設置上述登錄密碼以及Enable 密碼。
在左側選擇“Blocking Devices”項,點擊右側的“Add”按鈕,在打開窗口中的輸入R1 的IP,在“Device Login Profile”列表中選擇“Profile2”,在“Device Type”列表中選擇“Cisco Router”項,在“Response Capablities”欄中選擇“Block”項,在“Communication”列表中選擇“Telnet”項。
在左側選擇“Router Blocking Deice Interfaces”項,在右側點擊“Add”按鈕,在打開窗口中的“Blocking Interface”欄中輸入R1 的合適接口(例如“e0/0”等),在“Direction”列表中選擇“In”項,表示在入接口寫ACL 列表。
在R1 上執行“show user”命令,可以看到IPS 設備已經登錄上來了。
為了能夠得到更好的控制效果,在IPS 設備上打開上述“All Signatures”項,在右側列表的“Filter:”列表中選擇“Type”項,之后在右側選擇“Custom”項,找到上述自定義“Block01”規則,然后在其右鍵菜單上點擊“Edit Actions”項,并在編輯窗口中的“Other Actions”欄中只選擇“Request Block Connection”項。
之后在R2 上執行“telnet 192.168.1.1”命令,來登錄R1 設備。如果輸入了包含“virus”的內容的話,IPS 就會在R1 的對應接口上寫入ACL 列表,對其連接進行攔截。
最后,在R1 上執行“show access-lists”命令,就會顯示和攔截操作匹配的ACL 項目。
對于網絡安全來說,泛洪攻擊是較為常見的一種攻擊方式。而利用多設備協同機制,則可以有效防御這種攻擊方式。
例如在本例中,當R1 試圖對R2 進行泛洪攻擊,IPS設備就可以在R2 的特定接口上寫入控制規則,來輕松化解這種威脅。
在IPS 設備上打開上述“All Signatures”項,在右側列表搜索到ID 為2152 的Signature。在其屬性編輯窗口中的“Event Action”列表中選擇“Product Alert”和“Request Rate Limit”項,對泛洪攻擊進行報警和限速。
依次選擇“Event Action Settings”→“External Rate Limit Type”→“External Rate Limit Percentage”項,在限速欄中設置具體的百分比,例如這里設置為1,這樣在目標接口上的泛洪流量會被強制降低到帶寬的1%。
注意,在默認情況下,每秒鐘發送的ICMP 包數量超過60 個,即被認定為泛洪攻擊。選擇“Status”欄下的“Enabled”項,將其狀態設置為“yes”,將“Retired”的狀態設置為“no”,來激活該Signature。
在R2 上執行:

在R2 上激活Telnet 功能并且設置登錄名和密碼,然后在IPS 管理界面中依次選擇“Blocking”→“Device Login Profiles”項,之后在右側點擊“Add”按鈕,在打開窗口中輸入該Profile的名稱(例如“Profile3”),并設置上述登錄賬戶名和密碼。
在左側選擇“Blocking Devices”項,點擊右側的“Add”按鈕,然后在打開窗口中輸入R2 的IP,在“Device Login Profile”列表中選擇“Profile3”,在“Device Type”列表中選擇“Cisco Router”項,在“Response Capablities”欄中選擇“Rate Limit”項,在“Communication”列表中選擇“Telnet”項。
在左側選擇“Router Blocking Deice Interfaces”項,在右側點擊“Add”按鈕,在打開窗口中的“Blocking Interface”欄中輸入R2 的合適接口(例如“f1”等),在“Direction”列表中選擇“In”項,表示在入接口寫ACL 列表。
這樣,當R1 向R2 發送大量的ICMP 數據包進行泛洪攻擊時,IPS 就會在R2 的特定端口上寫入ACL 列表,來對其進行嚴格的限速。
最后,在R2 上執行“sh run”命令,可查看IPS 寫入的控制規則信息。而執行“show policy-map interface fa1”命令,則顯示根據限速指令丟棄的泛洪數據包信息。