麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 網絡通信 > 正文

在OpenBSD上架設安全的小型網絡

2019-11-05 03:18:55
字體:
來源:轉載
供稿:網友
像世界上其它的東西一樣,良好的安全建設需要一筆不菲的價格。道理其實很簡單,因為現(xiàn)在沒有那么多的技術高超的安全專家來照顧我們不堪一擊的網絡。人才短缺所造成的一個不幸的結果就是高的令人難以承受的專家傭金。這個問題將一些小型的網絡交給到了一群沒有多大經驗的網絡治理員的手中,這些治理員也許不知道如何去設計、配置和監(jiān)視網絡中的主機,使這些有缺陷的主機時時受到網絡上那些試圖尋找內部信息、免費儲存空間或者用于DDoS的肉雞的入侵者的威脅。



幸運的是,網絡上不少好心的黑客(褒義)制作出了不少非常出色的安全產品供網管們免費使用。這篇文章就是概述如何使用一個分隔的專用網絡/DMZ的設計來設計并運行一個小型網絡,這將答應治理員在使其用戶享受高水平保護的同時向外部網絡提供一些服務。這個設計的執(zhí)行和治理都相當?shù)妮p易,就算初學者都可以很輕松的把握,而且它還可以作為安全公司給客戶的一個基礎安全配置。

I.設計部分

我們的目標就是達到對外部發(fā)起的攻擊做到最大的保護。同時,我們不希望花費很多錢,這樣我們所使用的軟件就只能限于開放源代碼的軟件或者免費軟件。這并不像聽起來那么壞,因為大部分免費的操作系統(tǒng)幾乎都自帶有一套能達到一個小型企業(yè)標準的網絡安全軟件。同時,很多免費的安全解決方案都可以在一些商業(yè)產品里找到。

為了使事情變的更簡單,我們先假設我們將要建造的這個網絡只有一個對Internet的連接,并且它只有大概十幾個內部用戶。當然,你總是可以按你自己的意愿將它的規(guī)模變小或變大。這只在于添加更快的硬件,將網絡規(guī)劃成許多更小的網絡來消除瓶頸現(xiàn)象,甚至增加更多的對外連接等。

最簡單的設計莫過于使用保護內部專用網絡的防火墻來建設并維護這個網絡,這樣的話就不會有任何外來的連接,這種網絡被稱為非軍事區(qū)(demilitarized zone,簡稱DMZ),我們需要將它建設成以有一些對外開放的服務,同時使用相同的防火墻來進行保護的分隔網絡的形式。這些服務可以是DNS, WWW, mail, FTP, 或者news,不過你完全有自由去限制或增加任何其它服務。DMZ可以包含一臺主機或者很多主機,這都在于你想要這個網絡的復雜性而定的。

所有到我們網絡中的數(shù)據(jù)流都會被防火墻檢查和過濾,在幾個分別的主機上需要運行這三個網絡接口:

· 接口A連接防火墻到Internet上。接口的ip地址將由ISP分配 (本文中將會使用x.x.x.x).

· 接口B連接防火墻到內部專用網絡上。本文中這個接口的IP地址將會是 192.168.1.1。

· 接口C 連接防火墻到DMZ網絡上。本文中這個接口的IP地址將會是 192.168.2.1。

我們所設計的網絡的大概輪廓顯示在圖一中:

[img]http://xfocus.net/other/aqpz/NetworkDesign1.gif[/img]

圖一. 本文中所描述的網絡的大綱圖。

防火墻將使用下面的規(guī)則來控制數(shù)據(jù)流:

1.所有從內部專用網絡發(fā)送到所有合法地址上的數(shù)據(jù)包都可以沒有任何限制的通過防火墻。 (如有必要,這個規(guī)則可以做更大的限制)

2.所有從Internet發(fā)到專用網絡的數(shù)據(jù)包都應該被過濾,并且只有那些最初從內部專用網發(fā)送的請求包的有效回應包才應該被容許進入專用網絡。

3.所有從Internet發(fā)送到DMZ的數(shù)據(jù)包都應該被過濾,只給有那些發(fā)送到我們對Internet所開放的服務的數(shù)據(jù)包才能通過防火墻。 此外,最初從DMZ 發(fā)送的請求包的有效的回應包也容許進入DMZ。 (如有必要,這個規(guī)則可以做更大的限制 )

4.最初從內部專用網絡 發(fā)送到DMZ上的請求包的有效的回應包應容許進入專用網絡。

5.所有從DMZ 發(fā)送到Internet上(這不包括發(fā)送到DMZ上的)的數(shù)據(jù)包,應在沒有任何限制的情況下通過防火墻。 (如有必要,這個規(guī)則可以做更大的限制)

6.所有其它的數(shù)據(jù)流應該被丟棄。



