應用原理 在Linux系統裡,如果網絡上的某台機器連接到了Internet上,那麼可以配置網絡上的其它系統通過這個連接訪問Internet。使用這種方式,僅僅通過一個IP地址,幾個不同的系統就可以同時連接到Internet上。這種方法稱為IP偽裝。 在Linux上的IP偽裝是用ipchains防火牆工具實現的。實際上,配置防火牆也就是配置IP偽裝。目前的IP偽裝和ipchains防火牆一樣,支持所有通用的網絡服務,如Web浏覽、telnet、ping和gopher。 在Linux系統上實現的IP偽裝,具有Internet地址的那台機器同時也作為局域網上的防火牆和網關。本地的機器使用防火牆的Internet地址連接到Internet上。實現了IP偽裝的防火牆有時也被稱為MASQ gates。使用IP偽裝,連接到Internet的系統(防火牆)可監聽到來自本地網絡上主機的Internet請求。接到請求後,它把發出請求的本地主機上的IP地址替換為防火牆Internet上的IP地址,然後將這些請求發送到Internet上,就如同自己的請求一樣。來自Internet上的響應會送到防火牆系統上。防火牆所接收到的響應是通過自己的Internet地址來定位的。防火牆接著判斷該響應對應於本地系統上的哪一個請求,然後它刪除該響應的IP地址並通過本地網將其發送給本地主機。對本地機器來說,連接是透明的,就如同直接連接到Internet上一樣。 防火牆的實現 1. 硬件配置 一台舊的AST 486DX/66的計算機,有8M內存和500M的硬盤,裝有兩塊網卡,分別接到內部局域網和主干網,同時主干網通過一個路由器連到中國地震局和Internet。 2.安裝Linux系統 先對Linux系統來一次的安裝(我使用的版本是Redhat 6.0,所有實例都基於該版本)。因為所裝的組件越少,系統的後門、安全漏洞就越少,所以只裝一個最小的系統就夠了。選擇一個穩定的內核,本例使用Linux 2.2.5-15 kernel。 Linux內核包括對防火牆的支持,其中實現防火牆的工具稱為ipchains。我們可以利用這個工具實現IP偽裝和代理。在使用ipchains之前,需要將它編譯成為內核的一部分。Redhat 6.0已經實現了這一部分。 3.配置兩塊網卡 由於AST 486DX/66機器中只有EISA、ISA擴展槽,因此專門到市場上購得兩塊3C509(10M)以太網卡。通過該網卡的配置軟件(3c5x9cfg.exe)進行中斷號和I/O地址的設置。注意不要與機器內已占用地址發生沖突。 4. 配置網絡地址 我們將eth0的IP地址配置為210.72.114.141(連接主干網的有效IP地址),eth1的IP地址配置為10.3.15.2(連接內部網的IP地址),如圖1所示。 [[The No.1 Picture.]] 圖1 配置網絡地址 為了能在啟動時進行網絡配置,我在/etc/sysconfig/network-scripts 目錄中加入了ifcfg-eth0和ifcfg-eth1兩個文件(具體內容略)。這兩個文件在啟動時由系統讀取,配置網絡和路由表。 5. 測試 用ifconfig 和route對系統進行測試,具體測試過程略。 安裝IP MASQ gates 要實現IP偽裝,需要用ipchains來指定轉發規則。在開始之前,要打開內核的IP forwarding,使系統能夠轉發所有要發出的數據,再配好路由表,保證內部網和外部網之間暢通無阻了,在我們控制任意之下才能任意訪問。 實現方法:在/etc/rc.d/目錄下創建一個script,叫作ipchains.rules(執行#chmod u+x ipchains.rules確保為可執行文件,具體內容略)。然後加一行/etc/rc.d/ipchains.rules到/etc/rc.d/rc.local中,以確保每次機器重新啟動後即運行所設定的各項防火牆規則。這樣基於ipchains和IP masquerading的包過濾防火牆就建立起來了。 安全事項 上面的設置啟動了一個基本的防火牆系統,禁止IP欺騙、廣播包,但建立一個完整的防火牆系統,仍然要注意下面四點。 1.設置/etc/inetd.conf,禁止所有不需要的服務,像所有的R命令、finger、talk等。一般而言,僅保留FTP、telnet服務,便於內部維護用途。同時設置/etc/hosts.allow和/etc/hosts.deny,僅允許內部某些管理用戶可以telnet/ftp到該防火牆。當然,更安全的辦法是禁止所有的inetd服務。例如對於ftp、telnet,我們可以安裝SSH,用SSH/scp代替telnet和ftp。 2.啟用影子口令(shadow passWord),使遠程用戶獲得根密碼更為困難。 3.運行ntsysv檢查,看是否啟動了不需要的後台程序。 4.創建盡可能少的用戶賬號,不斷升級有安全漏洞的軟件包。 應用體會 我局利用Redhat 6.0版的Linux操作系統,在AST 486計算機上建立起來的包過濾防火牆系統,有效地利用了硬件資源,使得建立在Windows NT Server 4.0系統上的省局內部局域網系統平滑地接入到江西省地震信息網絡平台上。在用戶上網不受影響的前提下,有效地保護了內部網絡系統的安全。同時,還發揮了衛星通信信道的作用,為地震信息的快速傳遞起了很好的作用。 目前,不少單位和家庭都有淘汰下來的486或586(奔騰一代)計算機。雖然這些計算機已經不適合日益復雜的桌面應用,但是通過安裝Linux系統卻能搭建一個功能不錯的防火牆,足以負擔2M以下的Internet接入。如果系統硬件資源允許的話,還可以通過配置透明代理服務來實現Internet緩沖功能,從而節省Internet帶寬資源,提高上網效率。