如何為Solaris服務(wù)器配置款安全的防火墻
如何為Solaris服務(wù)器配置款安全的防火墻
連接網(wǎng)上的服務(wù)器系統(tǒng),不管是什么情況都要明確一點(diǎn):網(wǎng)絡(luò)是不安全的。因此,雖然創(chuàng)建一個(gè)防火墻并不能保證系統(tǒng)100%安全,但卻是絕對(duì)必要的。傳統(tǒng)意義上的防火墻技術(shù)分為三大類,“包過(guò)濾”(Packet Filtering)、“應(yīng)用代理”(Application Proxy)和“狀態(tài)檢測(cè)”(Stateful Inspection),無(wú)論一個(gè)防火墻的實(shí)現(xiàn)過(guò)程多么復(fù)雜,歸根結(jié)底都是在這三種技術(shù)的基礎(chǔ)上進(jìn)行功能擴(kuò)展的。
一、Solaris包過(guò)濾防火墻IPFilter簡(jiǎn)介
IPFilter是目前比較流行的包過(guò)濾防火墻軟件,它目前擁有多種平臺(tái)的版本,安裝配置相對(duì)比較簡(jiǎn)單??梢杂盟鼇?lái)構(gòu)建功能強(qiáng)大的軟件防火墻,下面就其的安裝以及一些典型的配置作一下說(shuō)明。IPFfilter 的作者是 Darren Reed 先生,他是一位致力于開(kāi)源軟件開(kāi)發(fā)的高級(jí)程序員,目前工作于 SUN 公司。IP Filter 軟件可以提供網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)或者防火墻服務(wù)。簡(jiǎn)單的說(shuō)就是一個(gè)軟件的防火墻,并且這個(gè)軟件是開(kāi)源免費(fèi)的。當(dāng)前的版本是4.1.15,目前支持 FreeBSD、NetBSD、Solaris、AIX 等操作系統(tǒng)平臺(tái)。IPFilter是它是一個(gè)在引導(dǎo)時(shí)配置的可加載到內(nèi)核的模塊。這使得它十分安全,因?yàn)橐巡荒苡捎脩魬?yīng)用程序篡改。我用Solaris10 來(lái)作為實(shí)驗(yàn)的平臺(tái)介紹一下IP Filter。IP Filter過(guò)濾器會(huì)執(zhí)行一系列步驟。圖1說(shuō)明處理包的步驟,以及過(guò)濾如何與 TCP/IP 協(xié)議棧集成在一起。
數(shù)據(jù)包在Solaris內(nèi)的處理順序包括下列步驟:
1. 網(wǎng)絡(luò)地址轉(zhuǎn)換 (Network Address Translation, NAT) :將專用 IP 地址轉(zhuǎn)換為不同的公共地址,或者將多個(gè)專用地址的別名指定為單個(gè)公共地址。當(dāng)組織具有現(xiàn)有的網(wǎng)絡(luò)并需要訪問(wèn) Internet 時(shí),通過(guò) NAT,該組織可解決 IP 地址用盡的問(wèn)題。
2. IP 記帳 :可以分別設(shè)置輸入規(guī)則和輸出規(guī)則,從而記錄所通過(guò)的字節(jié)數(shù)。每次與規(guī)則匹配時(shí),都會(huì)將包的字節(jié)計(jì)數(shù)添加到該規(guī)則中,并允許收集層疊統(tǒng)計(jì)信息。
3. 片段高速緩存檢查 :如果當(dāng)前流量中的下一個(gè)包是片段,而且允許前一個(gè)包通過(guò),則也將允許包片段通過(guò),從而繞過(guò)狀態(tài)表和規(guī)則檢查。
4. 包狀態(tài)檢查 :如果規(guī)則中包括 keep state,則會(huì)自動(dòng)傳遞或阻止指定會(huì)話中的所有包,具體取決于規(guī)則指明了 pass 還是 block。
5. 防火墻檢查 :可以分別設(shè)置輸入規(guī)則和輸出規(guī)則,確定是否允許包通過(guò) Solaris IP 過(guò)濾器傳入內(nèi)核的 TCP/IP 例程或者傳出到網(wǎng)絡(luò)上。
6. 組:通過(guò)分組可以按樹(shù)的形式編寫規(guī)則集。
7. 功能 :功能是指要執(zhí)行的操作??赡艿墓δ馨?block、pass、literal 和 send ICMP response。
8. 快速路由 :快速路由指示 Solaris IP 過(guò)濾器不將包傳入 UNIX IP 棧進(jìn)行路由,從而導(dǎo)致 TTL 遞減。
9. IP 驗(yàn)證 :已驗(yàn)證的包僅通過(guò)防火墻循環(huán)一次來(lái)防止雙重處理。
二、學(xué)會(huì)編寫IPFfilter 規(guī)則
典型的防火墻設(shè)置有兩個(gè)網(wǎng)卡:一個(gè)流入,一個(gè)流出。IPFfilter讀取流入和流出數(shù)據(jù)包的報(bào)頭,將它們與規(guī)則集(Ruleset)相比較,將可接受的數(shù)據(jù)包從一個(gè)網(wǎng)卡轉(zhuǎn)發(fā)至另一個(gè)網(wǎng)卡,對(duì)被拒絕的數(shù)據(jù)包,可以丟棄或按照所定義的方式來(lái)處理。 通過(guò)向防火墻提供有關(guān)對(duì)來(lái)自某個(gè)源地址、到某個(gè)目的地或具有特定協(xié)議類型的信息包要做些什么的指令,規(guī)則控制信息包的過(guò)濾。通過(guò)使用IPFfilter系統(tǒng)提供的特殊命令建立這些規(guī)則,并將其添加到內(nèi)核空間特定信息包過(guò)濾表內(nèi)的鏈中。關(guān)于添加、去除、編輯規(guī)則的命令,一般語(yǔ)法如下:
action [in|out] option keyword, keyword...
參數(shù)說(shuō)明:
1. 每個(gè)規(guī)則都以操作開(kāi)頭。如果包與規(guī)則匹配,則 Solaris IP 過(guò)濾器將操作應(yīng)用于該包。以下列表包括應(yīng)用于包的常用操作。
block :阻止包通過(guò)過(guò)濾器。
pass :允許包通過(guò)過(guò)濾器。
log :記錄包但不確定是阻止包還是傳遞包。使用 ipmon 命令可查看日志。
count :將包包括在過(guò)濾器統(tǒng)計(jì)信息中。使用 ipfstat 命令可查看統(tǒng)計(jì)信息。
skip number :使過(guò)濾器跳過(guò) number 個(gè)過(guò)濾規(guī)則。
auth :請(qǐng)求由驗(yàn)證包信息的用戶程序執(zhí)行包驗(yàn)證。該程序會(huì)確定是傳遞包還是阻止包。
preauth :請(qǐng)求過(guò)濾器查看預(yù)先驗(yàn)證的列表以確定如何處理包。
2. 操作后面的下一個(gè)單詞必須是 in 或 out。您的選擇將確定是將包過(guò)濾規(guī)則應(yīng)用于傳入包還是應(yīng)用于傳出包。
3. 接下來(lái),可以從選項(xiàng)列表中進(jìn)行選擇。如果使用多個(gè)選項(xiàng),則這些選項(xiàng)必須采用此處顯示的順序。
log :如果規(guī)則是最后一個(gè)匹配規(guī)則,則記錄包。使用 ipmon 命令可查看日志。
quick :如果存在匹配的包,則執(zhí)行包含 quick 選項(xiàng)的規(guī)則。所有進(jìn)一步的規(guī)則檢查都將停止。
on interface-name :僅當(dāng)包移入或移出指定接口時(shí)才應(yīng)用規(guī)則。
dup-to interface-name:復(fù)制包并將 interface-name 上的副本向外發(fā)送到選擇指定的 IP 地址。
to interface-name :將包移動(dòng)到 interface-name 上的外發(fā)隊(duì)列。