国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
NAT服務(wù)器與防火墻 - fanqiang.com

NAT服務(wù)器與防火墻

來源:南方Linux (2006-06-20 14:50:37)

NAT服務(wù)器與防火墻

▓ 淺談IP

▓ NAT原理及主要功能

▓ NAT服務(wù)器的安裝與使用

▓ iptables在防火墻上的運用

▓ 實例練習(xí)

▓ 防火墻的簡單設(shè)置

▓ iptables 設(shè)置文件參考范例

Squid 服務(wù)器有著快速讀取功能,減少了客戶端直接連接Internet的機會,不足,這在目前以IPv 4為主流的網(wǎng)絡(luò)環(huán)境中,的確困擾著許多系統(tǒng)及網(wǎng)絡(luò)設(shè)計人員。因此本章將使用NAT的方式來提供這一問題的解決方案。除此之外,利用NAT概念的擴展,我們也將介紹防火墻的基本概念以及它對企業(yè)網(wǎng)絡(luò)安全性的影響。


◆ 淺談IP

因為NAT的使用主要是為了解決IP地址不足的問題,所以在學(xué)習(xí)NAT的內(nèi)容前,必須先對IP地址的意義及功能要有基本的了解。本節(jié)將就IP的基本特性逐一介紹以幫助讀者建立正確的概念。


◆ IP的定義

IP是位于OSI網(wǎng)絡(luò)模型中的網(wǎng)絡(luò)層(Network Layer)能信協(xié)議,它也是TCP/IP 通信協(xié)議,它也是TCP/IP通信協(xié)議組件中最重要的兩個通信協(xié)議之一,目前Internet中使用的版本是IPv4,有關(guān)它的標(biāo)準(zhǔn)都定義在RFC 791中。


◆ IP主要定義3個基本概念:

● 在TCP/IP網(wǎng)絡(luò)中定義數(shù)據(jù)傳輸?shù)幕締挝? -數(shù)據(jù)報(Datagram),所有數(shù)據(jù)在網(wǎng)絡(luò)上傳遞都有特定的格式。

● IP運行路由(Routing)的功能,它會選擇一條最佳路徑供數(shù)據(jù)傳輸之用。

● 訂立數(shù)據(jù)報在不可靠(Unreliable)的網(wǎng)絡(luò)上傳遞時應(yīng)該遵循的原則。



通常IP是利用以下的運作模式將數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)上的:

① 源主機IP層之上的傳輸服務(wù)會選將數(shù)據(jù)以TCP或UDP的格式發(fā)送到IP層上。

② IP層再將來源及目地的地信息(用來在網(wǎng)絡(luò)上路由的數(shù)據(jù))與IP數(shù)據(jù)報組合。

③ 接下來IP層將數(shù)據(jù)報向下發(fā)送到網(wǎng)絡(luò)接口層,在這一層中,數(shù)據(jù)鏈路服務(wù)會將IP數(shù)據(jù)報轉(zhuǎn)換成框架,以便在物理網(wǎng)絡(luò)中的特定媒體上進行傳遞。

④ 因為每個IP數(shù)據(jù)報都包含來源及目的的地址,然后將這個地址與區(qū)域維護的路由表相比較,再判定需進一步采取的轉(zhuǎn)送動作,而在目的地主機上則要運行反向處理。


◆ IP尋址

除了路由之外,IP的另一項重要功能為尋址(Addressing)目前Internet上都使用這套標(biāo)準(zhǔn)來表示主機和網(wǎng)絡(luò)點的邏輯地址,而通過這個管理模式,可以確定每臺主機或網(wǎng)絡(luò)都擁有惟一的識別方法,這可避免地址重復(fù)問題的發(fā)生。

有一點請大家注意的,每個網(wǎng)絡(luò)設(shè)備的物理地址(MAC)也具有惟一性,可以用來精確表示網(wǎng)絡(luò)上的主機位置,但因為無法利用其地址來建立一套管理方法,所以通常無法達到尋址的功能所以才設(shè)計出IP的尋址方法。

在IPv4中,每臺主機所使用的IP地址都是以32個二進制的數(shù)字來表示,如011110101011001010010110101101111,這種表示法可以確保Internet上的每臺主機都有惟一的地址,因為這些地址都需要經(jīng)過InterNIC的授權(quán)才可以使用。如果知道特定的IP地址,就可以利用這個地址來連接到此主機。

以上的例子中使用32個二進制的數(shù)字來表示IP地址,當(dāng)然也可以使用十六進制(75652D6F)或十進制(196965039)來表示,但這些表示法都很難讓一般用戶記憶。所以IP地址通常使用Dotted Decimal Notation(DDN)表示法,它是將32個二進制的位分為4個字節(jié)(有時也稱為Octet),然后將每個字節(jié)以十進制來表示,而每個字節(jié)之間以一具句點(.)來分隔。因此,上例中的IP地址DDE表示法為117.101.45.111,這個表示法并沒有什么特殊意義,只是利于識別的方便,如圖1-1所示。






根據(jù)IP的定義,每個IP地址都是由兩個部分所組成:網(wǎng)絡(luò)識別碼(Network ID)及主機識別碼(Host ID)。例如,網(wǎng)絡(luò)識別碼包含8位,則主機識別碼就有32-8=24個位。而用來判斷網(wǎng)絡(luò)識別碼的主機識別碼包含的位數(shù),就必須使用“子網(wǎng)掩碼”(Subet Mask)和IP地址來運算,舉例來說,在一般情形下,IP地址為150.23.51.36的網(wǎng)絡(luò)識別碼是“150.23”,而主機識別碼為“51. 36”,如圖1-2所示。