除了我們上面說的這些數(shù)據(jù)包過濾規(guī)則以外,我們同時需要一個方法來讓我們所提供給外部網絡的服務在DMZ中的主機上運行。我們完全可以在裝載防火墻的主機上運行這些服務,但是那么做的話就會出現(xiàn)很多麻煩,因為我們在防火墻上裝載的服務越多,這個防火墻就會變的更弱。我們會通過重定位數(shù)據(jù)流到DMZ上,這樣我們其實就把潛在的攻擊目標從防火墻移到了DMZ上。這樣的話,假如攻擊者對我們的網絡進行攻擊,他們就是在攻擊DMZ里的主機,而他們想攻擊整個內部網絡,則還要入侵防火墻和剩下的網絡,這樣會緩慢入侵者速度,從而讓整個網絡更安全了一些。(負責重定向數(shù)據(jù)包的主機有時被稱為端口轉發(fā)(port forwarding))。

因為一般的小型網絡通常只有它們ISP所分配的一個單獨的IP地址,所以防火墻同時需要運行一些“偽裝”軟件,這些軟件使所有從內部網和DMZ那里發(fā)出的數(shù)據(jù)流似乎是從一臺主機上發(fā)出的一樣。這是使我們的網絡更難被攻破的另一個安全手段,因為在防火墻后面的機器的IP 地址永遠不會被顯示給外面的網絡。

可以過濾數(shù)據(jù)包,重定向數(shù)據(jù)流到其它的地址和實現(xiàn)IP地址偽裝的免費的防火墻產品有ipfilter, ipfw, ipchains, 和iptables。前面的兩個軟件包是使用于BSD家庭的,后兩個則廣泛用于linux操作系統(tǒng)中。


II.選擇硬件及軟件

我在本文中選擇使用的防火墻軟件是在OpenBSD 2.8上運行的Daren Reed的ipfilter,ipfilter 同時有NetBSD, Solaris, SunOS, BSD/OS, IRIX, HP-UX,和QNX版本。假如你是使用其它的防火墻軟件,你要記得把我們后面要講到的防火墻規(guī)則翻譯成你所使用的防火墻的規(guī)則語言。(通用的設計原理在任何案例里都將是相同的。) 我選擇ipfilter 主要有四個原因。第一,我對它非常了解。第二,它是被千萬程序員反復測試過的。第三,它是OpenBSD的默認防火墻。第四,我喜歡它簡單的語法。Ipfilter 相當?shù)妮p易操作,它可以整理內部用戶所發(fā)送的請求包及它們的回復包,并且讓它們通過防火墻,而不需要我們寫一些復雜的防火墻規(guī)則。它并且?guī)в泻唵蔚臄?shù)據(jù)包重定向和地址偽裝模塊,ipnat。

至于硬件,運行ipfilter 防火墻軟件的機器可以是任何支持OpenBSD或其它有ipfilter 支持版本的操作系統(tǒng),例如NetBSD,只要它能提供至少三個網絡接口 ( 一個連接Internet,一個連接內部專用網絡和另外一個連接DMZ )。我的選擇是一臺普通的低檔奔騰處理器電腦,裝備有串行端口和三個主板上空閑的擴充插槽。不過它可以只是一臺Alpha, Sun, VAX或者任何一臺滿足我們上面所說的需求的主機。不過,防火墻所在的那臺主機的硬盤至少要有540MB。你可以使用IDE而不是SCSI,只要磁盤系統(tǒng)不裝太多東西,只要主機有起碼24MB的內存。

另外一個重要的組成部分是網絡接口卡。連接內部網絡和DMZ到防火墻上用的接口卡,我推薦帶有用于雙絞線的10BASE-T插槽的10/100Mb/一秒的網卡和RJ-45插槽,這些東西不管是全新的還是二手貨都很便宜。其它一些必要的連接設備包括雙絞線和帶有10BASE-T插槽的10/100Mb/一秒的hub。(假如整個DMZ都是在一個機器上的話,可以購買兩個hub,一個用于內部專用網絡,另一個用于交叉雙絞線。)

我之所以建議你不要使用共軸的10BASE2電纜,而使用雙絞線(還有帶RJ-45插槽的網卡及hub),是因為雙絞線裝置更可靠一些,盡管它們需要一個hub才能工作。(在共軸線上,一個錯誤就會導致所有的電腦都連接到一個無法訪問網絡的電纜上,而假如一個錯誤發(fā)生在雙絞線上,只有一臺機器會被斷開連接,其它的機器還都可以正常的訪問網絡)。

還有要注重的是,在你去eBay或者本地的舊電腦銷售店里采購二手硬件之前,我建議你最好先去OpenBSD的網站及軟件所副的安裝說明書上查找自己要買的硬件的品牌是否在OpenBSD的支持硬件表里。這個步驟會為你省去很多的麻煩。

你同時要去你所使用的硬件的網站里去找你硬件的驅動程序。有些硬件不能被它廠商自己的驅動程序驅動,但可以用這個硬件所使用的芯片的驅動程序驅動。

最后一個重要的東西就是DOS盤或者Windows 95/98的救援盤。因為我不是太清楚微軟對使用DOS或者Windows啟動盤來裝另外一個操作系統(tǒng)是怎么想的,所以我建議你最好是找一個合法的DOS或者MS Windows光盤來最備用,或者直接去買一個IBM的DOS,最好是去下載 FreeDOS,一個免費的DOS克隆版本。一但你有了一個DOS盤,創(chuàng)建一個啟動盤,把里面不需要的程序刪除掉,然后把需要的驅動程序裝進去。

