一般而言,防火墻的兩個(gè)網(wǎng)絡(luò)接口應(yīng)分屬兩個(gè)不同的網(wǎng)絡(luò),根據(jù)系統(tǒng)管理員定義的訪問規(guī)則在兩個(gè)接口之間轉(zhuǎn)發(fā)數(shù)據(jù)包,或者拒絕、丟棄數(shù)據(jù)包。實(shí)際上,防火墻不單單是訪問控制的功能,而且還充當(dāng)了路由器的角色。當(dāng)然,這并非有什么不妥當(dāng)?shù)牡胤剑钱?dāng)你企圖把你配置好的linux防火墻放入運(yùn)行網(wǎng)絡(luò),來保護(hù)現(xiàn)有系統(tǒng)安全的時(shí)候,你不得不重新考慮和更改你的網(wǎng)絡(luò)架構(gòu)。另外一個(gè)可能的麻煩是,當(dāng)防火墻發(fā)生意外時(shí),如果沒有防火墻的硬件備份的話,那么你將面臨巨大的心理壓力,因?yàn)榉阑饓Φ墓收?整個(gè)網(wǎng)絡(luò)癱瘓了。假如你把防火墻配置成透明模式(可稱為偽網(wǎng)橋),就無需更改網(wǎng)絡(luò)架構(gòu),即使是防火墻不能工作了,要做的僅僅是拔出網(wǎng)線,把網(wǎng)線直接插在路由器的內(nèi)部接口就可以讓網(wǎng)絡(luò)正常工作,然后你就有時(shí)間慢慢恢復(fù)發(fā)生故障的防火墻。
好了,既然透明防火墻有那么多方便,我們趕快動(dòng)手來配置吧!準(zhǔn)備一臺(tái)pc機(jī),兩塊網(wǎng)卡(建議用3com網(wǎng)卡),網(wǎng)線若干,redhat linux 9安裝盤一套。打開機(jī)箱,把兩塊網(wǎng)卡插入計(jì)算機(jī)的pci插槽,用網(wǎng)線把計(jì)算機(jī)分別與網(wǎng)關(guān)和交換機(jī)相連(如前頁圖“正常狀態(tài)”那樣);蓋上計(jì)算機(jī)的蓋子,插上電源,開機(jī)。在光驅(qū)里放上Linux 9安裝光盤,由光盤引導(dǎo)計(jì)算機(jī),從而安裝Linux 系統(tǒng)。選擇定制安裝,不要保守,多花一點(diǎn)時(shí)間體驗(yàn)一下圖形界面的安裝樂趣,取消防火墻(no firewall),在安裝快結(jié)束時(shí)選擇以文本方式登錄系統(tǒng),完成安裝。
透明防火墻功能配置:
1、 設(shè)置網(wǎng)絡(luò)地址
修改文件 /etc/sysconfig/network-scripts/ifcfg-eth0 和 /etc/sysconfig/network-scripts/ifcfg-eth1,使其具有相同的ip地址,相同的子網(wǎng)掩碼。
用vi 來編輯如下,保存文件,運(yùn)行命令 service network restart 使修改生效。
|
這里需要注意兩個(gè)地方,第一個(gè)是要區(qū)分清楚那一個(gè)網(wǎng)卡是eth0,那一個(gè)是 eth1.這個(gè)問題十分關(guān)鍵,如果搞混了就會(huì)導(dǎo)致防火墻不能連通網(wǎng)絡(luò)。至于怎樣區(qū)分eth0和 eth1,我將在文章的末尾作簡單的描述。在這里假定與路由器相連的網(wǎng)卡是eth0.
2、設(shè)置默認(rèn)路由
在文件 /etc/sysconfig/network-scripts/ifcfg-eth0 中加入一行 gateway=192.168.1.1 保存后運(yùn)行命令 service network restart ,修改生效。找一個(gè)開放ICMP協(xié)議的公網(wǎng)IP,用命令ping 202.108.36.196 (www.163.com 的主機(jī))檢測跟外網(wǎng)的連通狀況,如果正常,表明Linux防火墻主機(jī)跟外網(wǎng)配置正確。再用命令ping 192.168.1.18 檢測防火墻主機(jī)與內(nèi)網(wǎng)主機(jī)的連通狀況,如果正常則進(jìn)行下一步操作。
3、 啟用網(wǎng)絡(luò)轉(zhuǎn)發(fā)和proxy_arp
這是透明防火墻的核心部分,我把它們寫進(jìn)文件/etc/rc.d/rc.local。用vi /etc/rc.d/rc.local 插入如下內(nèi)容。在做這一步的時(shí)候,我曾
|
經(jīng)花費(fèi)較多的時(shí)間,因?yàn)槲易鰠⒖嫉哪潜緯锏倪@一步?jīng)]有參數(shù) “–w” ,后來單獨(dú)運(yùn)行 sysctl net.ipv4.conf.eth0.proxy_arp=1 才發(fā)現(xiàn)red hat Linux 9 沒有參數(shù)“-w”不能運(yùn)行。
4、指定路由
由于兩塊網(wǎng)卡(eth0,eth1)使用同樣的ip ,如果不專門指定轉(zhuǎn)發(fā)路徑,一定會(huì)導(dǎo)致路由混亂,從而使防火墻以內(nèi)的計(jì)算機(jī)沒法訪問 Internet 。還是用命令 vi 修改文件 /etc/rc.d/rc.local ,插入如下幾行。保存文件,重新啟動(dòng)計(jì)算機(jī)/
|
Linux防火墻,如果不出意外,就可以從192.168.1.18 這臺(tái)主機(jī)訪問Internet,當(dāng)然內(nèi)網(wǎng)的任何機(jī)器都是可以訪問Internet 的。在這里對(duì)定義的路由(Define route)作些說明:/sbin/ip route del 192.168.1.0/24 dev eth0 表明所有到子網(wǎng)192.168.1.0/24的數(shù)據(jù)包都不從網(wǎng)卡eth0轉(zhuǎn)發(fā)而從 eth1轉(zhuǎn)發(fā),即命令 /sbin/ip route add 192.168.1.0/24 dev eth1;/sbin/ip route add 192.168.1.1 dev eth0 表明所有到192.168.1.1的數(shù)據(jù)包都由eth0轉(zhuǎn)發(fā),這其實(shí)可以理解為兩個(gè)網(wǎng)卡數(shù)據(jù)轉(zhuǎn)發(fā)的分工—到192.168.1.1 的數(shù)據(jù)包由eth0負(fù)責(zé),其余的由eth1負(fù)責(zé)。到這一步,恭喜你!已經(jīng)成功了一大半,如果安裝Linux的時(shí)候,選擇的防火墻規(guī)則為中等級(jí)別,那么這個(gè)防火墻已經(jīng)配置成功了。相信大家跟我一樣,且肯就此罷休。
定制防火墻策略
都是2.4.20的內(nèi)核版本,當(dāng)然要用netfilter/iptables。由于安裝Linux系統(tǒng)的時(shí)候,選擇了“無防火墻”這個(gè)選項(xiàng),那么在/etc/sysconfig 下將沒有iptables這個(gè)文件存在。還是讓我們隨心所欲的來定制防火墻訪問策略吧。
在目錄 /etc/rc.d 下創(chuàng)建腳本文件 myfirewall.sh,用命令 touch /etc/rc.d/myfirewall.sh并給文件執(zhí)行權(quán)限 chmod 711 myfirewall。然后用 vi 編輯這個(gè)文件。我寫的這個(gè)
|
規(guī)則只開放了較少的允許訪問的策略(可以ping ,收發(fā)郵件,瀏覽網(wǎng)頁,ssh,https,telnet,ftp,其它的訪問則全部丟棄)。$IPT –A OUTPUT ACCEPT 沒有設(shè)置成DROP的原因是由于大部分網(wǎng)絡(luò)服務(wù)所使用的協(xié)議是tcp協(xié)議,眾所周知,tcp協(xié)議是面向連接的,如果設(shè)置 $IPT –A OUTPUT DROP, 那么任何協(xié)議為tcp的連接就要寫兩條了。況且防火墻對(duì)外的訪問總是允許的,因此這樣做是為了簡化規(guī)則。
修改完成后保存,然后在當(dāng)前目錄運(yùn)行命令 ./myfirewall.sh,在上述腳本沒有書寫錯(cuò)誤的情況下,規(guī)則生效,但它僅僅在內(nèi)存里,用命令 service iptables save 將自動(dòng)生成文件 /etc/sysconfig/iptables,前面設(shè)定的訪問策略就被保存到硬盤,系統(tǒng)重啟時(shí),系統(tǒng)將自動(dòng)地從文件 /etc/sysconfig/iptables 獲得定制的訪問策略。
到這里,一個(gè)透明的linux 防火墻就架設(shè)好了。更改計(jì)算機(jī)的BIOS設(shè)置,使它可以在沒有鍵盤的情況下啟動(dòng)系統(tǒng)。啟用ftp,以便可以在需要時(shí)可以向防火墻主機(jī)拷貝文件。把鍵盤和顯示器拿掉,剩下的操作只是摁一下電源開關(guān)。
防火墻的管理
可能有時(shí)候我們需要更改防火墻的某些規(guī)則,或者做些別的管理,既然我們是系統(tǒng)管理員,再插上鍵盤和接上顯示器坐在防火墻面前可能會(huì)被人恥笑,因此這些管理工作當(dāng)然通過網(wǎng)絡(luò)來進(jìn)行。Ssh和webmin是我的偏好,ssh的協(xié)議端口是22,webmin的默認(rèn)協(xié)議端口是10000。其中ssh是linux系統(tǒng)的默認(rèn)服務(wù) ,只要安裝客戶端就可以(windows下的程序securecrt 是個(gè)不錯(cuò)的選擇,據(jù)說ssh連接速度沒有vnc 快)對(duì)防火墻進(jìn)行所有的管理(和直接操作防火墻主機(jī)一樣);webmin是基于web的圖形界面管理方式,非常的方便和直觀,盡管它不能象ssh那樣對(duì)系統(tǒng)進(jìn)行完全的管理,但是對(duì)于我們的工作需求還是可以滿足,建議在防火墻系統(tǒng)安裝webmin服務(wù)器程序。Ssh與webmin兩者結(jié)合使用,可以幫助我們較快較深入地掌握Linux。
Ssh客戶端安裝較為簡單,而webmin不需要安裝客戶端。這里介紹webmin 服務(wù)器的安裝:把webmin-1.110. tar.gz 下載到另外一臺(tái)windows的硬盤里,然后用ftp把它復(fù)制到防火墻主機(jī)的ftp目錄(如果你是linux高手,并不需要如此,只須以ssh方式登錄防火墻,用get/wget指令取得該文件),解開文件webmin-1.110.tar.gz tar –zxvf webmin-1.110.gz.tzr cd webmin-1.110 安裝webmin ./setup.sh ,一路回車,創(chuàng)建一個(gè)webmin管理賬戶,安裝完畢;在任何一臺(tái)運(yùn)行瀏覽器的地址欄輸入防火墻的ip加上端口號(hào)10000就可以管理防火墻(http://192.168.1.254:10000)。以這種方式管理linux 網(wǎng)絡(luò)的防火墻十分直觀,并且選項(xiàng)十分詳盡,就算不懂iptable語法的人也能容易的配置防火墻的訪問規(guī)則。這里有一個(gè)技巧,假如你更改了某條訪問規(guī)則導(dǎo)致網(wǎng)絡(luò)不能向外訪問,不要慌,到防火墻跟前重啟一下系統(tǒng)即可。萬一更改規(guī)則發(fā)生不測并且規(guī)則已經(jīng)寫入硬盤,那么請(qǐng)你直接刪除文件 /etc/sysconfig/iptables,然后再運(yùn)行腳本 sh /etc/rc.d/myfirewall 再次重寫文件/etc/sysconfig/iptables service iptables save 。有的系統(tǒng)管理員傾向于直接編輯/etc/sysconfig/iptables 文件,但是這需要更多的耐心和勇氣。如果你是新手,建議你跟我一樣,先寫腳本,再生成iptables。
特別關(guān)注:
最好把除路由器而外的整個(gè)網(wǎng)絡(luò)放在防火墻的保護(hù)之中。如果象那樣有同一網(wǎng)段的主機(jī)放在防火墻的前面,將導(dǎo)致嚴(yán)重的網(wǎng)絡(luò)故障。實(shí)踐表明,這臺(tái)windows主機(jī)的ip地址丟失了(網(wǎng)絡(luò)屬性的ip值還在,但用命令 ipconfig /all 則是 0.0.0.0),重啟windows后提示ip地址沖突,更換同一網(wǎng)段內(nèi)的任何一個(gè)未用的ip地址還是提示沖突。搞的我的兩臺(tái)郵件服務(wù)器和兩臺(tái)web服務(wù)器停火,我還以為是中了邪門的病毒,直到后來我把tcp/ip協(xié)議卸載再安裝才解決問題。經(jīng)分析,是防火墻的路由導(dǎo)致這樣的故障。強(qiáng)烈建議把所有的主機(jī)放在防火墻的保護(hù)之下,以減少網(wǎng)絡(luò)的復(fù)雜程度。另外,我們應(yīng)該養(yǎng)成這樣一種習(xí)慣—在系統(tǒng)正常的情況下,如果更改了配置,請(qǐng)一定要用筆記錄所作的更改,以便在改出問題時(shí)我們能夠快速準(zhǔn)確的恢復(fù),這種習(xí)慣更可運(yùn)用到所有的IT管理工作,它是我的不傳之密。