網(wǎng)絡(luò)識別碼在網(wǎng)絡(luò)中是相當(dāng)重要的概念,因為它可用來識別TCP/IP網(wǎng)絡(luò)中的網(wǎng)絡(luò)節(jié)點,而所有位于同一具網(wǎng)絡(luò)節(jié)點中的主機,都擁有相同的網(wǎng)絡(luò)識別碼。換句話說,如果兩臺主機的IP地址中包含相同的網(wǎng)絡(luò)識別碼,則它們可以互相傳遞信息,而無需通過路由器或網(wǎng)關(guān)轉(zhuǎn)送。反之,如果兩臺主機的IP地址經(jīng)過子網(wǎng)掩碼運算后的網(wǎng)絡(luò)識別碼不同,則它們必須通過路由器或網(wǎng)關(guān)轉(zhuǎn)送才可彼此通信。當(dāng)在規(guī)劃局域網(wǎng)時須特別注意這一點,否則隨意地指定IP地址,可能會產(chǎn)生無法通信的問題。

而主機識別碼是用來識別TCP/IP網(wǎng)絡(luò)中的節(jié)點(可能是工作站、服務(wù)器、路由器或其他TCP/IP設(shè)備),每臺設(shè)備的主機識別碼在本地的網(wǎng)絡(luò)節(jié)點都必須惟一,如果同一個網(wǎng)絡(luò)節(jié)點中的兩臺主機具有相同的主機識別碼,則它們會發(fā)生無法連接網(wǎng)絡(luò)的問題,但是在不同網(wǎng)絡(luò)節(jié)點中的兩臺主機可以使用相同的主機識別碼。例如,150.128.3.11和150.128.3.11不以同時存在網(wǎng)絡(luò)中,因為它們的網(wǎng)絡(luò)識別碼和主機識別碼都相同,但是150.128.3.11和145.200.3.11可以同時存在不同的網(wǎng)絡(luò)中,因為它們的主機識別碼雖然相同,但是網(wǎng)絡(luò)識別碼卻不同。


◆ IP地址類別

因為每個IP地址都是由32個二進制的數(shù)字組成,所以理論上來說,應(yīng)該會存在2的32次方個合法IP地址(232=4294967296),但是事實上并沒有如此多的IP地址。目前InterNIC利用控制IP地址中的第一個字節(jié)(前8個位)來區(qū)分為5個IP類別,我們稱它們?yōu)镃lass A、 Class B、Class C、Class D、和Class E、如圖1-3所示。






● Class A
在Class A的網(wǎng)絡(luò)中,每個網(wǎng)絡(luò)都是利用前8個位來定義,因此有時也稱為“/8網(wǎng)絡(luò)”。因為第一個位已被事先定義為二進制的0,所以ClassA的第1個字節(jié)是由00000001~01111111,也就是十進制的1~127,但因為127是個特殊的網(wǎng)絡(luò)識別碼(Lookback Address),所以目前Internet上具有126個Class A網(wǎng)絡(luò)。

Class A使用最后3個字節(jié)(24個位)來表示主機識別碼,因此每個Class A網(wǎng)絡(luò)可以包含的主機數(shù)目為224,也就是16777216臺主機。但是主機識別碼全為1和0表示廣播網(wǎng)絡(luò)地址,因此每個Class A網(wǎng)絡(luò)實際的主機機數(shù)目為16777214,由此可知,所有Vlass A的主機數(shù)目是126*16777214=2113928964。

● Class B
在Class B網(wǎng)絡(luò)中,每個網(wǎng)絡(luò)都是利用前16個位來定義,因此有時也稱為“/16網(wǎng)絡(luò)”。因為前2個位已被事先定義為二進制的10,所以Class B的第一個字節(jié)是由10000001~10111111,也就是十進制的128~191,而第二個字節(jié)也是網(wǎng)絡(luò)識別碼,所以Internet上具有64*28=16384個Class B網(wǎng)絡(luò)。
Class B使用最后2個字節(jié)(16個位)來表示主機識別碼,因此每個Class B網(wǎng)絡(luò)可以包含的主機數(shù)目為216 ,也就是65536臺主機。但是主機識別碼,因此每個Class B網(wǎng)絡(luò)可以包含的主機數(shù)目為65534,由此可知,所有Class B的主機數(shù)目是167384 * 65534=1073709056。

● Class C
在Class C的網(wǎng)絡(luò)中,每個網(wǎng)絡(luò)都是利用前24個位來定義,因此有時也稱為“/24網(wǎng)絡(luò)”。因為前3個位已被事先定義為二進制的110,所以Class C的第一具個字節(jié)是由11000001~11011111,也就是十進制的192~223,而第2和第3個字節(jié)也是網(wǎng)絡(luò)識別碼,所以目前Internet上具有32 * 216=2097152個Class C網(wǎng)絡(luò)。
Class C使用最后1個字節(jié)(8個位)來表示主機識別碼,因此每個Class C網(wǎng)絡(luò)可以包含的主機數(shù)目為28,也就是256臺主機。但是主機識別碼全為1和0表示廣播及網(wǎng)絡(luò)地址因此實際的主機數(shù)目為254,而所有Class C的主機數(shù)目是254 *2097152=532676608。


● Class D
Class D的IP 地址只供多點發(fā)送(Multicast)的群組計算機使用,也就是說以這些地址發(fā)送的信息可以同時發(fā)送到多臺主機,這些地址是用在某些特殊的軟件組或服務(wù)。
Class D網(wǎng)絡(luò)的前4個位已被事先定義為二進制的1110,所以Class D的第一個字節(jié)是由11100001~1101111,也就是十進制224~239,所以目前有16個Class D網(wǎng)絡(luò),但這些地址并不提供給一般的Internet主機使用,它可以不具有子網(wǎng)掩碼。

● Class E
Class E的IP 地址是屬于實驗用的地址,這些地址并不提供給一般的Internet 主機使用,它的前5個位已被子事先定義為二進制的11110,所以Class E的第一個字節(jié)是由11110001~11110111,也就是十進制的240~254,所以目前有15個Class E網(wǎng)絡(luò)。

● 私有IP地址(Private IP Address)