(請注重,你并不需要DOS或者Windows來裝OpenBSD,我說的這種情況是當Windows已經是你電腦中的操作系統(tǒng)時的情況。)

III.安裝

OpenBSD的安裝過程相當簡單,你可以在OpenBSD FAQ 的第4部分中找到具體的安裝說明。這樣以來,我不會對設置進行具體的講解,不過我會主要說明一些會讓第一次使用OpenBSD的用戶感到困惑的問題:

swap的最小空間(Minimum amount of swap space):使用大概你RAM內存的兩倍就足夠了。假如你不確定的話,可以使用OpenBSD FAQ 第四部分中列出的分割大小列表。

對大硬盤的支持(Large disk support): 當硬盤無法啟動的時候,就算系統(tǒng)安裝完全順利,你也需要用硬盤或者電腦廠商的程序來讓硬盤變的可啟動。有些時候,非凡是當電腦有一個很老的BIOS時,你的系統(tǒng)可能無法識別硬盤的大小。這種問題應該不會影響到OpenBSD的安裝,但當安裝結束以后,你必須去你電腦或者硬盤的廠商的網站上去下載驅動或者配置程序來讓系統(tǒng)工作。假如你還有問題,閱讀安裝文檔,那里非常具體的斤記錄了一些不同的方法來解決大硬盤的問題。

網絡接口地址(Network interface address): 當OpenBSD的安裝程序詢問你關于網絡接口地址的時候,它是問你想要配置哪個接口。因為我們可以以后再對它進行配置,所以選擇哪個并不是很重要。唯一一個要主要的地方就是,假如你是要配置連接到Internet上的接口的話,你必須要使用你的ISP分配給你的IP地址,同時你應該對在防火墻后的網絡使用一個地址,對不連接到Internet的主機使用一個保留的地址。例如假如我們使用192.168.1.x,那么就應該把連接防火墻到其余的網絡的那個接口設置為192.168.1.1,并要把連接防火墻到DMZ的接口設置為192.168.2.1 (192.168.2.x 是其它的網絡)。你現(xiàn)在無法配置連接到串行端口的接口,因為它需要另外一個軟件(pppd)。 不過我們可以呆會兒再完成這個步驟。

IRQ 沖突 (IRQ conflicts.): 為了避免IRQ沖突,我們需要拆掉所有不需要的硬件。第一個被拆掉的應該是聲卡,因為在用于作為防火墻的電腦上不需要這樣的東西。 電視/廣播,掃描器控制器,和其它一些類似的多余的卡也該被拆掉。假如你的電腦已經預裝了SCSI 盤的話,你只需要一個網卡和SCSI 控制卡。當然,你需要留下圖形卡,因為我們在安裝過程中還是要看顯示器的。

當你碰到了與IRQ相關的網卡問題時,一般是由兩中原因引起的。一種是因為網卡與其它設備使用的是同一個IRQ端口,因為沖突造成系統(tǒng)無法檢測到設備。或者就是網卡不能在安裝期間進行自行配置。假如你存在這些問題的話,經常會出現(xiàn)缺少對其它電腦的連接(使用ping命令測試專用網絡或DMZ時,會報告數(shù)據(jù)包100%遺失),"device timeout"信息,或者系統(tǒng)會在啟動期間崩潰等現(xiàn)象。這些問題可以簡單的用適當?shù)木W卡配制程序和用戶內核配置程序來解決。

當這種錯誤發(fā)生時,從DOS 或者Windows啟動盤啟動,運行網卡配置程序,關閉自動配置功能,把網絡媒體類型設置為10BASE-T,并從可用中斷列表中選擇IRQ。對你系統(tǒng)中的每一個卡重復這個過程,退出配置程序,重新啟動到OpenBSD中。


假如經過上面的配置后你的電腦還存在著同樣的問題,你將需要通過UKC來配置你的內核。你可以由兩個方法來進入UKC控制臺:在啟動的時候,當你看見boot>提示符時輸入boot –c,或者以root身份輸入config -e /bsd。當你看見UKC> 提示符后,你可以搜索設備,添加新設備,禁用或啟動一個設備,和查找這些設備之間的IRQ沖突。假如你找到你為網卡所選的IRQ已經被另外一個設備所占用,你可能需要禁用那個設備,這是在假如它不是系統(tǒng)必須的設備的前提下。例如,我總是在防火墻機器上禁用鼠標,因為我不會在那臺機器上使用X Windows,所以鼠標是完全不必要的。同樣的,所有的音響設備也應該被禁用,因為它們在防火墻上沒有任何作用。當你找到了一個可用的配置,把它寫下來并用config -e /bsd(使用root身份)來建立和保存一個新的內核來代替默認的內核(這時保存一個默認內核的備份是個好主意)。你可以在config的手冊中找一些額外的信息(man config 會成為你的好伙伴)。SCSI控制器上的IRQ相關問題也可以用類似的方法解決。想了解更多關于UKC的知識,請閱讀OpenBSD F.A.Q的第四節(jié)。OpenBSD所支持的設備列表可以在http://www.openbsd.org/i386.Html 找到。

