安全與帶寬的危機 1999年初,某企業大廈網絡(以下簡稱B大廈)受到了帶寬和安全問題的困擾,為此,網絡中心開始醞釀網絡的升級改造。 B大廈內有研究院、集團、公司等單位。大廈內所有的計算機使用某大學(以下簡稱A大學)校園網分配的真實Internet IP,共有7個24位掩碼網段,下面又進一步劃分了不同掩碼長度的子網,計有近500台計算機,運行Windows NT、Windows 9x、Solaris、AIX、IRIX等多種操作系統。中心交換機為IBM 8274,安裝了兩個百兆交換模塊。中心服務器(Web、FTP、文件共享、光盤庫、Exchange Server、SMS、Lotus Notes Domino、NT PDC/BDC、DNS、WINS、Proxy)使用PC/Alpha平台,全部直接連至8274的百兆交換端口。4個樓層各有一個百兆交換機分別使用3Com 3800(3C16910)、Intel E550T等型號,全部為三層可管理並支持VLAN。每個樓層交換機都上行至8274的百兆端口。內部網絡運行穩定,速度基本上能夠滿足要求。 B大廈的網絡通過無線網絡設備和A大學辦公樓相連,兩端相距7km各有一台運行NetWare 3.x的無線網關機器,兩台機器各裝有一塊AT&T WaveLan無線網卡,通過樓頂的高增益天線對連,連接速率為2Mbps。辦公樓的主干網絡是由4台Digital 900EF路由器組成的FDDI雙環。其中一台900EF連接到A大學校園網作為Internet出口,另外3台各自接到不同的部門,有一台接到無線網關。 當時,B大廈內已經有員工400多人。2Mbps的Internet接入帶寬遠遠跟不上需求。從網絡結構上看,FDDI環通過10兆交換以太網端口接入A大學校園網,B大廈的主干網絡為百兆以太網,因此整個網絡的瓶頸為無線網。 為了解決帶寬問題,我們探討了多種方案,首先是敷設光纖。因為牽涉到市政等多方面的因素,敷設光纖的費用頗高,是我們無法承受的。而租用專線首先速度不能滿足要求,費用也不低,沒有必要,因此我們決定仍然使用無線網的方式,使用新的快速無線網技術對舊有設備進行升級。 另一個嚴重的問題是安全問題,此前,B大廈的網絡持續受到來自Internet的攻擊,包括MailSpam、PoD、大規模的端口掃描等,多次造成Exchange服務器宕機和Internet訪問中斷,影響了企業的日常運作。當時采用的安全措施是在FDDI環的第一台900EF上進行IP訪問限制,而900EF屬於已經過時的設備,僅支持簡單的包過濾。早已不能滿足網絡安全的需要。另一方面,B大廈的內部網對外幾乎完全沒有設防,從外部可以很容易地竊取內部網未經嚴格設置的員工機器上的信息。必須采取措施防止這類問題的發生。 經過論證,我們決定增加一台或兩台防火牆機器來抵御黑客攻擊。當時Linux 2.2系列內核剛發布不久,2.2.x中全新的IPChains代替了從BSD中移植來的ipfw,在性能和配置方面得到了各方的好評,因此我們初步決定采用Linux系統配置IPChains來作為新的包過濾防火牆。 此外,還有IP的浪費問題也引起了我們的注意,因為兩台無線網關占用了整整兩個24位掩碼網段。這是由於NetWare 3.x使用早期的RIP協議,不支持子網的進一步劃分。我們也希望通過升級來省出IP,以便適應日益增長的網絡規模的需要。
使用Linux升級無線網 當時,新一代無線局域網協議IEEE802.11b尚未發布,市場上有多種標稱速率在8Mbps至12Mbps的無線網絡產品,大多是基於專有協議。我們對其中的5種產品進行了現場測試。測試方法是兩端使用兩台筆記本電腦,都安裝Windows 98,一端安裝Server U 2.4 FTP服務器軟件,另一端使用Windows 98自帶的命令行ftp程序進行連接,多次下載20MB的文件。經測試,沒有一家的產品傳輸速率在500KBps以上。而且有些產品隨距離增加傳輸速率迅速衰減。經過比較,我們選擇了LUCent公司的WaveLan IEEE。在7km的距離上,WaveLan IEEE的FTP實測速率可達400KBps左右,約為傳統有線10兆以太網的二分之一(原因見後文"方興未艾的無線網絡技術"),隨距離增大信號衰減不明顯。而且,由於Lucent是即將出台802.11b的主要制訂者之一,WaveLan IEEE已經事實上支持了這個標准,為我們提供了可擴展性。 廠家建議的方案是使用兩個WavePointⅡAP專用無線網橋,各插一塊WaveLan IEEE PCMCIA卡,兩端通過饋線連接高增益天線對連。網橋可配置為工作在下兩層,不需要單獨的網段。因為WavePointⅡAP價格較高而WavaLan IEEE PCMCIA支持多種系統,我們開始探討使用PC機代替專用無線網關的可能性。經過調查,發現在台式機上使用ISA橋接卡轉接即可使用WavaLan IEEE PCMCIA卡。在廠商的配合下,經過實驗,我們成功地實現了用兩台Linux機器作為無線網關,並發現這種方案的效率要比使用兩台WavePointⅡAP略高。而且這樣還免去了根據計劃要在網絡中再增加Linux防火牆的麻煩,可以直接把無線網關配置為防火牆。但由於WavePointⅡAP具有管理程序可供實時查看信道情況,有助於我們的管理,且安裝也比較簡單,我們最終采用了一個WavePointⅡAP和一台Linux機器。我們選擇將無線網的Linux網關安裝在辦公樓一端,主要是基於如下考慮:訪問流量以進入方向為主,而網絡速度是有線以太網較快,這樣可以減弱啟用IPChains對網絡速度帶來的影響。事實證明,後來啟用IPChains(約30條規則)效率非常高,沒有對網絡速度產生影響。其次,是最大保護原則,這樣可以保護包括WavePointⅡAP在內的盡量多的設備。 我們采用了RedHat Linux 6.0,內核版本為2.2.5。Lucent僅以二進制可執行模塊和庫的方式提供了Linux的驅動程序,非GPL授權。當時網上已經有了由志願者開發的GPL版本,但尚處在早期測試階段,功能支持不完善,我們未予采用。由於是在台式機上安裝PCMCIA設備,我們需要配置含PCMCIA支持,而Linux 2.2.5內核中沒有包括這一部分,於是我們選擇ftp://csb.stanford.edu/pub/pcmcia/下載了最新的PCMCIA支持包,並進行編譯安裝。 在編譯之前要先把WaveLan IEEE的驅動程序放入PCMCIA 卡服務程序源代碼中,假設PCMCIA 卡服務程序源代碼目錄與WaveLan IEEE的驅動程序的打包文件出於同一目錄中,則執行如下操作。 #cd pcmcia-cs-3.0.9 #tar xzvf ../wavelan2_cs-3.10.tar.gz #make config #make all #make install 這時PCMCIA支持包已經編譯安裝完畢,需要再對無線網卡的IP參數進行配置。因為無線網卡的驅動識別和載入實在PCMCIA卡服務程序啟動之後發生的,不同於編譯到內核中或以內核模塊方式載入驅動的普通以太網卡,因此需要在PCMCIA卡服務程序的配置文件中指定網卡的IP設置。首先,編輯/etc/pcmcia/config.opts,加入如下一行。 module "wavelan2_cs" opts "network_name=wirelessrouter" 這裡的wirelessrouter是無線網的網絡代號。這裡也可以使用對等模式,參見無線網卡驅動程序的說明文件。然後,再編輯/etc/pcmcia/network.opts,設置網絡參數。 *,*,*,*) IF_PORT="" BOOTP="n" IPADDR="163.215.120.238" NETMASK="255.255.255.240" NETWORK="163.215.120.224" BROADCAST="163.215.120.255" GATEWAY="163.215.120.252" DOMAIN="router.Au.edu.cn" 這時就可以啟動PCMCIA卡服務程序了。 # /etc/rc.d/rc.pcmcia restart 此時如果聽到"嘟"一聲,說明設備已被識別。 另一端的無線網橋也需要經過簡單地配置,首先根據說明書將一台PC機的IP設為與網橋的默認IP在同一個網段,然後運行網橋的配置管理程序。對網橋的配置進行修改,將網絡代號填為與Linux配置文件中一致。這裡要注意的是,雖然WavePoint Ⅱ AP行使網橋的功能,但並不妨礙為其分配IP,否則將無法通過網絡進行管理。 隨後就是各級路由的設定,為了達到節省IP的目的,我們把163.215.120.224/27網絡分為兩個子網分別為163.215.120.224/28和163.215.120.240/16。將連接無線網關的900EF的IP地址改為163.215.120.239,將Linux以太網卡的IP改為163.215.120.238,無線網卡的IP則與另一端的IBM8274的出口端口設在一個網段。這樣便節省出了163.215.121.x和163.215.154.x這兩個網段。最後,逐一進行各級的三層以上設備的靜態路由設置,實現網絡的全線貫通。
網關/防火牆的安全策略 無線網升級完成後,為了解決網絡安全問題,我們進行了一系列的設置。 首先要確保網關本身的安全。我們采取了如下措施。 1.使用TCP Wrapper的訪問限制功能,設置僅允許一個指定的IP(由網絡管理人員使用)訪問,這是通過修改/etc/hosts.allow和/etc/hosts.deny等文件來實現的,具體方法可參見本刊2000年第44期《設置安全的Linux服務器》一文(以下簡稱《設》文)。 2.在Linux網關上停止一切不必要的服務,包括telnet和ftp,並取而代之以SSH和scp,從而實現網絡管理員和網關通訊時僅傳輸加密數據,並摒棄了口令認證的方式,使用更為先進的密鑰交換認證。這是通過修改/etc/inetd.conf文件(可參見《設》文)和安裝、配置SSH來實現的。現在SSH已經向SSH2全面轉移,可在http://www.ssh.com/products/ssh/download.Html下載。 3.為了加強網關的開機安全性,我們為BIOS設置口令,並為LILO設置口令,以防止未授權用戶使用"Linux single"進入系統單用戶模式。 4.在內、外兩個邊界路由器設置對Linux網關的直接訪問限制。具體做法是,在FDDI環的上與Linux網關直接連接的一台900EF上禁止所有指向Linux網關兩個IP(分別綁定在有線和無線兩塊網卡上)的IP包;在內部網的IBM 8274上設置禁止除源地址為網管IP以外的所有指向Linux網關IP的