如果用戶的網(wǎng)絡(luò)不不連接Internet,那么無湎為了使用TCP/IP通信協(xié)議而向InterNIC或ISP取得已登錄的IP 地址使用權(quán),在此情形下,IANA(Internet Assigned Numbers Authority)建議使用“私有IP地址”。這些地址都是由IANA所保留,主要是提供在TCP/IP網(wǎng)絡(luò)上的私人使用,Internet上的主機也不可使用這些地址,而這些私有IP地址正是NAT運作上所使用的地址。

這些私有IP地址的范圍如表1-2所示





================================

注:
有些人習(xí)慣將這些IANA保留IP地址稱為虛擬IP,而開放在Internet上的地址則稱為物理IP地址,但是作者認為這些名稱并不合適。因為這些保留的IP地址也是由RFC正式定義的IP地址,何稱“虛擬”呢?所以我們將用“內(nèi)部IP”表示從IANA所保留的IP地址,而在Internet上使用的IP地址則是以“外部IP”來表示。

=================================


◆ 子網(wǎng)掩碼(Subnet Mask)

子掩碼和一般的IP地址相同,都是由32個二進制的數(shù)字所組成,它的惟一功能就是辨別IP地址中網(wǎng)絡(luò)識別碼和主機識別碼部分為什么,這在網(wǎng)絡(luò)傳輸上相當(dāng)重要,因為具有相同網(wǎng)絡(luò)識別碼的主機要以直接地通信,而不同網(wǎng)絡(luò)識別碼的主機就需要通過網(wǎng)關(guān)來轉(zhuǎn)送信息。
在利用子網(wǎng)掩碼判斷IP地址的網(wǎng)絡(luò)識別碼和主機識別碼的部分時,要按以下的步驟來運算我們在此以一個Class B的IP地址——150.23.56.25和Clalss B默認的子網(wǎng)掩碼---255.255.0.0為例。



將IP地址轉(zhuǎn)換為二進制表示法

在所有的子網(wǎng)掩碼運算和子網(wǎng)分割運算中,所有的IP地址及子網(wǎng)掩碼都必須先轉(zhuǎn)換為二進制表示法。在本例中150.23.56.25的二進制表示法為
10010110000101110011100000011001


===============================

注:
在轉(zhuǎn)換為二進制表示法時須注意一點,如果不足8位時須以0補足,例如56的二進制表示法應(yīng)寫成“00111000”,而不是“111000”。

===============================



將子網(wǎng)掩碼轉(zhuǎn)換為二進制表示法
在本例中子網(wǎng)掩碼255.255.0.0的二進制表示法為1111111111111110000000000000000,而各種類型網(wǎng)絡(luò)默認的子網(wǎng)掩碼如表1-3所示。





將以二進制表示法的IP地址和子網(wǎng)掩碼利用“AND”運算
所謂“AND”運算是指真值表中“與”的運算,只要二者其中有一個是0,則運算后值就為0,只有在二者都為1的情形下才會為1。有關(guān)“AND”運算的結(jié)果如下所示:

1 AND 1 = 1 1 AND 0 = 0
0 AND 1 = 0 0 AND 0 = 0

在了解“AND”運算后,就可以將以二進制表示法的IP地址和子網(wǎng)掩碼利用“AND”來運算,運算的過程及結(jié)果如圖1-4所示。







運算結(jié)果中非0的部分為網(wǎng)絡(luò)識別碼

在IP地址和子網(wǎng)掩碼利用“AND”運算后,它的結(jié)果中不是0的部分就是網(wǎng)絡(luò)識別碼,在本例中為150.23,但是通常習(xí)慣用0來將它寫成類似IP地址的形態(tài),如150.23.0.0。在發(fā)送信息前,IP即是以這種方法來判斷目的地的主機是否存在本地網(wǎng)絡(luò),如果目的地主機位于遠程網(wǎng)絡(luò),IP就會將此信息發(fā)送到路由或默認的網(wǎng)關(guān),如圖1-5所示。






由以上的結(jié)果可知,如果要避免尋址及路由問題,應(yīng)該確保在同一網(wǎng)絡(luò)區(qū)域上的所有TCP/IP主機都使用相同的子網(wǎng)掩碼。


◆ NAT原理及主要功能

前面內(nèi)容介紹了IP的基本概念,接下來將開始介紹有關(guān)NAT的內(nèi)容。所謂“網(wǎng)絡(luò)地址轉(zhuǎn)換”(Network Address Translation, NAT),它是定義于RFC 1631中的Internet標(biāo)準(zhǔn),主要是用來簡化及保存IP地址,它可讓原本無法上網(wǎng),但是可以使用內(nèi)部IP地址的主機可以成功地連接Internet。這可大大減少IP地址的需求,因為基本上整個內(nèi)部網(wǎng)絡(luò)都可憑借NAT上的一具外部IP來連接Internet,如圖1-6所示。







當(dāng)NAT作用于路由器時,通??蛇B接兩組以上的網(wǎng)絡(luò)上在轉(zhuǎn)送數(shù)據(jù)包到其他網(wǎng)絡(luò)前,將內(nèi)部IP地址轉(zhuǎn)換為Internet上合法的外部IP地址。此外,NAT還可以對外只用一個地址代表整個網(wǎng)絡(luò),這樣可以提供更高的安全性,將整個內(nèi)部網(wǎng)絡(luò)隱藏在該地址后,將這種安全性及地址保存的雙重功能的程序通常安裝在遠程訪問的環(huán)境。目前許多的路由器支持NAT這項功能,其他如Linux中的IP偽裝(IP Masquerade),F(xiàn)reeBSD中的NATD或Windows上的Sygate軟件都具有相同的功能。


使用NAT的優(yōu)點如下:

● 減少IP地址使用量。在使用NAT以后,Internet上的主機會誤以為它正與NAT服務(wù)器進行通信,因為它們并不知在NAT主機后包含一個局域網(wǎng)。于是,回傳的數(shù)據(jù)包會直接發(fā)送到NAT服務(wù)器,然后NAT服務(wù)器再將這個數(shù)據(jù)包頭文件目的地的IP地址更為局域網(wǎng)里真正發(fā)出信息的計算機。