為了測試網卡是否工作,你可以連接防火墻到專用網絡及DMZ,并用ping 命令對這些網絡中的任何一個可用IP地址進行測試。假如出現(xiàn)長時間的耽擱或數(shù)據(jù)包100%遺失的現(xiàn)象的話,說明系統(tǒng)還存在問題。

網絡媒體選擇問題:這些問題一般可以用兩種方法解決:以適當?shù)呐渲瞥绦驅ㄟM行配置,或者在”主機名.xxx”文件(這些文件一般在/etc目錄里)中設置媒體選擇選項來解決。你可以利用ifconfig –a來檢查你的系統(tǒng)中有哪些接口,這個命令會顯示接口設備的列表。之后你可以閱讀一些適當?shù)氖謨皂摚ɡ纾簩τ趎e 卡,閱讀man ne)并找出哪些選項是負責媒體選擇的。假如你無法從名稱上識別網絡設備的話,請去閱讀OpenBSD網站上的Ethernet Adapters section。當你找到需要配置的接口后,去尋找”/etc/主機名.設備名”文件(例如:設備ne1的/etc/hostname.ne1),假如必要的話,你可以編輯它。你可能需要創(chuàng)建這個文件,不過每一個以太網接口都應該有一個這種文件。(更多的信息,你可以去閱讀hostname.if的手冊)。

當安裝結束并正常啟動沒有出現(xiàn)任何錯誤的后,適當?shù)淖R別安裝過的網卡,之后你可以開始編輯以下的文件(你必須以root身份登陸才能編輯以下文件):

· /etc/主機名.設備名 – 這些文件儲存了一些系統(tǒng)需要用來配置網卡的基本信息。每一個網卡都應該有一個這樣的文件。你可以在OpenBSD F.A.Q的第5節(jié)和man hostname.if中了解更多的信息。舉個例子,一個連接防火墻到內部專用網絡上的ne1 (NE1000/NE2000兼容)設備應該是這個樣子:

· /etc/hosts – 這個文件是為防火墻預備的主機名數(shù)據(jù)庫,它包含了所有防火墻“熟悉”的IP地址或主機名列表,它應該包含在內部專用網上和在DMZ 上所知的主機名稱及地址的名單(一個主機完全可能同時在很多網絡內,并擁有不同的主機名和地址),在我們的這個例子中,這個名單應該包含192.168.1.1 (內部專用網絡)和192.168.2.1 (DMZ):

 127.0.0.1 localhost

 192.168.1.1 fireater.foo.com fireater

 192.168.2.1 fireball.bar.com fireball

/etc/hosts中列出的防火墻接口應該和/etc/主機名.設備名中列出的IP地址相同。假如防火墻是通過一個以太網來連接到Internet的話,/etc/hosts中應該有另外一行注明ISP所分配的主機名及IP地址。記得把這些網絡中的foo.com和bar.com改變成實際的域名。這些并不一定必須是登記過的域名。 我為內部專用網和DMZ 使用兩個不同的域名,因為它幫助我區(qū)分兩個不同網絡, 但是你當然可以只使用一個域名( 或者你可以使用超過兩個域名,完全由你決定)。

·/etc/resolv.conf – 這個配置文件應該包括以下幾行:

 search foo.com

 nameserver 192.168.1.2

 lookup file bind

 search bar.com

 nameserver 192.168.2.2

lookup file bind

注重到我假設域名foo.com和bar.com 的nameservers聽在監(jiān)聽192.168.1.2 和192.168.2.1, 但是你的構造可能將十分不同,它應該被按照你的要求改變。

· /etc/rc.conf -- 主系統(tǒng)配置文件中應該激活以下的選項:

 ipfilter=YES
 ipnat=YES

在你做完所有這些修改之后,用sync 重啟系統(tǒng);重啟并且檢查那些網絡接口是否在正確的運行(使用ping 對內部專用網或DMZ發(fā)送請求,假如報告沒有任何數(shù)據(jù)包遺失就表示工作正常)。記住假如把防火墻連接到內部網絡的網絡接口是插在串行接口的話,你則需要配置pppd 守護進程(閱讀man ppp)。這樣的接口使用的設備名是tun0。(你不需要為它創(chuàng)建一個/etc/hostname.tun0文件)。

記住你必須以一種答應防火墻和其它在內部專用網絡、DMZ和Internet之間進行流暢通訊的方法來配置其它在專用內部網絡和DMZ上的主機。為此,你應該配置內部專用網絡上的每一臺主機上的TCP/IP協(xié)議,使它們都用192.168.1.1來做它們的網關,并且在相同的地址空間里給每臺機器一個IP 地址( 192.168.1.2, 192.168.1.3, 192.168.1.4,等等)。同樣的,DMZ中的機器應該被配置為使用192.168.2.1作為它們的網關,并給每機器一個從192.168.2.2-192.168.2.254 范圍中的IP 地址。此外,每臺機器應該被命名一個獨特的主機名。


