目前常用的防火墻有兩種結構:即子網過濾結構的防火墻和主機過濾的防火墻。對于這兩種結構的防火墻我們所提供的基本服務包括:終端訪問、文件傳輸、電子郵件、Usenet新聞、www(萬維網)瀏覽以及域名服務DNS。
一、子網過濾結構的防火墻
子網過濾結構的防火墻有雙路由器和單路由器等不同形式的結構,也可以使用兩個雙端口的路由器或者一個三端口的路由器。對于單路由器子網過濾結構與雙路由器子網過濾結構的防火墻工作原理是一樣的,其效果都很好,但單路由器子網過濾結構在價格上要便宜一些。我們從使用雙路由器子網過濾結構為例,因為它在概念上要簡單一些。
雙路由器結構的子網過濾結構防火墻結構如圖1所示。這種結構提供了良好的安全性(包括多層次冗余),而且已被大多數用戶采用。
1)參數網絡——將堡壘主機與內部網絡隔離開來,這樣,即使堡壘主機出現安全缺口,也不會馬上影響內部網絡;
2)外部路由器——將屏蔽連接到外部世界。如有可能,外部路由器也提供對堡壘主機、內部路由器和內部網絡的某些保護;
3)內部路由器——保護內部網絡,使之不受來自外部世界、及來自堡壘主機(當堡壘主機被侵襲后)的攻擊;
4)堡壘主機——作為屏蔽與外界的主要接觸點。除了構成防火墻本身的機器外,假定在內部網絡中的計算機(內部主機)還擔任如下角色(任意一臺內部計算機都可能擔負如下的任意一種、甚至全部的任務):
郵件服務器;
Usenet新聞服務器;
DNS域名服務器;
各種因特網服務的客戶。
每一種內部服務都可直接提供(通過包過濾)或間接提供(通過運行在堡壘主機上的代理服務器)。
提供服務的條件:
假定系統中的內部用戶是可信的,他們不會故意去試圖繞過防火墻,并且也沒有必要去監視和記錄他們的因特網活動;
在屏蔽的內部網和參數網中,使用的是被授權賦予的正確的IP地址,并且已通過恰當的路由來引導(即屏蔽被授予地址,而且被網絡服務供應商恰當地路由和通告到因特網),如果沒有這樣的授權地址,那么唯一的選擇是通過代理服務,因為不能允許具有未授權IP地址的包被發到因特網上,即使它們已被發出了,相應的回答也沒辦法返回;
假定參數網和內部網使用了不同的網絡號碼,從而可以很容易地檢測出偽造的包。
二、主機過濾結構的防火墻
主機過濾結構的防火墻,它沒有參數網絡,也沒有內部路由器,通常也沒有堡壘主機,而是由一臺路由器和一臺服務主機組成的。由一臺服務主機向內部和外部客戶提供因特網服務,路由器則用來保護內部網絡和控制對它的訪問。我們把這種結構稱之為服務主機而不是堡壘主機,是因為它通常還要擔任其它許多角色。比如,它可能是郵件服務器、Usenet新聞服務器和本站點的DNS服務器,它還可能是文件服務器、打印服務器等等,甚至它可能是本站點的唯一一臺計算機。
把主機過濾結構的防火墻與子網過濾結構的防火墻進行比較,就不難發現主機過濾結構是一種安全性能低、價格便宜的一種選擇,主機過濾結構通常被費用有限的比較小的站點采用。
服務主機也是本站點的郵件服務器、新聞服務器和域名服務器,但它不是本站點的唯一機器;
與子網過濾結構的防火墻相同,內部用戶是可信賴的,他們不會主動去試圖繞過防火墻,也沒有特別的需要去監視或記錄他們的因特網活動;
本站點中使用的是被授權賦予的合法IP地址,并且由服務提供商正確地路由和通告到因特網的其余部分。
下面我們來討論主機過濾結構的防火墻應當提供那些基本的因特網服務。
Telnet:通過包過濾可以安全、方便地提供Telnet。本例將按此方法做。在前一節里我們曾經討論過,在較大型的配置中,通過代理服務來提供Telnet,盡管有其優點,但通常來講太昂貴了,在主機過濾結構中則顯得更加笨拙。類似地,在較大配置中難于提供進入的Telnet服務,在這里還這樣做簡直等于自取滅亡,因為這將危及服務主機,實際上就是危及了整個網絡系統。因此,我們不提供外部用戶進入的Telnet服務。
FTP:與子網過濾結構一樣,如果我們的內部FTP客戶程序支持被動模式FTP,那么通過包過濾就可以安全、方便地提供FTP服務。如果想要支持禁止使用被動模式的FTP客戶程序,那么就需要在服務主機上建立FTP代理服務器。如果需要,可以支持被動模式和普通模式的FTP客戶程序,但對一個較小的站點來講就沒有必要。對較小的站點而言,最好只提供其中的某一種,而不是試圖兩樣都提供。在此例中,我們僅支持被動模式的FTP。
注意,為了使用在服務主機上的FTP代理服務器,用戶的過濾路由器必須允許這樣的TCP連接,它們源自外部系統的23號端口,目的端口是服務主機的大于1023的端口。對一個通常的堡壘主機,這不成問題,因為其它服務不使用這個端口。然而,對服務主機而言就可能不是這樣,這些端口也有可能保留做其它用途。
在任何配置中,進入的用戶FTP與進入的Telnet走的是同樣的路,在Telnet服務中我們已經決定禁止外部用戶進入的Telnet,同樣也要禁止外部用戶進入的FTP。為什么?因為在子網過濾結構中,當進入的匿名FTP到達堡壘主機時,其風險是可以承受的,然而,進入的匿名FTP到達服務主機時,這種服務所造成的危險是不可估量的,因為這里可能有機密數據和對內部網絡的安全訪問權限,所以我們也必須禁止它。
SMTP:在主機過濾結構中,可能只有一種辦法來建立SMTP服務。進入的郵件應當通過DNSMX記錄被引導到服務主機上,外出郵件應當通過服務主機發出。事實上沒有其它更合適的辦法。正如我們在上面所討論的那樣,讓進入郵件直接到達所有的內部機器是不適宜的。同樣,一旦已將進入郵件通過一個單一的點引導進來,那么要將外出郵件通過那里發出,比把郵件直接發出實際上更容易(注意不是指更安全)。
NNTP:與SMTP一樣,在主機過濾結構中也許只有一種建立NNTP的辦法,這就是用另外一臺內部機器作為Usenet新聞服務器,并且允許NNTP服務直接通向它。我們將把服務主機當作新聞服務器。然而,最好是干脆放棄新聞服務,當然,這取決于新聞服務會給機器帶來多大的負載,以及服務主機的重要程度。
HTTP:正如在前面例子中所說的那樣,HTTP可以通過包過濾直接提供,或者通過代理服務器間接地提供。然而,最有意義的還是通過帶有緩沖的代理服務器,比如CERNHTTP服務器來間接地提供HTTP服務。這樣做的理由是:由于緩沖的作用,性能也就提高了。
在此例中,假定將要通過運行在服務主機上的一個CERN代理服務器來提供HTTP服務。由于風險的原因(這種風險由于服務主機的敏感位置而進一步復雜化了),只提供本地用戶向外的服務,對外部來的客戶將關閉此項服務。
DNS:與其它大多數服務一樣,在主機過濾結構中,實際上只有一個比較合適的地方可以安放DNS服務器,即放在服務主機上。