● 可在NAT服務(wù)器上的外部IP上建立多個“IP Alias”,當(dāng)收到傳給那些IP Alias的請求時,NAT可以把這些請示求轉(zhuǎn)送給內(nèi)部網(wǎng)絡(luò)中提供服務(wù)的服務(wù)器。

● 負載平衡(Load Balancing),也就是說,將同一個IP Alias請求分別導(dǎo)向到其他運行相同服務(wù)的服務(wù)器,可減少單一服務(wù)器的工作量。
雖然使用NAT具有以上的優(yōu)點,但是在某些情況下,必須注意NAT潛藏的缺點,以下舉出幾個例子以供讀者參考:

● 理論上,NAT服務(wù)器只使用一個IP地址,就可涵蓋無數(shù)個內(nèi)部IP地址,但是許多網(wǎng)絡(luò)通信協(xié)議或應(yīng)用程序都需要真正點對點的連接。

● 有些數(shù)據(jù)包是從出發(fā)地到目的地過程中的過程中都不能修改,像IP安全體系結(jié)構(gòu)就不可以使用NAT進行映射,因為數(shù)據(jù)包的頭文件中含有數(shù)字簽名,如果頭文件被更改(即使是任何一個字),這個數(shù)字簽名便從此失去效力。

● 雖然NAT對于無法取得足夠IP地址的企業(yè)組織來說,它是一個極佳的解決方案,但當(dāng)該組織必須合并多個局域網(wǎng)時,必須仔細重新規(guī)劃IP分配,否則很容易產(chǎn)生IP重復(fù)的情況(因為每個局域網(wǎng)都使用內(nèi)部IP地址)。

● NAT通常被人視為增加計算機安全性的保護措施,但是如果入侵者可以控制NAT服務(wù)器,那么整個局域網(wǎng)就會暴露在Internet當(dāng)中,因此NAT并不能拿來代替防火墻使用。
NAT依其作用的方向性可區(qū)分兩種類型:

● Source NAT (SNAT):所謂的Source NAT 就是改變第一個數(shù)據(jù)包的來源地址,它永遠會在數(shù)據(jù)包發(fā)送到網(wǎng)絡(luò)之前完成,數(shù)據(jù)包偽裝就是一具SNAT的例子。

● Destination NAT (DNAT):Destination NAT剛好與SNAT相反,它是改變第一個數(shù)據(jù)懈的目的地地址,如平衡負載就是屬于DNAT。







◆ NAT服務(wù)器的安裝與使用

經(jīng)過以上兩個小節(jié)的說明,想必各位讀者現(xiàn)在對于IP及NAT服務(wù)器的原理一定有所了解,接下來將實際進行NAT服務(wù)器的安裝。本書中的環(huán)境假設(shè)NAT服務(wù)器目前只具備一張網(wǎng)卡(負責(zé)連接Internet),而且這張網(wǎng)卡使用以下的外部IP地址配置:

● 網(wǎng)卡名稱:eth0。

● IP地址:24.68.32.118。

● 子網(wǎng)掩碼:255.255.252.0。

而為了連接內(nèi)部網(wǎng)絡(luò)(本書假設(shè)為192.168.1.x)必須再新建一張網(wǎng)卡,它使用內(nèi)部IP地址配置:

● 網(wǎng)卡名稱:eth1。

● IP地址:192.168.1.1.

● 子網(wǎng)掩碼:255.255.252.0。


圖1-8所示是本書范例使用的網(wǎng)絡(luò)體系結(jié)構(gòu)。






iptables安裝

在安裝NAT服務(wù)器前,必須確定系統(tǒng)上已安裝iptables程序,如果不知是否已經(jīng)安裝iptables,可以使用以下的方法來判斷:

[root @ ns l root]# rpm-qa iptables
Iptables-1.2.7a-2


如果尚未安裝iptables,可以在第一張安裝光盤中的/Red Hat/RPMS目錄下,找到名為“iptables-1.2.7a-2.i386.rpm”的安裝程序,然后按照以下的方法進行安裝:

[root @ ns l root]# rpm –ivh iptables-1.2.7a-2.i386.rpm

為了使開機時能自動運行iptablas,可以在終端機窗口中輸入“ntsysv”指令,然后在出現(xiàn)的畫面中,利用上下方向鍵將光標(biāo)移到菜單中的“iptables”項目(同時確定ipchains選項沒有被選中),然后按空格鍵以選擇,最后利用Tab鍵將光標(biāo)移到“確定”按鈕并按Enter鍵即完成設(shè)置,如圖1-9所示。






網(wǎng)卡安裝

在安裝iptables程序后,接下來我們將安裝第二張網(wǎng)卡連接內(nèi)部網(wǎng)絡(luò),以下是逐步的安裝說明。
為了避免安裝時的失敗,建議先準(zhǔn)備一張Linux支持的網(wǎng)卡,如果不確定這張網(wǎng)卡是否可用,可到以下網(wǎng)址查閱(本書以Red Hat為例):

http:// hardware.redhat.com/

插入網(wǎng)卡并啟動電源后,Linux會自動檢測這張網(wǎng)卡,然后Linux會要求輸入IP地址、子網(wǎng)掩碼、網(wǎng)關(guān)和DNS服務(wù)器IP地址等配置信息。
啟動第二張卡。

[root @ ns l root]# ifup eth l


使用IP Forwarding功能

在安裝第二張網(wǎng)卡后,接下來須使用IP Forwarding的功能,代替內(nèi)部網(wǎng)絡(luò)的主機發(fā)送數(shù)據(jù)包,以下是使用的步驟及說明:

① 修改/etc/sysctl.conf文件內(nèi)容,將“net .ipv4.ip_forward=”這行設(shè)置為“1”。