一旦完成了這些工作,你應該在專用網絡內運行一個內部的DNS服務器,這樣可以讓內部通訊變的更輕易一些。DNS 配置文件的條目中應該列出全部在專用網絡上和在DMZ 里主機。因為安全原因,DMZ中的機器將無法訪問那些在專用網絡中的數(shù)據(jù)(他們完全禁止寄任何數(shù)據(jù)包給專用網絡),但專用網絡需要訪問DMZ的權利,因為用戶需要簡單的升級在WWW服務器上的文檔,閱讀和發(fā)送郵件到Internet上的其它主機和使用其它在DMZ上的服務。

IV.配置防火墻

一旦你設置好了你的OpenBSD系統(tǒng)和網絡,你將需要去配置防火墻。我下面展示的這些防火墻規(guī)則非常具有限制性,可能很多治理員都不會同意這樣設置,但我寧愿從簡單開始,加強限制,以后再按要求來放松這些規(guī)則。

Ipfilter可以分為兩個模塊:網絡地址轉換(network address translator)簡稱NAT,和數(shù)據(jù)包過濾器(packet filter)。第一個是用于偽裝(隱藏單個外部IP地址后面的內部IP地址)和重定向主機和端口之間的數(shù)據(jù)包。包過濾器會檢查被NAT修改過的數(shù)據(jù)包是否可以答應通過防火墻后的網絡。你可以在Daren Reed的ipfilter 官方網站上找到關于ipfilter 設計和語法規(guī)則的具體解釋。man ipf 和 man ipnat 可以提供更多的額外信息。

因為NAT第一個接觸數(shù)據(jù)包,所以我們將先配置它。網絡地址轉換及數(shù)據(jù)包重定向的規(guī)則儲存在/etc/ipnet.rules文件里。用文本編輯器打開這個文件并輸入以下的規(guī)則:

# PRivate internal network NAT rules
map tun0 192.168.1.0/24 -> x.x.x.x/32 portmap tcp/udp 10000:20000
map tun0 192.168.1.0/24 -> x.x.x.x/32
# DMZ NAT rules
map tun0 192.168.2.0/24 -> x.x.x.x/32 portmap tcp/udp 20001:30000
map tun0 192.168.2.0/24 -> x.x.x.x/32

這些規(guī)則告訴NAT引擎去映射所有在端口10000-20000上,從內部專用網絡到地址"x.x.x.x"上的連接。并映射所有在端口20001-30000上,從DMZ到地址"x.x.x.x"上的連接。"x.x.x.x"應該被替換為你的ISP分配給你的實際IP地址。tun0是Internet接口設備的名字,假如外部接口沒有使用串行端口的話,把tun0替換為你所使用的網絡設備名。

我們現(xiàn)在可以連接內部專用網和DMZ到Internet上了,不過外部的主機現(xiàn)在仍不能訪問DMZ中的服務。我們需要做一個重定向,下面是一個簡單的重定向HTTP數(shù)據(jù)流的規(guī)則:

# redirect HTTP requests from foreign hosts
rdr tun0 x.x.x.x/32 port 80 -> 192.168.2.254 port 8080 tcp
rdr tun0 x.x.x.x/32 port 80 -> 192.168.2.254 port 8080 udp
# redirect HTTP requests from the private internal net
rdr ne1 x.x.x.x/32 port 80 -> 192.168.2.254 port 8080 tcp
rdr ne1 x.x.x.x/32 port 80 -> 192.168.2.254 port 8080 udp
# redirect HTTP requests from the DMZ
rdr ne2 x.x.x.x/32 port 80 -> 192.168.2.254 port 8080 tcp
rdr ne2 x.x.x.x/32 port 80 -> 192.168.2.254 port 8080 udp

同樣,"x.x.x.x" 是連接防火墻到Internet的外部接口的IP地址。192.168.2.254是DMZ中的HTTP服務器的IP地址。因為安全原因,服務器在一個無特權的端口8080上監(jiān)聽請求。注重這里必須要一個規(guī)則把每個接口上的數(shù)據(jù)包重定向到"x.x.x.x"的80號端口上,要不然有些數(shù)據(jù)包將無法到達正確的目的地。

重定向其它的服務,你可以復制HTTP的規(guī)則,并更改端口號碼。例如,重定向郵件,將下面的規(guī)則加入/etc/ipnat.rules文件中:

# redirect SMTP requests from foreign hosts
rdr tun0 x.x.x.x/32 port 25 -> 192.168.2.253 port 25 tcp
rdr tun0 x.x.x.x/32 port 25 -> 192.168.2.253 port 25 udp
# redirect SMTP requests from the private internal net
rdr ne1 x.x.x.x/32 port 25 -> 192.168.2.253 port 25 tcp
rdr ne1 x.x.x.x/32 port 25 -> 192.168.2.253 port 25 udp
# redirect SMTP requests from the DMZ
rdr ne2 x.x.x.x/32 port 25 -> 192.168.2.253 port 25 tcp
rdr ne2 x.x.x.x/32 port 25 -> 192.168.2.253 port 25 udp

