技術原理
包過濾技術(IP Filtering or packet filtering) 的原理在於利用路由器監視並過濾網路上流入流出的IP包,拒絕傳送可疑的包。由於Internet 與Intranet 的連線多數都要使用路由器,所以Router成為內外通信的必經連線埠,Router的廠商在Router上加入IP 過濾 功能,過濾路由器也可以稱作包過濾路由器或篩選路由器(Packet FilterRouter)。防火牆常常就是這樣一個具備包過濾功能的簡單路由器,這種Firewall應該是足夠安全的,但前提是配置合理。然而一個包過濾規則是否完全嚴密及必要是很難判定的,因而在安全要求較高的場合,通常還配合使用其它的技術來加強安全性。
包過濾技術是指網路設備(路由器或防火牆)根據包過濾規則檢查所接收的每個數據包,做出允許數據包通過或丟棄數據包的決定。包過濾規則主要基於IP包頭信息設定,包括如下內容:
1、TCP/UDP的源或目的連線埠號
2、協定類型:TCP、UDP、ICMP等
3、源或目的IP位址
4、數據包的入接口和出接口
數據包中的信息如果與某一條過濾規則相匹配並且該規則允許數據包通過,則該數據包會被轉發,如果與某一條過濾規則匹配但規則拒絕數據包通過,則該數據包會被丟棄。如果沒有可匹配的規則,預設規則會決定數據包是被轉發還是被丟棄。
舉例說明:如圖所示,如果我們需要允許IP位址為192.168.0.1的電腦瀏覽網頁(建立HTTP連線),允許IP位址為192.168.0.2的電腦與Internet建立FTP連線,不允許其他電腦與Internet通信,可以在路由器設定如下過濾規則:
1、允許源IP位址為192.168.0.1、目的連線埠號為80的數據包通過(HTTP的連線埠號為80)。
2、允許源IP位址為192.168.0.1、目的連線埠號為53的數據包通過(DNS的連線埠號為53,在瀏覽網頁時通常需要進行域名解析)。
3、允許源IP位址為192.168.0.2、目的連線埠號為21的數據包通過(FTP的連線埠號為21)。
4、預設禁止所有的其他連線。
包過濾規則允許Router取捨以一個特殊服務為基礎的信息流,因為大多數服務檢測器駐留於眾所周知的TCP/UDP連線埠。例如,Telnet Service 為TCP port 23連線埠等待遠程連線,而SMTP Service為TCP Port 25連線埠等待輸入連線。如要封鎖輸入Telnet、SMTP的連線,則Router捨棄連線埠值為23、25的所有的數據包。
表9.1 一些常用網路服務和使用的連線埠
服務名稱 | 連線埠號 | 協定 | 說明 |
ftp-data | 20 | tcp | FTP數據 |
ftp | 21 | tcp | FTP控制 |
telnet | 23 | tcp | 如BBS |
smtp | 25 | tcp | 發email用 |
time | 37 | tcp | timserver |
time | 37 | udp | timserver |
domain | 53 | tcp | DNS |
domain | 53 | udp | DNS |
tftp | 69 | udp | |
gopher | 70 | tcp | gopher查詢 |
http | 80 | tcp | www |
pop3 | 110 | tcp | 收email用 |
nntp | 119 | tcp | 新聞組,usernet |
netbios-ns | 137 | tcp | NETBIOS 名稱服務 |
netbios-ns | 137 | udp | NETBIOS 名稱服務 |
netbios-dgm | 138 | udp | NETBIOS 數據報服務 |
netbios-ssn | 139 | tcp | NETBIOS Session服務 |
snmp | 161 | udp | SNMP |
snmptrap | 162 | udp | SNMP trap |
irc | 194 | tcp | IRC網路聊天服務 |
ldap | 389 | tcp | 輕型目錄服務協定 |
https | 443 | tcp | SSL加密 |
https | 443 | udp |
典型的過濾規則有以下幾種:允許特定名單內的內部主機進行Telnet輸入對話、只允許特定名單內的內部主機進行FTP輸入對話、只允許所有Telnet 輸出對話、只允許所有FTP 輸出對話、拒絕來自一些特定外部網路的所有輸入信息。
有些類型的攻擊很難用基本包頭信息加以鑑別,因為這些獨立於服務。一些Router可以用來防止這類攻擊,但過濾規則需要增加一些信息,而這些信息只有通過以下方式才能獲悉:研究Router選擇表、檢查特定的IP選項、校驗特殊的片段偏移等。這類攻擊有以下幾種:
源IP位址欺騙攻擊:入侵者從偽裝成源自一台內部主機的一個外部地點傳送一些信息包;這些信息包似乎像包含了一個內部系統的源IP位址。如果這些信息包到達Router的外部接口,則捨棄每個含有這個源IP位址的信息包,就可以挫敗這種源欺騙攻擊。
源路由攻擊:源站指定了一個信息包穿越Internet時應採取的路徑,這類攻擊企圖繞過安全措施,並使信息包沿一條意外(疏漏)的路逕到達目的地。可以通過捨棄所有包含這類源路由選項的信息包方式,來挫敗這類攻擊。
殘片攻擊:入侵者利用IP殘片特性生成一個極小的片斷並將TCP報頭信息肢解成一個分離的信息包片斷。捨棄所有協定類型為TCP、IP片斷偏移值等於1的信息包,即可挫敗殘片的攻擊。
從以上可看出定義一個完善的安全過濾規則是非常重要的。通常,過濾規則以表格的形式表示,其中包括以某種次序排列的條件和動作序列。每當收到一個包時,則按照從前至後的順序與表格中每行的條件比較,直到滿足某一行的條件,然後執行相應的動作(轉發或捨棄)。有些數據包過濾在實現時,“動作”這一項還詢問,若包被丟棄是否要通知傳送者(通過發ICMP信息),並能以管理員指定的順序進行條件比較,直至找到滿足的條件。
對流進和流出網路的數據進行過濾可以提供一種高層的保護。建議過濾規則如下:
(1)任何進入內部網路的數據包不能把網路內部的地址作為源地址。
(2)任何進入內部網路的數據包必須把網路內部的地址作為目的地址。
(3)任何離開內部網路的數據包必須把網路內部的地址作為源地址。
(4)任何離開內部網路的數據包不能把網路內部的地址作為目的地址。
(5)任何進入或離開內部網路的數據包不能把一個私有地址(private address)或在RFC1918中 127.0.0.0/8.)的地址作為源或目的地址。
(6)阻塞任意源路由包或任何設定了IP選項的包。
(7)保留、DHCP自動配置和多播地址也需要被阻塞。0.0.0.0/8 、169.254.0.0/16 、192.0.2.0/24 、224.0.0.0/4 、240.0.0.0/4。
優點
(1)一個過濾路由器能協助保護整個網路。絕大多數Internet防火牆系統只用一個包過濾路由器;
(2)過濾路由器速度快、效率高。執行包過濾所用的時間很少或幾乎不需要什麼時間,由於過濾路由器只檢查報頭相應的欄位,一般不查看數據報的內容,而且某些核心部分是由專用硬體實現的,如果通信負載適中且定義的過濾很少的話,則對路由器性能沒有多大影響;
(3)包過濾路由器對終端用戶和應用程式是透明的。當數據包過濾路由器決定讓數據包通過時,它與普通路由器沒什麼區別,甚至用戶沒有認識到它的存在,因此不需要專門的用戶培訓或在每主機上設定特別的軟體。
局限性
(1)定義包過濾器可能是一項複雜的工作。因為網管員需要詳細地了解Internet各種服務、包頭格式和他們在希望每個域查找的特定的值。如果必須支持複雜的過濾要求的,則過濾規則集可能會變得很長很複雜,並且沒有什麼工具可以用來驗證過濾規則的正確性。
(2)路由器信息包的吞吐量隨過濾器數量的增加而減少。路由器被最佳化用來從每個包中提取目的IP位址、查找一個相對簡單的路由表,而後將信息包順向運行到適當轉發接口。如果過濾可執行,路由器還必須對每個包執行所有過濾規則。這可能消耗CPU的資源,並影響一個完全飽和的系統性能。
(3)不能徹底防止地址欺騙。大多數包過濾路由器都是基於源IP位址、目的IP位址而進行過濾的,而IP位址的偽造是很容易、很普遍的。
(4)一些套用協定不適合於數據包過濾。即使是完美的數據包過濾,也會發現一些協定不很適合於經由數據包過濾安全保護。如RPC、X- Window和FTP。而且服務代理和HTTP的連結,大大削弱了基於源地址和源連線埠的過濾功能。
(5)正常的數據包過濾路由器無法執行某些安全策略。例如,數據包說它們來自什麼主機,而不是什麼用戶,因此,我們不能強行限制特殊的用戶。同樣地,數據包說它到什麼連線埠,而不是到什麼應用程式,當我們通過連線埠號對高級協定強行限制時,不希望在連線埠上有別的指定協定之外的協定,而不懷好意的知情者能夠很容易地破壞這種控制。
(6)一些包過濾路由器不提供任何日誌能力,直到闖入發生後,危險的封包才可能檢測出來。它可以阻止非法用戶進入內部網路,但也不會告訴我們究竟都有誰來過,或者誰從內部進入了外部網路。