[root @ ns l root]# vi /etc/sysctl.conf
Net.ipv4.ip_forward=1


② 使用IP Forwarding功能。在此介紹兩種使用IP Forwarding功能方法,可以直接運行以下的指令:

[root @ ns l root]# echo 1 > /proc/sys/net/ipv4/ip_forward

或在/etc/sysconfig/network文件中,加入以下的記錄:

[root @ ns l root]# vi /etc/sysconfig/network


③ 最后重新加載/etc/rc.d/init.d/xinetd,以便設(shè)置生效:

[root @ ns l root]# /etc/rc.d/init.d/xinetd reload
重新加載配置設(shè)置: 確定 ]


④ 在此可以先忽略安全性的考慮,等安裝完成并測試成功后,再進行安全管理。以下的指令表示允許所有內(nèi)部網(wǎng)絡(luò)的主機連接到Internet,這也是一般所稱的“IP偽裝”(IP Masquerading):

[root @ ns l root] # iptables –t nat –A POSTROUTING –s 192.168.1.0/24 –j MASQUERADE

但有時使用以上的指令后,F(xiàn)TP會無法正常運作,此時可以嘗試以下的指令:

[root @ ns l root# modprobe ip _conntrack_ftp
[root @ ns l root ] # modprobe ip_nat_ftp


客戶端設(shè)置

在NAT服務(wù)器設(shè)置后,最后的步驟就是客戶端的設(shè)置,本書在此以Windows 2000客戶端為例。以下是設(shè)置的步驟與說明:

① 選擇桌面上的“網(wǎng)上鄰居”圖標(biāo),然后右擊并選擇菜單中的“屬性”選項,系統(tǒng)即會出現(xiàn)“網(wǎng)絡(luò)和撥號連接”窗口,如圖1-10所示。







② 在出現(xiàn)的“網(wǎng)絡(luò)和撥號連接”窗口中選擇“本地連接”圖標(biāo),然后右擊并選擇要菜單中的“屬性”選項,系統(tǒng)會隨即出現(xiàn)“本地連接屬性”窗口,如圖9-11所示。






③ 在出現(xiàn)的“本地連接屬性”窗口中,選擇“Internet協(xié)議(TCP/IP)”選項,并單擊右下角的“屬性”按鈕,系統(tǒng)會隨即出現(xiàn)“Internet協(xié)議(TCP/IP)屬性”窗口,如圖1-12所示。







④ 在出現(xiàn)“Internet協(xié)議(TCP/IP)屬性”窗口中,首先選擇“使用下面的IP地址”選項,然后輸入以下的信息:

● “IP地址”字段:輸入192.168.1.X,本書在此以192.168.1.5為例。

● “子網(wǎng)掩碼”字段:輸入255.255.255.0,必須與NAT服務(wù)器內(nèi)部IP使用的子網(wǎng)掩碼相同。

● “默認網(wǎng)關(guān)”字段:這是最重要的設(shè)置,必須輸入NAT服務(wù)器的內(nèi)部IP(此處是192.168.1.1),千萬不可填入NAT服務(wù)器的外部IP,否則數(shù)據(jù)包永遠也無法傳到NAT服務(wù)器(因為“網(wǎng)絡(luò)ID”不同即無法通信)。

● “首選DNS服務(wù)器”字段:如果網(wǎng)絡(luò)中有DNS服務(wù)器,就可以在此輸入DNS服務(wù)器的IP地址。


⑤ 完成客戶端的設(shè)置。



◆ iptables在防火墻上的運用

介紹安裝NAT服務(wù)器時簡要地說明了iptables程序,其實它還有許多功能尚未說明,因此本節(jié)將再進一步說明iptables程序在防火墻上的運用。


iptables體系結(jié)構(gòu)與處理流程

“iptables”程序的功能都是屬于數(shù)據(jù)包(Packet)層的工作,而這些工作都是利用不同的“規(guī)則表”(Rule Table)來定義的。在iptables中包含3個默認的Rule Table:Filter Table、NAT Table與Mangle Table,而每一個Rule Table又是由數(shù)個“鏈”(Chain)所組成。舉例來說,在Filter Table中除了定制的鏈之外,還包含3個內(nèi)置的鏈:INPUT Chain、 OUTPUT Chain和FORWARD Chain,如圖1-13所法。







Filter Table是iptables中的默認Rule Table,也就是說,在運行時如果沒有指定其他參數(shù),則iptables會套用Filter Table中的規(guī)則,令外兩種Rule Table都需要配合指令參數(shù)使用。而在防火墻的運用上,iptables主要是使用默認的Filter Table功能,所以有人就稱為“包過濾器”(Packet Filter)。Filter Table可以先檢索到數(shù)據(jù)包,然后通過預(yù)選取一義的規(guī)則(Rule)來判斷是否發(fā)送此數(shù)據(jù)包。由于它運行于網(wǎng)絡(luò)層,所以不論是否發(fā)送數(shù)據(jù)包,都不會影響到數(shù)據(jù)包中的數(shù)據(jù)內(nèi)容。


=================================
注:
所謂“包過濾”是指利用一具軟件查看經(jīng)過數(shù)據(jù)包的表頭(Header),而由此決定整個數(shù)據(jù)包的處理,可能的處理方式有:丟棄這個數(shù)據(jù)包(DROP)、接受這個數(shù)據(jù)包(ACCEPT),或其他更復(fù)雜的動作。

=================================


數(shù)據(jù)包過濾原理

圖1-14是在Filter Table中內(nèi)置的3個鏈與防火墻發(fā)送數(shù)據(jù)包之間的流程圖。






圖1-14表示,當(dāng)一個數(shù)據(jù)包抵達圖9-13中的任何一個鏈,則這個鏈就會開始檢查這個數(shù)據(jù)包,以決定后續(xù)的處理,如丟棄或接受。

其實每個鏈都是一個檢查列表,它會利用預(yù)先設(shè)置的規(guī)則來對數(shù)據(jù)包進行判斷,如果判斷的結(jié)果不符合(Mach),就會交給鏈中的下一個規(guī)則繼續(xù)處理。如果到最后已沒有任何規(guī)則可供判斷,那內(nèi)核就會利用鏈的規(guī)則(Policy)來作出決定,但是為了安全起見,規(guī)則通常會要求內(nèi)核丟棄此數(shù)據(jù)包。
以下就是防火墻發(fā)送數(shù)據(jù)包的流程說明:

① 當(dāng)防火墻攔截到數(shù)據(jù)包后,內(nèi)核首先會檢查此數(shù)據(jù)包的目的地(Destination),而這個檢查的過程便稱為“路由(Routing)。

② 如果目的地址為本機,則此數(shù)據(jù)包就會流向INPUT鏈,而由本機程序來負責(zé)接管。然后由OUTPUT鏈處理,如果此數(shù)據(jù)包可被此處的規(guī)則接受,則這個數(shù)據(jù)包可送到它所指向的接口。

③ 此時如果內(nèi)核沒有啟動轉(zhuǎn)送功能(Forwarding),或不知道如何轉(zhuǎn)送此數(shù)據(jù)包,則這個數(shù)據(jù)包就會被丟棄。

④ 如果轉(zhuǎn)送功能已啟動,那么此數(shù)據(jù)包就會被指向另一個網(wǎng)絡(luò)接口,而流向FORWARD鏈,如果此數(shù)據(jù)包可被此處的規(guī)則接受,這個數(shù)據(jù)包就可送到它所指向的接口。


iptables程序使用

在了解iptables程序的基本原理后,接下來的內(nèi)容將介紹iptables程序的使用方法以及各個選項與參數(shù)。Iptable的語法結(jié)構(gòu)如表1-4所示。






Table類型

“Table類型”是指目前內(nèi)核的Rule Table類型,而在指定Table 類型時必須配合“- -table”或“-t”參數(shù)的使用,表1-5列出了可供設(shè)置的Table類型及說明。






指令(Command)

“指令”表示要求iptables程序運行的工作,而在每一個iptables指令中,只允許使用一個指令。除了“help”指令之外,所有的指令都必須用大寫(Upper-Case)字母來表示,表1-6列出了可供使用的指令名稱及說明。





參數(shù)
在指定iptables參數(shù)選項時,如果在選項前加入驚嘆號“!”則表示否定的意思,例如“-s! localhost”是表示除了localhost的來源地址都可以??梢悦萌绫?-7所示的參數(shù)。






==============================

注:
在來源(-s)和目的地(-d)的表示法有以下3種:
使用完整的主機名稱,如www.jschouse.com或localhost。
使用IP地址,如24.68.53.226。
使用網(wǎng)絡(luò)地址,如192.168.1.0/24或192.168.1.0/255.255.255.0,兩者都是包含192.168.1.1~192.168.1.255的IP地址。斜線后的數(shù)字表示子網(wǎng)掩碼的位數(shù),例如/8表示255.0.0.0。

===============================


選項

在iptables指令最后一部分為“選項”,但這部分的可設(shè)置項目會隨著前面的“參數(shù)”而變,因此本書在此分別介紹不同情形下的選項說明:
通信協(xié)議選項
在“參數(shù)”部分如果使用“- -protocol”或“-p”,可以指定使用的通信協(xié)議種類,其中包括TCP、UDP、ICMP或全部(all)。此處的寫法沒有區(qū)分大小寫,而且能以數(shù)學(xué)代替,如果要知道每種通信協(xié)議代表的數(shù)字,可以查閱/ etc/protocols文件中的內(nèi)容,例如tcp為6、udp為17而icmp為1。表1-8列出了在選擇不同通信協(xié)議時可用的選項名稱及說明。






● 目標(biāo)選項

在“參數(shù)”部分如果使用“-j”或“--jump”,就可設(shè)置此規(guī)則的“目標(biāo)”(Target),這可說是最重要的設(shè)置項目,如果少了這個選項,此規(guī)則就形同虛設(shè)。在此選項后必須使用大寫來指定規(guī)則的目標(biāo),其中可用的目標(biāo)選項及說明如表1-9所示。






◆ 保存iptables設(shè)置

因為使用iptables程序所建立的規(guī)則只會保存在內(nèi)存中,因此如果要重新啟動計算機,那么這些設(shè)置都將消失。如果希望某些規(guī)則可以在每次開機后都生效,則必須將此規(guī)則保存在/etc/sysconfig/iptables文件中。
要將規(guī)則保存在/etc/sysconfig/iptables文件中并不需要手動輸入,可利用以下的指令進行:

[root @ ns l root] # /etc/rc.d/init.d /iptables save
保存目前的設(shè)置到/etc/sysconfig/iptables:確定 ]