注重這里我使用了不同的IP地址,這個地址是我運行SMTP守護進程的機器。當然,假如你所有的服務都是運行在同一臺主機上的話,這個地址則不需要更改。

一旦我們設置好了全部的NAT規(guī)則,我們就可以繼續(xù)把包過濾規(guī)則加進去了。這些儲存在/etc/ipf.rules 文件中。用文本編輯器打開它,并把下面這兩行添加到最開頭:

pass out quick on lo0 all


pass in quick on lo0 all

lo0 是一個回環(huán)接口,我們不需要去動它,因為在這里阻擋數(shù)據(jù)包會浪費大量的處理器周期。要害字quick指示防火墻在數(shù)據(jù)包匹配這個規(guī)則后馬上停止處理其它規(guī)則。這樣可以減少大量的處理器周期,并且簡化了規(guī)則的書寫。這里沒什么可加的了,所以我們繼續(xù)進行到tun0接口規(guī)則,我們在這里需要阻攔所有到不合法地址的輸出數(shù)據(jù)(一些入侵者喜歡使用這類反彈控制的方法,我們當然不想幫他們):

block out quick on tun0 from any to 192.168.0.0/16

block out quick on tun0 from any to 172.16.0.0/12

block out quick on tun0 from any to 127.0.0.0/8

block out quick on tun0 from any to 10.0.0.0/8

block out quick on tun0 from any to 0.0.0.0/8

block out quick on tun0 from any to 169.254.0.0/16

block out quick on tun0 from any to 192.0.2.0/24

block out quick on tun0 from any to 204.152.64.0/23

block out quick on tun0 from any to 224.0.0.0/3

在阻止了危險的數(shù)據(jù)包傳播到Internet上以后,我們需要添加一些讓合法的數(shù)據(jù)流出的規(guī)則。下面這三條規(guī)則將答應所有從內部專用網上的合法地址上發(fā)出的數(shù)據(jù)發(fā)送到Internet:

pass out quick on tun0 proto tcp from 192.168.1.0/24 to any keep state
pass out quick on tun0 proto udp from 192.168.1.0/24 to any keep state
pass out quick on tun0 proto icmp from 192.168.1.0/24 to any keep state

要害字keep state告訴ipfilter 去“記住”連接狀態(tài),這樣便可以讓那些發(fā)回給創(chuàng)建連接的那些主機的包能通過防火墻。要害字proto定義一個非凡的規(guī)則將使用的協(xié)議。

我們同樣希望所有從DMZ合法地址上發(fā)送的數(shù)據(jù)能順利發(fā)送到Internet上去。所有我們需要做的只是復制內部專用網絡的規(guī)則,并更換網絡地址而已。(用192.168.2.0/24 代替192.168.1.0/24 -- /24 是netmask ):

pass out quick on tun0 proto tcp from 192.168.2.0/24 to any keep state
pass out quick on tun0 proto udp from 192.168.2.0/24 to any keep state
pass out quick on tun0 proto icmp from 192.168.2.0/24 to any keep state

所有其它試著通過tun0到達Internet上的數(shù)據(jù)應該被攔截,這是因為安全原因。

block out quick on tun0 all

我們現(xiàn)在有了一套定義哪些數(shù)據(jù)包可以離開我們的網絡并嘗試連接Internet上其它主機的規(guī)則。下來,我們將添加用來阻攔不受歡迎的數(shù)據(jù)包發(fā)送到我們網絡里來的規(guī)則。

和剛才一樣,我們需要丟掉所有從不合法地址上發(fā)來的數(shù)據(jù)包,因為他們總是被那些有著不好意圖的人送來的。這個可以通過下面這套規(guī)則來實現(xiàn):

block in quick on tun0 from 192.168.0.0/16 to any

block in quick on tun0 from 172.16.0.0/12 to any

block in quick on tun0 from 10.0.0.0/8 to any

block in quick on tun0 from 127.0.0.0/8 to any

block in quick on tun0 from 0.0.0.0/8 to any

block in quick on tun0 from 169.254.0.0/16 to any

block in quick on tun0 from 192.0.2.0/24 to any

block in quick on tun0 from 204.152.64.0/23 to any

block in quick on tun0 from 224.0.0.0/3 to any

block in log quick on tun0 from x.x.x.x/32 to any

block in log quick on tun0 from any to x.x.x.0/32

block in log quick on tun0 from any to x.x.x.255/32

要害字log告訴ipfilter去記錄所有符合一個規(guī)則的數(shù)據(jù)包。

當所有非法數(shù)據(jù)包被丟棄以后,我們可以檢查是否有任何去我們開放給公眾的端口的數(shù)據(jù)包,假如有的話,我可以讓它們通過。下面的規(guī)則檢查送去端口80的數(shù)據(jù)包,這是一般的HTTP端口。

pass in quick on tun0 proto tcp/udp from any to x.x.x.x/32 port = 80 keep state
pass in quick on tun0 proto tcp/udp from any to 192.168.2.254/32 port = 8080 keep state

