在防火墻對單包攻擊,默認一般是沒有開啟的。單包攻擊包括掃描探測攻擊,畸形報文攻擊和特殊報文攻擊等。當黑客對目標主機進行攻擊前,一般都是使用各種掃描工具對其進行掃描探測(例如IP地址掃描、端口掃描等),來發現該機安裝的是什么操作系統,開放了哪些端口,運行了哪些服務等等。根據檢測到信息,黑客就可以有針對性的發起攻擊。
黑客的掃描行為是一種潛在的攻擊行為,雖然不會造成直接的破壞效果,但是這通常是黑客發起真正攻擊的前兆,因此管理員需要針鋒相對的采取防范措施,讓黑客碰壁而回。針對探測攻擊,一般處理方法是預設一個閥值,在一定時間內防火墻收到大量數據包后,發現其源IP地址不變,但目標IP不斷變化,因為正常的報文很少具有這種特點,就可以認為這是掃描攻擊,即檢測進入防火墻的ICMP、TCP和UDP報文,由該報文的源IP地址獲取表項的索引,如果目標IP地址和前一報文的IP不同,就將表項的總報文數量累加。當在一定時間內報文的數量達到預設的閥值,則將其記錄到日志中,同時將其該源IP加入到黑名單中。
例如在登錄到華為USG6550防火墻命令窗口,輸入“system-veiw”命令進入系統視圖,執行“firewall blacklist enable”,“firewall defend ip-sweep enable”,“firewall defend ip-sweep max-rate 1000”,“firewall defend ip-sweep balcklist-time 20”命令,則可以黑名單功能,并開啟地址掃描防御功能,當每秒接收到1000個數據包,即掃描速度的閥值為1000包/秒,就將數據包中的源IP加入黑名單,當超過20分鐘后,將其從黑名單中釋放。除了IP掃描外,黑客也會發起端口掃描探測。即向大范圍的主機的一系列TCP/UDP端口進行連接,黑客根據應答報文,可以判斷目標主機開啟了哪些端口以及與之關聯的服務信息。而處理方法是檢測進入防火墻的ICMP、TCP和UDP報文,由該報文的源IP地址來獲取表項的索引,如果目標端口和前一報文不同,就將表項的總報文數量累加。當在一定時間內報文的數量達到預設的閥值,則將其記錄到日志中,同時將其該源IP加入到黑名單中。
例如 執 行“firewall blacklist enable”,“firewall defend portscan enable”,“firewall defend port-scan max-rate 1000”,“firewall defend port-scan balcklist-time 20”命令,開啟端口掃描防御功能,當每秒接收到1000個數據包,即掃描速度的閥值為1000包/秒。就將數據包中的源IP加入黑名單,當超過20分鐘后,將其從黑名單中釋放。這里的1000為同一源地址向外發送報文的目標端口變化速率的閥值。當有攻擊者進行端口掃描時,端口掃描攻擊防范功能和動態黑名單功能即可生效。執行“display firewall blacklist item”命令,查看當前系統中的黑名單表項,其中包括已經添加的靜態黑名單表項和系統自動添加的動態黑名單表項。
除了在命令行進行配置外,也可以登錄到防火墻Web設置界面,點擊工具欄上的“策略”項,在左側點擊“安全防護”、“攻擊防范”項,在右側的“單包攻擊”面板中的“防范動作”欄中選擇處理方式,包括警告和丟棄,在“配置掃描類攻擊方法”欄中選擇“地址掃描”項,可以設置最大掃描速率和黑名單老化時間。選擇“端口掃描”項,開啟端口掃描保護功能,設置最大掃描速率和黑名單老化時間。當超過該閥值,就將其發送到黑名單中。在左側點擊“黑名單”項,在右側選擇“啟用”項激活該功能。之后可以隨時查看黑名單信息,包括黑名單類型,用戶/IP地址,剩余時間/超時時間,計入原因,加入時間等內容。點擊“新建”按鈕,可以手工添加黑名單項目,針對用戶,源地址,目的地址設定鎖定對象,設置合適的超時時間。
特殊報文攻擊是一種潛在的攻擊行為,特殊報文其實是正常的報文,例如對于超大ICMP報文攻擊來說,指的是黑客利用長度超大的ICMP報文對目標主機進行攻擊,如果目標主機對此處理不當的話,就會造成系統宕機等情況。處理方法是可以根據使其情況,在防火墻上配置允許通過的ICMP報文的最大長度。如果違規,防火墻就會將其丟棄,執行“firewall defend largeicmp enable”,“firewall defend large-icmp maxlength xxxx”命令,開啟防御超大ICMP報文攻擊功能,并設置允許通過長度為指定值的ICMP報文,如果不指定的話,默認為4000字節。
黑客為了切斷受害主機和目標網絡的連接,會采取ICMP不可達報文攻擊方式,因為不同的系統對于ICMP不可到達報文的處理是不同的,有的在處理時認為對于后繼發往目標地址的報文是不可達的,從而切斷受害主機和目標網絡的連接。即當正常用戶在訪問目標主機時,黑客對其進行了攔截,并冒充目標主機給該用戶發送ICMP不可達報文,讓該用戶主機誤以為連接失敗。處理方式是執行“firewall defend icmp-unreachable enable”命 令,啟 動 針 對ICMP不可到達報文的防范功能,對該類報文進行丟去并記錄日志。當然,這也會帶來用戶無法收到正常的不可到達ICMP報文。
由此不難看出,黑客的攻擊手法其實是很靈活的,不是一味的進行簡單粗暴的破壞活動。例如讓正常用戶無法和目標主機正常連接,這樣也達到了攻擊的目的。大家知道,利用系統自帶的“Tracert”命令,可以探測網絡連接的接口,例如從本機到目標服務器之間經過了哪些網絡設備。黑客會利用這一原理發起Tracert報文攻擊,即利用TTL為0時返回的ICMP超時報文,和達到目標地址是返回的ICMP端口不可到達報文來發現報文到達目標主機的路徑,進而窺視網絡的機構。防御方法是在防火墻上執行“firewall defend tracert enable”命令,丟棄檢測到的ICMP報文或者UDP報文以及端口不可達報文。
對于特殊報文攻擊,除了在命令行進行配置外,也可以登錄到防火墻Web設置界面,點擊工具欄上的“策略”項,在左側點擊“安全防護”、“攻擊防范”項,在右側的“單包攻擊”面板中的“配置特殊報文控制類攻擊防范”欄中選擇對應的防御項目,包括超大ICMP報文控制,ICMP不可到達報文控制,時間戳選項報文控制,路由記錄選項 IP報 文、Tracert、ICMP重定向報文控制,源站選路選項IP報文控制等,即可防御對應的攻擊方式。選擇“啟用非法訪問攻擊防范”項,可以設置非法訪問數量的閥值、統計非法訪問數量的時間間隔、非法訪問的超時時間等參數。點擊“應用”按鈕,保存配置信息。
為了防止黑客使用基于源地址欺騙的網絡攻擊行為,可以使用單播逆向路徑轉發(URPF)技術加以應對。對于一般的路由器或者防火墻來說,當其在轉發數據包時,一般都是只查看數據包的目的地址,而很少去查看其源地址。
但是,當黑客發起攻擊時,經常會使用虛假的源地址,不僅可以進行攻擊而且還可以逃避檢測。對于支持URPF的路由器或者防火墻來說,不僅可以查看數據包的目的地址,在轉發之前還會對其源地址進行檢查。其中URPF支持嚴格模式和松散模式。
對于松散模式來說,當在防火墻的某端口上開啟了URPF功能后,當在該段接口上接收到數據包后,會檢測其源地址信息,并在自身的路由表中查看與其對應的端口信息,只要該端口存在就轉發,如果該端口不存在就將其丟棄。該模式的特點是不檢查端口是否匹配,只要在路由表中在針對源地址的路由信息,既可以進行數據包的轉發。對于嚴格模式來說,當數據包達到該接口后,不僅會查看其源IP地址信息,以及其在本地路由表上是否存在明細路由,而且要查看該條路由信息是否從本接口學習到的。如果從路由表查到的和源地址對應的端口和本端口不一致的話,就將其丟棄。該模式的特點是不僅要求在路由表或者轉發表中存在相應表項,而且要求端口必須匹配。
由此看出,嚴格模式比松散模式控制的更加嚴密。URPF處理流程是如果報文的源地址在防火墻中的FIB轉發表中存在的話,對于嚴格模式來說,會反向查找報文出口,如果只有一個出口和報文的入口匹配,則檢測通過否則將被拒絕(這里的拒絕還可以進行下面的ACL表匹配)。當有多個出接口和報文的入接口相匹配時,必須使用松散型檢查。對于松散模式來說,當報文的源地址在FIB中存在,報文即可通過檢測否則將被丟棄。如果報文的源地址在FIB表中不存在,則檢查默認路由以及URPF的Allow-Default-Route參數,如果配置了默認路由,但是沒有配置Allow-Default-Route參數,只要該報文的源地址在FIB表中不存在,將拒絕轉發報文。
如果同時配置了Allow-Default-Route參數,對于嚴格模式來說,只要默認路由的出口和報文的入口一致,就可以通過檢測。如果兩者不一致將拒絕報文通過。對于松散模式來說,報文可以通過檢查順利轉發。注意,對于默認路由來說,只有在明確知道默認路由指向哪里時,并且目標都是內部網絡,才可以匹配默認路由。
上面談到當報文被拒絕后,才可以去匹配ACL列表,如果ACL列表允許其通過,該報文可以正常被轉發,如果遭到拒絕則報文被丟棄。例如在防火墻的命令行中執行“interface GigabitEthernet 0/0/1”命令,進 入GigabitEthernet 0/0/1接口視圖。執行“ip urpf strict acl xxx”命令,在該接口上以嚴格模式啟用URPF功能,這里的“xxx”為ACL表的編號。