[root @ ns l root] # /sbin/service iptables save
保存目前的設(shè)置到/etc/sysconfig/iptables:確定 ]


在運行以上的指令后,iptables初始指令文件會運行/sbin/iptables-save程序,并且將結(jié)果寫入/etc/sysconfig/iptables文件中。以下是/etc/sysconfig/iptables文件的范例內(nèi)容:






因為/etc/sysconfig/iptables 文件只允許管理員讀取,所以不必擔(dān)心有關(guān)數(shù)據(jù)包篩選規(guī)則的內(nèi)容會泄露到其他用戶。

[root @ ns l root] # ls –l /etc/sysconfig/iptables
-rw------- l root root 490 4 月 9 13:24 /etc/sysconfig/iptables

在將iptables規(guī)則存入/etc/sysconfig/iptables文件后,下次主機重新啟動時,iptables初始指令文件會運行/sbin/iptables-restore程序來使用保存規(guī)則。


◆ 范例練習(xí)

以下將通過各種不同類型的范例來說明iptables的實際設(shè)置,讀者可以先由這些練習(xí)開始嘗試,待熟練后再加以修改其中的內(nèi)容,以符合實際環(huán)境的需求。

新建鏈
以下的范例將新建一個簡單鏈,可以定制鏈的名稱,不過最多不可超過31個字符,本書在此chain-1為例。在新建后,才可以開始將規(guī)則加入其中,在此應(yīng)該使用“-N”或“- -new-chain”選項:

[root @ ns l root]# iptables –Nchain-n

[root @ ns l root] # iptables –new-chain chain-1

如果使用的鏈名已經(jīng)存在,系統(tǒng)會出現(xiàn)以下的錯誤信息:

iptables:Chain already exists



刪除鏈

以下的范例將刪除一個鏈,這里應(yīng)該用“-X”或“--delete-chain”選項,同時指定要刪除的鏈名:

[root @ ns l root] # iptables –X chain-1

[root @ ns l root ] # iptables --delete-chain chain-]

但是在刪除鏈時需注意以下幾個重點:
● 在此鏈中必須沒有存在任何規(guī)則。

● 此鏈不可為任何規(guī)則的目標(biāo)。

● 不可刪除任何內(nèi)置鏈。

● 如果沒有指定鏈名,可能會誤刪所有用戶定義的鏈。



清空鏈的內(nèi)容

以下的范例清空一個鏈的內(nèi)容,在此應(yīng)該使用“-F”或“- -flush”選項,同時指定要清空的鏈名,否則會清空所有鏈的內(nèi)容:

[root @ ns l root] # iptables –F chain –l

[root @ ns l root ] # iptables –flush chain-l



列出鏈的內(nèi)容


以下的范例將列出鏈的內(nèi)容,在此應(yīng)該使用“-L”或“- -list”選項,同時指定要列出內(nèi)容的鏈名,否則會列出所有鏈的內(nèi)容:

[root @ ns l root ]# iptables –L chain –l

[root @ ns l root ] # iptables --list chain-l

因為目前范例為新建的鏈,因此列出的內(nèi)容中只包含字段名稱,如果希望得到較詳細的內(nèi)容,可以同時使用“-V”選項:

Chain chain -1 (0 references)
Target prot opt source destination



關(guān)閉所有服務(wù)

為了達到最高的安全性,可以禁止所有進出INPUT Chain、FORWARD Chain和OUTPUT Chain的數(shù)據(jù)包,但因為此舉具有最高的優(yōu)選權(quán),即如果選設(shè)置禁止服務(wù),此后的所有允許的規(guī)則都將失效,所以建議將此步驟列為最后的步驟。以下是關(guān)閉所有服務(wù)的方法:

[root @ ns l root]# -P INPUT DENY
[root @ ns l root]# -P FORWARD KENY
[root @ ns l root]# -P OUPPUT DENY

提醒讀者一點,在設(shè)置任何的規(guī)則后,千萬不可重新啟動iptables服務(wù),否則所有的設(shè)置都會被清空。
[root @ ns l root ]# /etc/rc.d /init.d/iptables restart
釋放所有目前的設(shè)置與用戶定義的chains:確定 ]清除所有的設(shè)置和用戶定義的chains:確定]
套用iptables防火墻設(shè)置:確定 ]




開放特定服務(wù)

如果主機上提供某些服務(wù),可以利用啟動該服務(wù)的連接端口,允許客戶端使用該服務(wù),以下的范例表示開放FTP服務(wù),因為FTP使用連接端口20和21,所以必須使用兩行指令:

[root @ ns l root] # iptables –A INPUT –i ethl –p tcp --dport20 –j ACCEPT
[root @ ns l root] # iptables –A INPUT –i ethl –p tcp --dport21 –j ACCEPT


===========================
注:
也可以直接使用服務(wù)名稱來替代連接商品號碼,請參考/etc/services文件內(nèi)容。

===========================



關(guān)閉特定服務(wù)

關(guān)閉原本提供的服務(wù),其設(shè)置方法和開放服務(wù)時很相似,只是將“-j ACCEPT”修改為“-j DROP”,以下的范例表示關(guān)閉原來開放的FTP服務(wù):

[root @ ns l root] # iptables –A INPUT –i ethl –p tcp –d
port20 –j DROP
[root @ ns l root] # iptables –A INPUT –i ethl –p tcp --dport21 –j DROP

數(shù)據(jù)包過濾

如果希望禁止網(wǎng)絡(luò)上某臺主機或某個網(wǎng)絡(luò)節(jié)點發(fā)送數(shù)據(jù)包,可以使用“數(shù)據(jù)包過濾”功能。以下的范例會禁止所有來自192.168.1.0/24 網(wǎng)絡(luò)區(qū)段的主機,連接IP地址為24.76.251.26的Web服務(wù)器:
[root @ ns l root ]# iptables –A FORWARD –p TCP –s 192.168.1.0/24-d 24.76.251.26—dport www –j DROP



◆ 防火墻簡單設(shè)置

除了以上利用iptables程序的方式來設(shè)置防火墻外,在Red Hat Linux 中也包含了名為“lokkit”的防火墻設(shè)置程序,它最大的好處是允許用戶利用預(yù)先設(shè)置的選項來進行防火墻設(shè)置,雖然它的功能不如iptables程序強大,但是它極易上物的特性,確實獲得了許多用戶的青睞。所以在這個小節(jié)中,將介紹“loddik”程序的使用與設(shè)置時的選項說明。
要啟動“lokkit”程序,可以在X Window或文字模式下輸入“lokkit”,系統(tǒng)就會啟動“Firewall Configuration”畫面,如圖1-15所示。
在“Firewall Configuration”畫面的“Security Level”選項中,共包含3種內(nèi)置的安全性設(shè)置,即High、Medium和No firewall。以下是這些內(nèi)置安全性設(shè)置的說明:



Hige

這是安全性最高的選項,如果選擇此選項,在默認的情形下,防火墻只會開放以下兩種服務(wù)的功能:

● DNS回應(yīng)。

● DHCP請求。