注重在ipf.rules文件中使用的地址/端口一定要符合ipnat.rules中使用的地址/端口。下面的規(guī)則答應所有到DMZ中的SMTP服務器的數(shù)據(jù)包:

pass in quick on tun0 proto tcp/udp from any to x.x.x.x/32 port = 25 keep state
pass in quick on tun0 proto tcp/udp from any to 192.168.2.253/32 port = 25 keep state


所有其它從Internet送到外部接口上的數(shù)據(jù)包都會被丟棄。

block in quick on tun0 all

我們的外部接口基本已經被保護的很好了,我們現(xiàn)在可以集中在到內部專用網絡和DMZ的接口上了。假設內部專用網絡連接在接口ne1上,我們可以寫下下面這些阻攔所有嘗試到達內部專用網絡的數(shù)據(jù)包的規(guī)則:

block out quick on ne1 all

這個規(guī)則剪斷訪問內部專用網絡DNS的權利,就是我們前面提到的列在/etc/resolv.conf 文件中的那個名字服務器。我們可以激活訪問名字服務器的限權用:

pass out quick on ne1 proto tcp from 192.168.1.1 to 192.168.1.2/32 port = 53 keep state
pass out quick on ne1 proto udp from 192.168.1.1 to 192.168.1.2/32 port = 53 keep state

或者更好的, 使用外部名字服務器來代替內部名字服務器。這樣的話,/etc/resolv.conf 將會像這樣(“y.y.y.y” 和 “z.z.z.z”是外部名字服務器的地址,它應該是你的ISP分配給你的):

lookup file bind

nameserver y.y.y.y

nameserver z.z.z.z

值得記住的是,“out”規(guī)則定義了數(shù)據(jù)包離開防火墻并進入其它網絡的過濾政策(在這里是內部專用網絡),“in”規(guī)則定義了從外部送到防火墻的數(shù)據(jù)包的過濾政策。這些經常給初學者造成一些問題。

定義哪些從內部專用網絡發(fā)來的數(shù)據(jù)包可以進入防火墻的規(guī)則與tun0 的“in” 規(guī)則非常相似,雖然不是一樣的:

block in quick on ne1 from 172.16.0.0/12 to any
block in quick on ne1 from 10.0.0.0/8 to any
block in quick on ne1 from 127.0.0.0/8 to any
block in quick on ne1 from 0.0.0.0/8 to any
block in quick on ne1 from 169.254.0.0/16 to any
block in quick on ne1 from 192.0.2.0/24 to any
block in quick on ne1 from 204.152.64.0/23 to any
block in quick on ne1 from 224.0.0.0/3 to any
block in log quick on ne1 from x.x.x.x/32 to any
block in log quick on ne1 from any to x.x.x.0/32
block in log quick on ne1 from any to x.x.x.255/32
pass in quick on ne1 proto tcp from 192.168.1.0/24 to any keep state
pass in quick on ne1 proto udp from 192.168.1.0/24 to any keep state
pass in quick on ne1 proto icmp from 192.168.1.0/24 to any keep state
block in quick on ne1 all

不同與其它的內部專用網絡,DMZ有一部分是對外開放的。這樣以來,在我們丟掉所有嘗試進入它的數(shù)據(jù)包之前,我們將需要讓一些包進入。第一組規(guī)則將讓所有從內部專用網絡的數(shù)據(jù)包在沒有約束的情況下進入:

pass out quick on ne2 proto tcp from 192.168.1.0/24 to 192.168.2.0/24 keep state
pass out quick on ne2 proto udp from 192.168.1.0/24 to 192.168.2.0/24 keep state
pass out quick on ne2 proto icmp from 192.168.1.0/24 to 192.168.2.0/24 keep state

下來,我們將阻攔所有送去不合法地址的數(shù)據(jù)包:

block out quick on ne2 from any to 192.168.0.0/16

block out quick on ne2 from any to 172.16.0.0/12

block out quick on ne2 from any to 127.0.0.0/8

block out quick on ne2 from any to 10.0.0.0/8

block out quick on ne2 from any to 0.0.0.0/8

block out quick on ne2 from any to 169.254.0.0/16

block out quick on ne2 from any to 192.0.2.0/24

block out quick on ne2 from any to 204.152.64.0/23

block out quick on ne2 from any to 224.0.0.0/3

最后,我們將讓從外部發(fā)送到公開地址的數(shù)據(jù)包通過:

pass out quick on ne2 proto tcp from any to 192.168.2.254/32 port = 8080 keep state
pass out quick on ne2 proto udp from any to 192.168.2.254/32 port = 8080 keep state
pass out quick on ne2 proto tcp from any to 192.168.2.253/32 port = 25 keep state
pass out quick on ne2 proto udp from any to 192.168.2.253/32 port = 25 keep state

其它的數(shù)據(jù)包將因安全原因而攔截:

block out quick on ne2 all


對于從DMZ發(fā)送到Internet上的數(shù)據(jù)包,我們將讓所有從合法地址發(fā)送的數(shù)據(jù)包通過:

