實(shí)例講解如何建立安全防火墻
隨著網(wǎng)絡(luò)應(yīng)用的不斷發(fā)展和深入,我們對(duì)于那些溝通信息的紐帶也越來越依賴,如何保證網(wǎng)絡(luò)安全、穩(wěn)定、暢通地運(yùn)行也就成為緊迫而且重要的問題。
鑒于目前防火墻已經(jīng)成為最普遍的網(wǎng)絡(luò)安全解決方案,在這里我們就主要討論如何建立一個(gè)安全的防火墻系統(tǒng)。
防火墻是什么東西呢?它相當(dāng)于一個(gè)閥門,一個(gè)過濾器或者說國家的海關(guān)、邊防檢查站,負(fù)責(zé)審查經(jīng)過的數(shù)據(jù)和信息,根據(jù)設(shè)定的規(guī)則處理不同的情況。由此可見,建立一個(gè)安全的防火墻系統(tǒng)并不僅僅取決于購買了什么牌子的設(shè)備,更重要的是在于使用者是否了解本企業(yè)網(wǎng)絡(luò)的情況、掌握用戶的實(shí)際需求并正確地付諸實(shí)施。
目前防火墻主要有三類:建立在通用操作系統(tǒng)上的軟件防火墻、具有安全操作系統(tǒng)的軟硬件結(jié)合的防火墻和基于專用安全操作系統(tǒng)的硬件防火墻。代表產(chǎn)品有Check Point、東大阿派Neteye、Linux下的IPChains、Cisco的PIX等等。
目前的防火墻從結(jié)構(gòu)上講,可分為兩種:
1.應(yīng)用網(wǎng)關(guān)結(jié)構(gòu)
內(nèi)部網(wǎng)絡(luò)<—>代理網(wǎng)關(guān)(Proxy Gateway)<—>Internet。
2.路由器加過濾器結(jié)構(gòu)
內(nèi)部網(wǎng)絡(luò)<—>過濾器(Filter)<—>路由器(Router)<—>Internet。
總的來講,應(yīng)用網(wǎng)關(guān)結(jié)構(gòu)的防火墻系統(tǒng)在安全控制的粒度上更加細(xì)致,多數(shù)基于軟件系統(tǒng),用戶界面更加友好,管理控制較為方便;路由器加過濾器結(jié)構(gòu)的防火墻系統(tǒng)多數(shù)基于硬件或軟硬件結(jié)合,速度比較快,但是一般僅控制到第三層和第四層協(xié)議,不能細(xì)致區(qū)分各種不同業(yè)務(wù);有一部分防火墻結(jié)合了包過濾和應(yīng)用網(wǎng)關(guān)兩種功能,形成復(fù)合型防火墻。具體使用防火墻則應(yīng)該根據(jù)本企業(yè)實(shí)際情況加以選擇。
下面我就用一個(gè)實(shí)際例子講解建立安全防火墻系統(tǒng)的過程。
所有的內(nèi)部網(wǎng)絡(luò)用戶通過兩個(gè)路由器連接防火墻,防火墻作為本網(wǎng)絡(luò)的唯一出口連接到Internet。內(nèi)部網(wǎng)絡(luò)有兩個(gè)網(wǎng)段:192.168.1.0 /255.255.255.0和192.168.2.0 /255.255.255.0。
在本例中,我使用的是基于Linux 的軟件防火墻 IPChains 。它運(yùn)行在系統(tǒng)內(nèi)核,采用路由器加過濾器結(jié)構(gòu),但也可以與SQUID等軟件組成復(fù)合型應(yīng)用網(wǎng)關(guān)防火墻。IPChains在系統(tǒng)內(nèi)核層運(yùn)行,可以保證更高的速度和穩(wěn)定性,性能遠(yuǎn)高于運(yùn)行在應(yīng)用程序?qū)拥姆阑饓浖?。根?jù)我個(gè)人經(jīng)驗(yàn),一臺(tái)運(yùn)行在PII 300計(jì)算機(jī)上的雙網(wǎng)卡防火墻,其包轉(zhuǎn)發(fā)速度就可以達(dá)到45~60M/S,滿足300個(gè)用戶使用。作為防火墻的主機(jī)兩端地址分別為 192.168.233.1/255.255.255.248(內(nèi)部端口)和202.102.184.1/255.255.255.252(外部端口)。
首先,我們應(yīng)該確定用戶的需求,再根據(jù)需求進(jìn)行實(shí)現(xiàn)。
經(jīng)調(diào)研,用戶需求如下:
1、保障內(nèi)部網(wǎng)絡(luò)安全,禁止外部用戶連接到內(nèi)部網(wǎng)絡(luò)。
2、保護(hù)作為防火墻的主機(jī)安全,禁止外部用戶使用防火墻的主機(jī)Telnet、FTP等項(xiàng)基本服務(wù),同時(shí)要保證處于內(nèi)部網(wǎng)絡(luò)的管理員可以使用Telnet管理防火墻。
3、隱蔽內(nèi)部網(wǎng)絡(luò)結(jié)構(gòu),保證內(nèi)部用戶可以通過僅有的一個(gè)合法IP地址202.102.184.1連接Internet。同時(shí)要求許可內(nèi)部用戶使用包括E-Mail、WWW瀏覽、News、FTP等所有Internet上的服務(wù)。
4、要求對(duì)可以訪問Internet的用戶進(jìn)行限制,僅允許特定用戶的IP地址可以訪問外部網(wǎng)絡(luò)。
5、要求具備防止IP地址盜用功能,保證特權(quán)用戶的IP不受侵害。
6、要求具備防IP地址欺騙能力。
其次,根據(jù)用戶需求設(shè)計(jì)解決方案。
方案設(shè)計(jì)如下:
1、安裝一臺(tái)Linux服務(wù)器,配置雙網(wǎng)卡,兩端地址分別為192.168.233.1 /255.255.255.252(內(nèi)部端口ETH 0)和202.102.184.1/255.255.255.248(外部端口ETH 1)。在IPChains中去除諸如 HTTPD、Finger、DNS、DHCP、NFS、SendMail之類所有不需要的服務(wù),僅保留Telnet和FTP服務(wù),以保證系統(tǒng)運(yùn)行穩(wěn)定,提高網(wǎng)絡(luò)安全性。
2、啟動(dòng)IPChains后,為保證安全性,首先將Forward Chains的策略設(shè)置為DENY,禁止所有的未許可包轉(zhuǎn)發(fā),保障內(nèi)部網(wǎng)安全性,以滿足需求1。
eg:# ipchains-P forward DENY
3、為滿足需求2,必須禁止所有來自外部網(wǎng)段對(duì)防火墻發(fā)起的低于1024端口號(hào)的連接請(qǐng)求。在此,我做了如下設(shè)定來阻止對(duì)ETH1端口請(qǐng)求連接小于1024端口號(hào)的TCP協(xié)議的數(shù)據(jù)報(bào)(請(qǐng)求連接數(shù)據(jù)報(bào)帶有SYN標(biāo)記,IPChains中使用參數(shù)-y表示)
eg:#ipchains -A input -p tcp -d 202.102.184.1 0:1024 -y -i eth1 -j DENY
之所以不是簡(jiǎn)單的拒絕所有小于1024端口號(hào)的數(shù)據(jù)報(bào)在于,某些情況下服務(wù)器會(huì)回復(fù)一個(gè)小于1024接口的數(shù)據(jù)報(bào)。比如某些搜索引擎就可能在回復(fù)查詢中使用一個(gè)不常用的小于1024的端口號(hào)。此外,當(dāng)使用DNS查詢域名時(shí),如果服務(wù)器回復(fù)的數(shù)據(jù)超過512字節(jié),客戶機(jī)使用TCP連接從53端口獲得數(shù)據(jù)。
4、為滿足需求3,必須使用IP地址翻譯功能。來自內(nèi)部保留地址的用戶數(shù)據(jù)包在經(jīng)過防火墻時(shí)被重寫,使包看起來象防火墻自身發(fā)出的。然后防火墻重寫返回的包,使它們看起來象發(fā)往原來的申請(qǐng)者。采用這種方法,用戶就可以透明地使用因特網(wǎng)上的各種服務(wù),同時(shí)又不會(huì)泄露自身的網(wǎng)絡(luò)情況。注意,對(duì)于FTP服務(wù),需要加載FTP偽裝模塊。命令如下:
eg: # insmod ip_masq_ftp
5、為滿足需求4,可以在已經(jīng)設(shè)置為DENY的Forward Chains中添加許可用戶。因?yàn)樵S可這部分用戶使用所有的服務(wù),訪問所有的地址,所以不用再指定目標(biāo)地址和端口號(hào)。假定許可IP地址為192.168.1.22,配置命令如下:
eg: #ipchains-A forward-s 192.168.1.22 -j MASQ
同時(shí),必須啟動(dòng)系統(tǒng)的IP包轉(zhuǎn)發(fā)功能。出于安全的考慮,建議在設(shè)置了Forward Chains的策略設(shè)置為DENY,禁止所有的未許可包轉(zhuǎn)發(fā)后再開啟轉(zhuǎn)發(fā)功能。
配置命令如下:
# echo 1 > /proc/sys/net/ipv4/ip_forward
6、關(guān)于防止IP地址盜用問題,在本網(wǎng)絡(luò)拓?fù)渲校梢娝杏脩舳际峭ㄟ^兩個(gè)路由器連接到防火墻,所以只需要在路由器中建立授權(quán)IP地址到MAC地址的靜態(tài)映射表即可。如果有客戶機(jī)直接連接到防火墻主機(jī),就需要使用ARP命令在防火墻主機(jī)中建立IP地址到MAC地址的靜態(tài)映射表。
7、對(duì)于需求6,只要在進(jìn)入端口中設(shè)定IP地址確認(rèn),丟棄不可能來自端口的數(shù)據(jù)包就可以了。配置命令如下:
# ipchains -A input -i eth1 -s 192.168.0.0/255.255.0.0 -j DENY
至此,就算基本建立起來一個(gè)較為安全的防火墻了,再針對(duì)運(yùn)行中出現(xiàn)的問題進(jìn)行修改,調(diào)試無誤后就可以用ipchains-save命令將配置保存起來。需要再次使用時(shí),用命令 ipchains-restore即可。
其他的包過濾防火墻與IPChains的運(yùn)行原理都相差不遠(yuǎn),配置命令也大同小異。市面上出售的防火墻雖然可以預(yù)置一些基本的內(nèi)容,但由于最終用戶要求和環(huán)境千差萬別,免不了要自己動(dòng)手配置。
從上面的例子我們可以看出,建立一個(gè)安全的防火墻關(guān)鍵在于對(duì)實(shí)際情況的了解,對(duì)用戶需求的掌握和對(duì)工具的熟練運(yùn)用與正確實(shí)施上,這是真正的重點(diǎn)
實(shí)例講解如何建立安全防火墻相關(guān)文章:
2.Web應(yīng)用防火墻基礎(chǔ)知識(shí)
5.防火墻的分類與優(yōu)缺點(diǎn)知識(shí)