如果主機目前已連接到Internet,但是并不想提供任何的服務(wù),這是最好的選項。








Medium

這是Red Hat Linux默認的防火墻設(shè)置,如果選擇此選項,在默認情況下系統(tǒng)會禁止以下服力:

所有連接端口號碼小于1023的服務(wù),如FTP、SSH、telnet和HTTP。

● NFS服務(wù)(連接端口2049)。

● X字型服務(wù)器(連接端口7100)

● X Window連接服務(wù)(連接端口6000~6009)。


===============================
注:
在高安全性和中等安全性的防火設(shè)置下,NIS與LDAP等網(wǎng)絡(luò)驗證方式將無法使用。

===============================


No firewall

這個選項表示沒有啟動防火墻的功能,也就是說,系統(tǒng)可以提供客戶端所有服務(wù),而且不作任何安全性的檢查,它比較適合使用在內(nèi)部的網(wǎng)絡(luò)環(huán)境(不連接Internet)或系統(tǒng)測試時。

如果這些內(nèi)置的安全性設(shè)置無法實際需求,那也可以利用定制的方式來設(shè)置。首先需將光標(biāo)移到“Custom”按鈕并按Enter鍵,然后系統(tǒng)會出現(xiàn)“Firewall Configuration-Custom”畫面,如圖1-16所示。







Trusted Devices

如果有多個網(wǎng)絡(luò)設(shè)備在定制服務(wù)類型時,要在此字段選擇指定的網(wǎng)絡(luò)接口設(shè)備,如eth0(第一張網(wǎng)卡)或ppp0(第一部調(diào)制解調(diào)器),表示允許遠程用戶訪問所有通過此設(shè)備的服務(wù),而不受防火墻的限制。所以如果希望限制某一接口的數(shù)據(jù)包通過,不可選擇此接口名稱,在此作者不建議使用任何連接到公眾網(wǎng)絡(luò)(如Internet)的接口,以降低網(wǎng)絡(luò)的安全性。



Allow incoming

選擇這些選項可以指不定期允許通過防火墻的服務(wù)。以下是可供選擇的網(wǎng)絡(luò)服務(wù)類型:

● DHCP:使用此選項,則會允許使用此接口的DHCP服務(wù)器服務(wù),以響應(yīng)來自客戶端的IP地址租用請求,通常建議使用DHCP。

● SSH:Secure Shell (SSH)是用來登錄遠程主機與運行指令的工具。
Telnet :Telnet 也是一種用來登錄遠程主機的工具,但是由于Telnet連接并未加密,所以在此不建議選擇此選項,以加強系統(tǒng)的安全性。

● WWW(HTTP):選擇此選項可以允許WWW服務(wù)器的訪問,但是如果要使用安全性的HTTP連接(HTTPS),則需要在下方“其他端口”的字段中設(shè)置。

● Mail(SMTP):如果使用此選項可以允許電子郵件通過防火墻,使遠程主機可以直接連接到服務(wù)器來發(fā)送郵件,但是如果客戶端利用POP3或IMAP通信協(xié)議來下載郵件,就不需使用這個選項。因為不當(dāng)?shù)腟MTP設(shè)置會造成遠程主機利用此服務(wù)器來發(fā)送垃圾郵件,所以在決定是否開放此選項前,需慎重考慮。

● FTP:這個選項可以允許客戶端與FTP服務(wù)器間的互相發(fā)送文件。

● Other ports:如果要允許訪問的服務(wù)沒有列在以上的列表中,可以再以字段輸入這些服力,而在輸入時必須使用“服務(wù)名稱:通信協(xié)議名稱”的格式。例如,如果要允許SMTP通信協(xié)議通過防火墻,可設(shè)置如下:


Imap : tcp

也可以直接指定連接端口號碼,例子如允許邊接端口1234上的UDP數(shù)據(jù)包通過防火墻,則可設(shè)置如下:
1234 :udp


◆ iptables配置文件參考范例

本章到此已說明了以iptables程序來設(shè)置防火墻的基本內(nèi)容,如果要將防火墻的功用發(fā)揮到極致,除了具有正確的概念外,平日的實踐更不可或缺的。而在本節(jié),將提供一個iptables配置文件的范例以供讀者參考。

因為iptables是以指令為主的防火墻設(shè)置工具,所以在設(shè)置上終究有其不便之處。鑒于此,多數(shù)有經(jīng)驗的管理員都習(xí)慣將iptables的設(shè)置以指令文件的方式保存,然后在主機啟動時自動運行所有的iptables指令,以避免經(jīng)常性的輸入和錯誤。
以下iptables配置文件的建立及使用方式:

① 新建iptables配置文件,本書以/etc/rc.d/firewall-1為例。

[root @ ns l root]# vi/etc/rc.d/firewall-1

② 修改iptables配置文件的訪問權(quán)限

[root @ ns l root ]# chmod 774/etc/rc.d/firewall-1

[root @ ns l root ]# chmod ug +rwx/etc/rc.d/firewall-l

③ 在etc/rc.d/rc.local文件的最后一行,回入iptables配置文件的完整路徑。

[root @ ns l root ] # vi/etc/rc.d/rc.local

在運行以上的3個步驟后,每次計算機重新啟支系統(tǒng)都會自動運行這里所設(shè)置的iptables配置文件(/etc/rc.d/firewall-l)。而在本章的最后將提供一個iptables配置文件的范例內(nèi)容,讀者可自己修改來符合需求。

Iptables配置文件范例內(nèi)容





本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Linux下的Virtual Box 網(wǎng)絡(luò)配置指南(長文) 轉(zhuǎn)自NKBBS by Ixor
linux iptable 使用指南 – 愛開源
iptables NAT規(guī)則
Linux系列-Red Hat5平臺下的Iptables防火墻應(yīng)用(二)Iptables中必須掌握的兩個技術(shù)S
網(wǎng)絡(luò)地址轉(zhuǎn)換NAT原理及應(yīng)用
iptables 的使用
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服