block in quick on ne2 from 172.16.0.0/12 to any
block in quick on ne2 from 10.0.0.0/8 to any
block in quick on ne2 from 127.0.0.0/8 to any
block in quick on ne2 from 0.0.0.0/8 to any
block in quick on ne2 from 169.254.0.0/16 to any
block in quick on ne2 from 192.0.2.0/24 to any
block in quick on ne2 from 204.152.64.0/23 to any
block in quick on ne2 from 224.0.0.0/3 to any
block in log quick on ne2 from x.x.x.x/32 to any
block in log quick on ne2 from any to x.x.x.0/32
block in log quick on ne2 from any to x.x.x.255/32
pass in quick on ne2 proto tcp from 192.168.2.0/24 to any keep state
pass in quick on ne2 proto udp from 192.168.2.0/24 to any keep state
pass in quick on ne2 proto icmp from 192.168.2.0/24 to any keep state
block in quick on ne2 all

這些我們現(xiàn)在有的規(guī)則很有限制性,但也很安全。你可以使用下面的命令來關閉它們:

ipf -A -Fa -f /etc/ipf.rules -E

ipnat -FC -f /etc/ipnat.rules

我們的網絡將對外部攻擊有了一定的免疫能力,不過也有一些不方便之處:

我們不能使用traceroute – 解決方法是放松我們的規(guī)則。閱讀ipfilter HOW-TO文件來得到更多關于放松規(guī)則的技巧。它將是一個很好的配置防火墻的練習。
· 從外部到我們網絡的pings 和連接嘗試將報告100%數(shù)據(jù)包遺失—這將是個問題當你想通過從外部發(fā)送pings來監(jiān)視防火墻,來看機器是否在運行。你可以用到公開端口的連接來代替。

當你想打開一些額外的服務給外部用戶時,記住在/etc/ipnat.rules和 /etc/ipf.rules文件中添加適當?shù)臈l目。

V.結語

你對什么服務對外開放由你決定。在DMZ里最多運行的是HTTP服務器。另外一個很受歡迎的選擇是email服務器和用于提供虛擬域名服務的DNS服務器。

在市場上有很多可用的方案,但我建議你使用你最了解的,或者,假如你不知道如何治理軟件的一個非凡部分,我的建議是從簡單的東西開始。例如,假如你不知道如何配置和治理DNS,你可以使用/etc/hosts 文件直到你了解了更多關于DNS的知識。假如你需要用DNS來實現(xiàn)虛擬域名服務,使用外部DNS服務器。你可以以每月5美圓的低價來租用一個DNS服務器,或者你可以問你的ISP是否可以在他們的名字服務器上架設你的這些域名。

假如你想運行郵件服務,考慮一下postfix,一個可以用來替代 sendmail的免費郵件軟件,它非常輕易配置和治理,而且一直以比sendmail更加安全而聞名。

至于HTTP服務器軟件,假如你從來沒有用過Web服務器的話,考慮一下用thttpd來代替Apach。. thttpd 比較小,而且更輕易來配置和治理,并且還可以教你一些好的治理習慣。假如你非常想運行公共名字服務器的話,試試djbdns。學習你想要用于公眾訪問的軟件中的不同的配置功能,并學會如何用chroot來運行它們,這樣可以大大的增加系統(tǒng)的安全性。

最后,盡可能的學習關于網絡安全,防火墻,TCP/IP治理。我在文章中提到的設計在盡可能的情況下讓安全和不方便之處平衡,但你不可能在沒有任何麻煩的情況下使用它,而且它并不是最安全的設計。這只似乎個開始:你應該改進它來適應你自己的要求。閱讀所有可用的HOW-Tos和指南。當出現(xiàn)疑問的時候,問一些老的和有更多經驗的治理員們,并向他們學習。




發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 青青草华人在线 | 欧美久久一区 | 精品亚洲夜色av98在线观看 | 毛片在线视频观看 | 久久久久久久网站 | 日本在线视频免费观看 | 久久99精品久久久久久国产越南 | 免费看污视频在线观看 | 天天天干夜夜夜操 | 黄色网址你懂的 | 久久综合伊人 | 一级α片免费看刺激高潮视频 | 逼特逼视频在线观看 | 亚洲二区不卡 | 老子午夜影院 | 久久成人午夜视频 | 亚洲一区二区在线 | 国产成人精品网站 | 9999在线视频 | 欧美性生交xxxxx免费观看 | 久久一区国产 | 正在播放91精 | 精品一区二区在线观看视频 | 毛片视频免费播放 | 久久久久久久久久久一区 | 色成人在线 | 91精品国产九九九久久久亚洲 | 国产喷白浆10p | 成人福利电影在线观看 | 男女羞羞视频在线免费观看 | 久久在线免费视频 | 黄色大片网 | 一边吃奶一边摸下娇喘 | 国产自在线 | 神马久久精品综合 | 俄罗斯hdxxx 日夜操天天干 | 免费观看视频在线观看 | 国产日韩精品欧美一区视频 | 红杏网站永久免费视频入口 | 日本羞羞的午夜电视剧 | 99爱福利视频在线观看 |