久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

iptables 的使用

 SamBookshelf 2013-08-08

IPTABLES的使用

【實驗?zāi)康摹?/span>

1.理解iptables工作機理
2.
熟練掌握iptables包過濾命令及規(guī)則
3.
學(xué)會利用iptables對網(wǎng)絡(luò)事件進行審計
4.
熟練掌握iptables NAT工作原理及實現(xiàn)流程
5.
學(xué)會利用iptables squid實現(xiàn)Web應(yīng)用代理

【實驗原理】

一.iptables簡介
   
從1.1內(nèi)核開始,linux就已經(jīng)具有包過濾功能了,,在2.0的內(nèi)核中我們采用ipfwadm來操作內(nèi)核包過濾規(guī)則,。之后在2.2內(nèi)核中,,采用了大家并不陌生的ipchains來控制內(nèi)核包過濾規(guī)則。在2.4內(nèi)核中我們不再使用ipchains,,而是采用一個全新的內(nèi)核包過濾管理工具—iptables,。這個全新的內(nèi)核包過濾工具將使用戶更易于理解其工作原理,更容易被使用,,當然也將具有更為強大的功能,。
    iptables只是一個內(nèi)核包過濾的工具,iptables可以加入,、插入或刪除核心包過濾表格(鏈)中的規(guī)則,。實際上真正來執(zhí)行這些過濾規(guī)則的是netfilter(Linux內(nèi)核中一個通用架構(gòu))及其相關(guān)模塊(如iptables模塊和nat模塊)。
    netfilter提供了一系列的“表(tables)”,,每個表由若干“鏈(chains)”組成,,而每條鏈中有一條或數(shù)條規(guī)則(rule)組成。我們可以這樣來理解,,netfilter是表的容器,,表是鏈的容器,鏈又是規(guī)則的容器,。
    netfilter系統(tǒng)缺省的表為“filter”,,該表中包含了INPUT、FORWARD和OUTPUT 3個鏈,。每一條鏈中可以有一條或數(shù)條規(guī)則,,每一條規(guī)則都是這樣定義的“如果數(shù)據(jù)包頭符合這樣的條件,就這樣處理這個數(shù)據(jù)包”,。當一個數(shù)據(jù)包到達一個鏈時,,系統(tǒng)就會從第一條規(guī)則開始檢查,看是否符合該規(guī)則所定義的條件:如果滿足,,系統(tǒng)將根據(jù)該條規(guī)則所定義的方法處理該數(shù)據(jù)包,;如果不滿足則繼續(xù)檢查下一條規(guī)則。最后,,如果該數(shù)據(jù)包不符合該鏈中任一條規(guī)則的話,,系統(tǒng)就會根據(jù)預(yù)先定義的策略(policy)來處理該數(shù)據(jù)包。


圖21-2-1  網(wǎng)絡(luò)數(shù)據(jù)包在filter表中的流程

    數(shù)據(jù)包在filter表中的流程如圖21-2-1所示,。有數(shù)據(jù)包進入系統(tǒng)時,,系統(tǒng)首先根據(jù)路由表決定將數(shù)據(jù)包發(fā)給哪一條鏈,則可能有三種情況:
    (1)如果數(shù)據(jù)包的目的地址是本機,,則系統(tǒng)將數(shù)據(jù)包送往INPUT鏈,,如果通過規(guī)則檢查,則該包被發(fā)給相應(yīng)的本地進程處理;如果沒有通過規(guī)則檢查,,系統(tǒng)就會將這個包丟掉,。
    (2)如果數(shù)據(jù)包的目的地址不是本機,也就是說,,這個包將被轉(zhuǎn)發(fā),,則系統(tǒng)將數(shù)據(jù)包送往FORWARD鏈,如果通過規(guī)則檢查,,則該包被發(fā)給相應(yīng)的本地進程處理,;如果沒有通過規(guī)則檢查,系統(tǒng)就會將這個包丟掉,。
    (3)如果數(shù)據(jù)包是由本地系統(tǒng)進程產(chǎn)生的,,則系統(tǒng)將其送往OUTPUT鏈,如果通過規(guī)則檢查,,則該包被發(fā)給相應(yīng)的本地進程處理,;如果沒有通過規(guī)則檢查,系統(tǒng)就會將這個包丟掉,。
    當我們在使用iptables NAT功能的時候,,我們所使用的表不再是“filter”表,而是“nat”表,,所以我們必須使用“-t nat”選項來顯式地指明,。因為系統(tǒng)缺省的表是“filter”,所以在使用filter功能時,,我們沒有必要顯式的指明“-t filter”。
    同“filter”表一樣,,nat表也有三條缺省的鏈,,這三條鏈也是規(guī)則的容器,它們分別是:
    (1)PREROUTING:可以在這里定義進行目的NAT的規(guī)則,,因為路由器進行路由時只檢查數(shù)據(jù)包的目的IP地址,,為了使數(shù)據(jù)包得以正確路由,我們必須在路由之前就進行目的NAT,。
    (2)POSTROUTING:可以在這里定義進行源NAT的規(guī)則,,在路由器進行路由之后才進行源NAT。
    (3)OUTPUT:定義對本地產(chǎn)生的數(shù)據(jù)包的目的NAT規(guī)則,。
二.NAT工作原理
    NAT
的基本思想是為每個企業(yè)分配一個IP地址(或者是很少幾個)來進行Internet傳輸,。在企業(yè)內(nèi)部,每個電腦取得一唯一的IP地址來為內(nèi)部傳輸做路由,。然而,,當封包離開企業(yè),進入ISP之后,就需要進行地址轉(zhuǎn)換了,。為了使這個方案可行,,IP地址的范圍被聲明為私有的,企業(yè)可以隨意在內(nèi)部使用他們,。僅有的規(guī)則是,,沒有包含這些地址的封包出現(xiàn)在Internet上。
    「說明」 IP私有地址范圍是:10.0.0.0~10.255.255.255/8,、172.16.0.0 ~172.31.255.255/12,、192.168.0.0~192.168.255.255/16。
    如圖21-2-2所示,。在企業(yè)內(nèi)部,,每個機器都有一個唯一的172.16.x.y形式的地址。然而,,當封包離開企業(yè)時,,它要經(jīng)過NAT轉(zhuǎn)盒,NAT盒將內(nèi)部IP源地址,,即圖中的172.16.0.50轉(zhuǎn)換成企業(yè)的真實地址(這個地址對于Internet來說是可見的),,此例中為202.198.168.150。NAT盒通常和防火墻一起綁定在一個設(shè)備上,,這里的防火墻通過小心地控制進出企業(yè)的封包提供了安全保障,。


圖21-2-2  NAT地址轉(zhuǎn)換

三.iptables常用操作語法
    表21-2-1列舉出了iptables常用的操作語法。

表21-2-1  iptables常用操作語法

功能

命令

語法

說明

添加規(guī)則

-A

iptables -A INPUT -p tcp -j ACCEPT

在所選擇的規(guī)則鏈末尾添加規(guī)則,,當源地址或目的地址是以名字而不是IP地址的形式出現(xiàn)時,,這些名字將被解析為多個地址,這條規(guī)則將和所有可用的地址結(jié)合,。

刪除規(guī)則

-D

iptables -D INPUT -p tcp -j ACCEPT

從所選鏈中刪除規(guī)則,。有兩種方法指定要刪除的規(guī)則:一種方法是把規(guī)則完整定出,另一種方法是指定規(guī)則在所選鏈中的序號(每條鏈的規(guī)則都各自從1被編號),。

自定義鏈重命名

-E

iptables -E customlist userlist

對自定義的鏈重命名,,原來的名字在前,新名字在后,。

清空規(guī)則

-F

iptables -F INPUT

清空所選的鏈,,如果沒有指定鏈,則清空指定表中的所有鏈,。默認情況下清空默認表所有的鏈,。

插入規(guī)則

-I

iptables -I INPUT 1 -p tcp -j ACCEPT

在指定鏈內(nèi)的某個位置插入規(guī)則,如果序號為1或沒有序號,,規(guī)則會被插入到的頭部,。

顯示規(guī)則

-L

iptables -L INPUT

顯示所選鏈的所有規(guī)則,,如果沒有指定鏈,則顯示指定表中的所有鏈,。默認情況下顯示默認表所有的鏈,。精確輸出受其它參數(shù)影響,如-n和-v等參數(shù),。

用戶自定義鏈

-N

iptables -N customlist

根據(jù)用戶指定的名字建立新的鏈,。所用的名字不能和已有的鏈、target同名,。

默認策略

-P

iptables -P INPUT DROP

為鏈設(shè)置默認的target(ACCEPT,、DROP、REJECT,、REDIRECT,、)。target稱作策略,,所有不符合規(guī)則的包都被強制使用這個策略,。只有內(nèi)建的鏈才可以使用策略,但內(nèi)建的鏈和用戶自定義鏈都不能被作為策略使用,。

替換規(guī)則

-R

iptables -R INPUT 1 -p udp -j ACCETP

在所選中的鏈里指定的行上(每條鏈的規(guī)則都各自從1被編號)替換規(guī)則,。它主要用于試驗不同的規(guī)則。當源地址或目的地址是以名字而不是IP地址的形式出現(xiàn)時,,如果這此名字可以被解析為多個地址,,則這條命令會失敗。

刪除用戶自定義鏈

-X

iptables -X customlist

刪除指定的用戶自定義鏈,。這條鏈必須沒有被引用,,如果被引用,在刪除之前你必須刪除或者替換與之有關(guān)的規(guī)則,。如果沒有給出參數(shù),,這條命令將會刪除默認表所有非內(nèi)建的鏈。

計數(shù)器歸零

-Z

iptables -Z

把指定鏈(如未指定則認為所有鏈)的所有計數(shù)器歸零,。

四.常用通用匹配語法
    對于任何協(xié)議及協(xié)議的擴展,通用匹配都可以直接使用,。
    (1)匹配指定協(xié)議,。
    匹配-p,--protocol/使用iptables -A INPUT -p tcp -j ACCEPT/說明匹配指定的協(xié)議,,指定協(xié)議的形式有以下幾種:①名字不分大小寫,,但必須是在/etc/protocols中定義的;②可以使用協(xié)議相應(yīng)的整數(shù)值,。例如,,ICMP的值是1,,TCP是6,UDP是17,;③缺少設(shè)置ALL,,相應(yīng)數(shù)值是,要注意這只代表匹配TCP,、UDP、ICMP,,而不是/etc/protocols中定義的所有協(xié)議,;④可以是協(xié)議列表,以英文逗號為分隔符,,如:udp,,tcp;⑤可以在協(xié)議前加英文的感嘆號表示取反,,注意有空格,,如:--protocol !tcp表示非TCP協(xié)議,也就是UDP和ICMP,。可以看出這個取反的范圍只是TCP,、UDP和ICMP,。
    (2)以IP源地址匹配包。
    匹配-s,,--src,,--source/使用iptables -A INPUT -s 192.168.0.1 -j ACCEPT/說明以IP源地址匹配包。地址的形式如下:①單個地址,,如192.168.0.1,,也可寫成192.168.0.1/255.255.255.255或192.168.0.1/32,;②網(wǎng)絡(luò),如192.168.0.0/24,,或192.168.0.0/255.255.255.0,;③在地址前加英文感嘆號表示取反,注意空格,,如--source !192.168.0.0/24表示除此地址外的所有地址,;④缺省是所有地址。
    (3)以IP目的地址匹配包,。
    匹配-d,,--dst,--destination/使用iptables -A INPUT -d 192.168.0.1 -j ACCEPT/說明以IP目的地址匹配包,。地址的形式和--source完全一樣,。
    (4)以包進入本地使用的網(wǎng)絡(luò)接口匹配包。
    匹配-i/使用iptables -A INPUT -i eth0 -j ACCEPT/說明以包進入本地所使用的網(wǎng)絡(luò)接口來匹配包,。要注意這個匹配操作只能用于INPUT,,F(xiàn)ORWARD和PREROUTING這三個鏈,用在其他任何地方會提示錯誤信息,。指定接口有以下方法:①指定接口名稱,,如:eth0、ppp0等,;②使用通配符,,即英文加號,它代表字符數(shù)字串,。若直接用一個加號,,即iptables -A INPUT -i 表示匹配所有的包,而不考慮使用哪個接口,。通配符還可以放在某一類接口的后面,,如:eth 表示匹配所有從Ethernet接口進入的包;③在接口前加英文感嘆號表示取反,,如:-i ! eth0意思是匹配來自除eth0外的所有包,。
    (5)以包離開本地所使用的網(wǎng)絡(luò)接口來匹配包。
    匹配-o/使用iptables -A OUTPUT -o eth1 -j ACCEPT/說明以包離開本地所使用的網(wǎng)絡(luò)接口來匹配包,。要注意這個匹配操作只能用于OUTPUT,,F(xiàn)ORWARD和POSTROUTING這三個鏈,用在其他任何地方會提示錯誤信息,。
    (6)匹配通信源端口,。
    匹配--source-port,--sport/使用iptables -A INPUT -p tcp --sport 1111/說明當通信協(xié)議為TCP或UDP時,,可以指定匹配的源端口,,但必須與匹配協(xié)議相結(jié)合使用。
    (7)匹配通信源端口,。
    匹配-- destination-port,--dport/使用iptables -A INPUT -p tcp --dport 80/說明當通信協(xié)議為TCP或UDP時,,可以指定匹配的目的端口,,但必須與匹配協(xié)議相結(jié)合使用,。
五.iptables功能擴展
1.TCP擴展
iptables可以擴展,擴展分為兩種:一種是標準的,;另一種是用戶派生的,。如果指定了“-p tcp”,那么TCP擴展將自動加載,,通過--tcp-flags擴展,,我們指定TCP報文的哪些Flags位被設(shè)置,在其后跟隨兩個參數(shù):第一個參數(shù)代表Mask,,指定想要測驗的標志位,;第二個參數(shù)指定哪些位被設(shè)置。
    例:設(shè)置iptables防火墻禁止來自外部的任何tcp主動請求,,并對此請求行為進行事件記錄,。


    其中ULOG指定對匹配的數(shù)據(jù)包進行記錄,由日志生成工具ULOG生成iptables防火日志,,--log-prefix選項為記錄前綴,。
2.ICMP擴展
    例:設(shè)置iptables防火墻允許來自外部的某種類型/代碼的ICMP數(shù)據(jù)包。


    其中--icmp-type為擴展命令選項,,其后參數(shù)可以是三種模式:
    (1)ICMP類型名稱(例如,,host-unreachable)。
    (2)ICMP類型值(例如3),。
    (3)ICMP類型及代碼值(8/0),。
六.狀態(tài)檢測
    “狀態(tài)”的意思是指如果一個數(shù)據(jù)包是對先前從防火墻發(fā)出去的包的回復(fù),則防火墻自動不用檢查任何規(guī)則就立即允許該數(shù)據(jù)包進入并返回給請求者,,這樣就不用設(shè)置許多規(guī)則定義就可實現(xiàn)應(yīng)用的功能,。
    我們可以把請求端與應(yīng)答端之間建立的網(wǎng)絡(luò)通信連接稱為網(wǎng)絡(luò)會話,每個網(wǎng)絡(luò)會話都包括以下信息——源IP地址,、目標IP地址,、源端口、目的端口,,稱為套接字對,;協(xié)議類型、連接狀態(tài)(TCP協(xié)議)和超時時間等,。防火墻把這些信息稱為狀態(tài)(stateful),。狀態(tài)包過濾防火墻能在內(nèi)存中維護一個跟蹤狀態(tài)的表,比簡單的包過濾防火墻具有更大的安全性,,而iptables就是一種基于狀態(tài)的防火墻,。命令格式如下:


    其中,state表是一個由逗號分割的列表,,用來指定連接狀態(tài),,狀態(tài)分為4種:
    (1)NEW:該包想要建立一個新的連接(重新連接或連接重定向),。
    (2)RELATED:該包是屬于某個已經(jīng)建立的連接所建立的新連接。舉例:FTP的數(shù)據(jù)傳輸連接和控制連接之間就是RELATED關(guān)系,。
    (3)ESTABLISHED:該包屬于某個已經(jīng)建立的連接,。
    (4)INVALID:該包不匹配于任何連接,通常這些包被DROP,。
七.NAT操作
    前面提到在iptables防火墻中提供了3種策略規(guī)則表:Filter,、Mangle和NAT,這3種表功能各不相同,,而最為常用的就是filter和nat表,。
    nat表僅用于NAT,也就是網(wǎng)絡(luò)地址轉(zhuǎn)換,。做過NAT操作的數(shù)據(jù)包的地址就被改變了,,當然這種改變是根據(jù)我們的規(guī)則進行的。屬于流的包只會經(jīng)過這個表一次,,經(jīng)一個包被允許做NAT,,那么余下的包都會自動地做相同的操作。也就是說,,余下的包不會再通過這個表一個一個的被NAT,,而是自動完成的。常用操作分為以下幾類,。
    (1)SNAT(source network address translation,,源網(wǎng)絡(luò)地址目標轉(zhuǎn)換)。
    SNAT是POSTROUTING鏈表的作用,,在封包就要離開防火墻之前改變其源地址,,這在極大程度上可以隱藏本地網(wǎng)絡(luò)或者DMZ等。比如,,多個PC機使用路由器共享上網(wǎng),,每個PC機都配置了內(nèi)網(wǎng)IP(私有IP),PC機訪問外部網(wǎng)絡(luò)的時候,,路由器將數(shù)據(jù)包的報頭中的源地址替換成路由器的IP,,當外部網(wǎng)絡(luò)的服務(wù)器比如網(wǎng)站W(wǎng)eb服務(wù)器接到訪問請求的時候,它的日志記錄下來的路由器的IP,,而不是PC機的內(nèi)網(wǎng)IP,,這是因為,這個服務(wù)器收到的數(shù)據(jù)包的報頭里邊的“源地址”已經(jīng)被替換了,。所以叫做SNAT,,基于源地址的地址轉(zhuǎn)換。
例如更改所有來自192.168.0.1/24的數(shù)據(jù)包的源IP地址為10.0.0.1,其iptables實現(xiàn)為:


    (2)DNAT(destination network address translation,,目標網(wǎng)絡(luò)地址轉(zhuǎn)換),。
    DNAT是PREROUTING鏈表的作用,在封包剛剛到達防火墻時改變其目的地址,,以使包能夠被路由到某臺主機。典型的應(yīng)用是,,有個Web服務(wù)器放在企業(yè)網(wǎng)絡(luò)DMZ區(qū),,其配置了內(nèi)網(wǎng)IP地址,企業(yè)防火墻的的外網(wǎng)接口配置了企業(yè)唯一的公網(wǎng)IP,,互聯(lián)網(wǎng)上的訪問者使用公網(wǎng)IP來訪問這個網(wǎng)站,,當訪問的時候,客戶端發(fā)出一個數(shù)據(jù)包,,這個數(shù)據(jù)包的報頭里邊,,目標地址寫的是防火墻的公網(wǎng)IP,然后再把這個數(shù)據(jù)包發(fā)送到DMZ區(qū)的Web服務(wù)器上,,這樣,,數(shù)據(jù)包就穿透了防火墻,并從公網(wǎng)IP變成了一個對DMZ區(qū)的訪問了,。所以叫做DNAT,,基于目標的網(wǎng)絡(luò)地址轉(zhuǎn)換。
    例如更改所有來自202.98.0.1/24的數(shù)據(jù)包的目的IP地址為192.168.0.1,,其iptables實現(xiàn)為:


    (3)REDIRECT(重定向),。
    REDIRECT是DNAT的特殊情況是重定向,也就是所謂的Redirection,,這時候就相當于將符合條件的數(shù)據(jù)包的目的IP地址改為數(shù)據(jù)包進入系統(tǒng)時的網(wǎng)絡(luò)接口的IP地址,。通常是在與squid配置形成透明代理時使用,假設(shè)squid的監(jiān)聽端口是3128,,我們可以通過以下語句來將來自192.168.0.1/24,,目的端口為80的數(shù)據(jù)包重定向到squid監(jiān)聽:


    (4)MASQUERADE(地址偽裝)。
    在iptables中有著和SNAT相近的效果,,但也有一些區(qū)別,。在使用SNAT的時候,出口IP的地址范圍可以是一個,,也可以是多個,,例如把所有192.168.0.0/24網(wǎng)段數(shù)據(jù)包SNAT成202.98.0.150/202.98.0.151/202.98.0.152等幾個IP然后發(fā)出去,其iptables實現(xiàn)為:


    SNAT即可以NAT成一個地址,,也可以NAT成多個地址,。但是,對于SNAT來說不管是幾個地址,必須明確指定轉(zhuǎn)換的目標地址IP,。假如當前系統(tǒng)用的是ADSL動態(tài)撥號方式,,那么每次撥號,出口IP都會改變,,而且改變的幅度很大,,不一定是202.98.0.150到202.98.0.152范圍內(nèi)的地址,這個時候如果使用SNAT的方式來配置iptables就會出現(xiàn)麻煩了,,因為每次撥號后出口IP都會變化,,而iptables規(guī)則內(nèi)的IP是不會隨著自動變化的,每次地址變化后都必須手工修改一次iptables,,把規(guī)則里邊的固定的IP改成新的IP,,這樣是非常不好用的。
    MASQUERADE就是針對這種場景而設(shè)計的,,它的作用是從防火墻外網(wǎng)接口上自動獲取當前IP地址來做NAT,,比如下邊的命令:


八.防火墻應(yīng)用代理
1.代理服務(wù)器概述
    在TCP/IP網(wǎng)絡(luò)中,傳統(tǒng)的通信過程是這樣的:客戶端向服務(wù)器請求數(shù)據(jù),,服務(wù)器響應(yīng)該請求,,將數(shù)據(jù)傳送給客戶端,如圖21-2-3所示,。


圖21-2-3  直接訪問Internet

    在引入了代理服務(wù)器以后,,這一過程變成了這樣:客戶端向服務(wù)器發(fā)起請求,該請求被送到代理服務(wù)器,;代理服務(wù)器分析該請求,,先查看自己緩存中是否有請求數(shù)據(jù),如果有就直接傳遞給客戶端,,如果沒有就代替客戶端向該服務(wù)器發(fā)出請求,。服務(wù)器響應(yīng)以后,代理服務(wù)將響應(yīng)的數(shù)據(jù)傳遞給客戶端,,同時在自己的緩存中保留一份該數(shù)據(jù)的拷貝,。這樣,再有客戶端請求相同的數(shù)據(jù)時,,代理服務(wù)器就可以直接將數(shù)據(jù)傳送給客戶端,,而不需要再向該服務(wù)器發(fā)起請求,如圖21-2-4所示,。


圖21-2-4  通過代理服務(wù)器訪問Internet

2.代理服務(wù)器功能
    一般說來,,代理服務(wù)器具有以下的功能:
    (1)通過緩存增加訪問速度。
    隨著Internet的迅猛發(fā)展,,網(wǎng)絡(luò)帶寬變得越來越珍貴,。所以為了提高訪問速度,好多ISP都提供代理服務(wù)器,通過代理服務(wù)器的緩存功能來加快網(wǎng)絡(luò)的訪問速度,。一般說來,,大多數(shù)的代理服務(wù)器都支持HTTP緩存,但是,,有的代理服務(wù)器也支持FTP緩存,。在選擇代理服務(wù)器時,對于大多數(shù)的組織,,只需要HTTP緩存功能就足夠了,。
    通常,緩存有主動緩存被動緩存之分,。所謂被動緩存,指的是代理服務(wù)器只在客戶端請求數(shù)據(jù)時才將服務(wù)器返回的數(shù)據(jù)進行緩存,,如果數(shù)據(jù)過期了,,又有客戶端請求相同的數(shù)據(jù)時,代理服務(wù)器又必須重新發(fā)起新的數(shù)據(jù)請求,,在將響應(yīng)數(shù)據(jù)傳送給客戶端時又進行新的緩存,。所謂主動緩存,就是代理服務(wù)器不斷地檢查緩存中的數(shù)據(jù),,一旦有數(shù)據(jù)過期,,則代理服務(wù)器主動發(fā)起新的數(shù)據(jù)請求來更新數(shù)據(jù)。這樣,,當有客戶端請求該數(shù)據(jù)時就會大大縮短響應(yīng)時間,。對于數(shù)據(jù)中的認證信息,大多數(shù)的代理服務(wù)器都不會進行緩存的,。
    (2)提供用私有IP訪問Internet的方法,。
IP地址是不可再生的寶貴資源,假如你只有有限的IP地址,,但是需要提供整個組織的Internet訪問能力,,那么,你可以通過使用代理服務(wù)器來實現(xiàn)這一點,。
    (3)提高網(wǎng)絡(luò)的安全性,。
    如果內(nèi)部用戶訪問Internet都是通過代理服務(wù)器,那么代理服務(wù)器就成為進入Internet的唯一通道,;反過來說,,代理服務(wù)器也是Internet訪問內(nèi)部網(wǎng)絡(luò)的唯一通道,如果你沒有做反向代理,,則對于Internet上的主機來說,,你的整個內(nèi)部網(wǎng)只有代理服務(wù)器是可見的,從而大大增強了網(wǎng)絡(luò)的安全性。
3.傳統(tǒng),、透明和反向代理服務(wù)器
    (1)傳統(tǒng)代理服務(wù)器,。
    傳統(tǒng)代理常被用于緩存靜態(tài)網(wǎng)頁(例如:html文件和圖片文件等)到本地網(wǎng)絡(luò)上的一臺主機上(即代理服務(wù)器)。不緩存的頁面被第二次訪問的時候,,瀏覽器將直接從本地代理服務(wù)器那里獲取請求數(shù)據(jù)而不再向原Web站點請求數(shù)據(jù),。這樣就節(jié)省了寶貴的網(wǎng)絡(luò)帶寬,而且提高了訪問速度,。但是,,要想實現(xiàn)這種方式,必須在每一個內(nèi)部主機的瀏覽器上明確指明代理服務(wù)器的IP地址和端口號,??蛻舳松暇W(wǎng)時,每次都把請求給代理服務(wù)器處理,,代理服務(wù)器根據(jù)請求確定是否連接到遠程Web服務(wù)器獲取數(shù)據(jù),。如果在本地緩存區(qū)有目標文件,則直接將文件傳給用戶即可,。如果沒有的話則先取回文件,,并在本地保存一份緩存,然后將文件發(fā)給客戶端瀏覽器,。
    (2)透明代理服務(wù)器,。
    透明代理與傳統(tǒng)代理的功能完全相同。但是,,代理操作對客戶端瀏覽器是透明的(即不需指明代理服務(wù)器的IP和端口),。透明代理服務(wù)器阻斷網(wǎng)絡(luò)通信,并且過濾出訪問外部的HTTP(80端口)流量,。如果客戶端的請求在本地有緩存則將緩存的數(shù)據(jù)直接發(fā)給用戶,,如果在本地沒有緩存則向遠程Web服務(wù)器發(fā)出請求,其余操作和傳統(tǒng)代理服務(wù)器完全相同,。對于Linux操作系統(tǒng)來說,,透明代理使用iptables實現(xiàn)。因為不需要對瀏覽器作任何設(shè)置,,所以,,透明代理對于ISP來說特別有用。
    (3)反向代理服務(wù)器,。
    反向代理是和前兩種代理完全不同的一種代理服務(wù),。使用它可以降低原始Web服務(wù)器的負載。反向代理服務(wù)器承擔了對原始Web服務(wù)器的靜態(tài)頁面的請求,,防止原始服務(wù)器過載,。如圖21-2-5所示,,它位于本地Web服務(wù)器和Internet之間,處理所有對Web服務(wù)器的請求,。如果互聯(lián)網(wǎng)用戶請求的頁面在代理器上有緩存的話,,代理服務(wù)器直接將緩存內(nèi)容發(fā)送給用戶。如果沒有緩存則先向Web服務(wù)器發(fā)出請求,,取回數(shù)據(jù),,本地緩存后再發(fā)送給用戶。這種方式通過降低了向Web服務(wù)器的請求數(shù)從而降低了Web服務(wù)器的負載,。


圖21-2-5  反向代理服務(wù)器位于Internet與組織服務(wù)器之間

4.代理服務(wù)器squid簡介
    squid是一個緩存Internet數(shù)據(jù)的一個開源軟件,,它會接收用戶的下載申請,并自動處理所下載的數(shù)據(jù),。也就是說,,當一個用戶要下載一個主頁時,他向squid發(fā)出一個申請,,要求squid替它下載,,squid連接申請網(wǎng)站并請求該主頁,然后把該主頁傳給用戶同時保留一個備份,,當別的用戶申請同樣的頁面時,squid把保存的備份立即傳給用戶,,使用戶覺得速度相當快,。目前squid可以代理HTTP,、FTP,、GOPHER,、SSL和WAIS協(xié)議,,暫不能代理POP,、NNTP等協(xié)議,。但是已經(jīng)有人開始改進squid,,相信不久的將來,,squid將能夠代理這些協(xié)議,。
    squid不是對任何數(shù)據(jù)都進行緩存,。像信用卡賬號、可以遠方執(zhí)行的Script,、經(jīng)常變換的主頁等是不適合緩存的,。squid可以根據(jù)用戶的需要進行設(shè)置,過濾掉不想要的東西,。
    squid可用在很多操作系統(tǒng)中,,如Digital Unix,F(xiàn)reeBSD,,HP-UX,,Linux,,Solaris,OS/2等,,也有不少人在其他操作系統(tǒng)中重新編譯過squid,。
    squid對內(nèi)存有一定的要求,一般不應(yīng)小于128M,,硬盤最好使用服務(wù)器專用SCSI硬盤,。
    squid是一個高性能的代理緩存服務(wù)器,和一般的代理緩存軟件不同,,squid用一個單獨的,、非模塊化的、I/O驅(qū)動的進程來處理所有的客戶端請求,。
    squid將數(shù)據(jù)元緩存在內(nèi)存中,,同時也緩存DNS查詢的結(jié)果。此外,,它還支持非模塊化的DNS查詢,,對失敗的請求進行消極緩存。squid支持SSL,,支持訪問控制,。由于使用了ICP(輕量Internet緩存協(xié)議),squid能夠?qū)崿F(xiàn)層疊的代理陣列,,從而最大限度地節(jié)約帶寬,。
    squid由一個主要的服務(wù)程序squid,一個DNS查詢程序dnsserver,,幾個重寫請求和執(zhí)行認證的程序,,以及幾個管理工具組成。當squid啟動以后,,它可以派生出預(yù)先指定數(shù)目的dnsserver進程,,而每一個dnsserver進程都可以執(zhí)行單獨的DNS查詢,這樣就減少了服務(wù)器等待DNS查詢的時間,。
5.squid常用配置選項
    因為缺省的配置文件不能使squid正常啟動服務(wù),,所以我們必須首先修改該配置文件的有關(guān)內(nèi)容,才能讓squid運行起來,。
    下面是squid.conf文件的結(jié)構(gòu),。squid.conf配置文件的可以分為13個部分,這13個部分如表21-2-2所示,。

表21-2-2  squid常用配置選項

選項

說明

NETWORK OPTIONS

有關(guān)的網(wǎng)絡(luò)選項

OPTIONS WHICH AFFECT THE NEIGHBOR SELECTION ALGORITHM

作用于鄰居選擇算法的有關(guān)選項

OPTIONS WHICH AFFECT THE CACHE SIZE

定義cache大小的有關(guān)選項

LOGFILE PATHNAMES AND CACHE DIRECTORIES

定義日志文件的路徑及cache的目錄

OPTIONS FOR EXTERNAL SUPPORT PROGRAMS

外部支持程序選項

OPTIONS FOR TUNING THE CACHE

調(diào)整cache的選項

TIMEOUTS

超時

ACCESS CONTROLS

訪問控制

ADMINISTRATIVE PARAMETERS

管理參數(shù)

OPTIONS FOR THE CACHE REGISTRATION SERVICE

cache注冊服務(wù)選項

HTTPD-ACCELERATOR OPTIONS

HTTPD加速選項

MISCELLANEOUS

雜項

DELAY POOL PARAMETERS

延時池參數(shù)

    雖然squid的配置文件很龐大,,但是如果你只是為一個中小型網(wǎng)絡(luò)提供代理服務(wù),并且只準備使用一臺服務(wù)器,,則只需要修改配置文件中的幾個選項,。
6.squid常用命令選項
    (1)端口號,。
    http_port指令告訴squid在哪個端口偵聽HTTP請求。默認端口是3128:http_port 3128,,如果要squid作為加速器運行則應(yīng)將它設(shè)為80,。
    你能使用附加http_port行來指定squid偵聽在多個端口上。例如,,來自某個部門的瀏覽器發(fā)送請求3128,,然而另一個部門使8080端口??梢詫蓚€端口號列舉出來:
    http_port 3128
    http_port 8080
    squid也可以使http_port指令偵聽在指定的接口地址上,。squid作為防火墻運行時,它有兩個網(wǎng)絡(luò)接口:一個內(nèi)部的和一個外部的,。你可能不想接受來自外部的http請求,。為了使squid僅僅偵聽在內(nèi)部接口上,簡單的將IP地址放在端口號前面:
    http_port 192.168.1.1:3128
    (2)日志文件路徑,。
    默認的日志目錄是squid安裝位置下的logs目錄,,其路徑是/usr/local/squid/var/logs。
你必須確認日志文件所存放的磁盤位置空間足夠,。squid想確認你不會丟失任何重要的日志信息,,特別是你的系統(tǒng)被濫用或者被攻擊時。
    squid有三個主要的日志文件:cache.log,、access.log和store.log,。cache.log文件包含狀態(tài)性的和調(diào)試性的消息。access.log文件包含了對squid發(fā)起的每個客戶請求的單一行,。每行平均約150個字節(jié)。假如因為某些理由,,你不想squid記錄客戶端請求日志,,你能指定日志文件的路徑為/dev/null。store.log文件對大多數(shù)cache管理員來說并非很有用,。它包含了進入和離開緩存的每個目標的記錄,。平均記錄大小典型的是175-200字節(jié)。
    如果squid的日志文件增加沒有限制,。某些操作系統(tǒng)對單個文件強制執(zhí)行2G的大小限制,,即使你有充足的磁盤空間。超過該限制會導(dǎo)致寫錯誤,,squid就會退出,。
    (3)訪問控制。
    squid默認的配置文件拒絕每一個客戶請求,。在任何人能使用代理之前,,你必須在squid.conf文件里加入附加的訪問控制規(guī)則,。最簡單的方法就是定義一個針對客戶IP地址的ACL和一個訪問規(guī)則,告訴squid允許來自這些地址的HTTP請求,。squid有許多不同的ACL類型,。src類型匹配客戶IP地址,squid會針對客戶HTTP請求檢查http_access規(guī)則,。
    acl MyNetwork src 192.168.0.0/16
    http_access allow MyNetwork
    請將這些行放在正確的位置,。http_access的順序非常重要。在第一次編輯squid.conf文件時,,請看如下注釋:


    在該注釋之后,,以及"http_access deny all"之前插入新規(guī)則。
    (4)命令選項,。
    這里的很多選項在實際應(yīng)用中從不會使用,,另外有些僅僅在調(diào)試問題時有用,如表21-2-3所示,。

表21-2-3  命令選項

選項

說明

-a port

指定新的http_port 值,。該選項覆蓋了來自squid.conf 的值。注意,,你能在squid.conf里指定多個值,。-a 選項僅僅覆蓋配置文件里的第一個值。(該選項使用字母a 是因為在Harvest cache 里,,HTTP 端口被叫做ASCII 端口)

-d level

讓squid 將它的調(diào)試信息寫到標準錯誤(假如配置了,,就是cache.log和syslog)。level參數(shù)指定了顯示在標準錯誤里的消息的最大等級,。在多數(shù)情況下,,d1 工作良好。

-f file

指定另一個配置文件,。

-h

幫助

-k function

指示squid 執(zhí)行不同的管理功能,。功能參數(shù)是下列之一:reconfigure,rotate,,shutdown,,interrupt,kill,,debug,

check,,or parse。

-s

激活將日志記錄到syslog 進程,。squid 使用LOCAL4 syslog 設(shè)備,。 級別調(diào)試信息以優(yōu)先級LOG_WARNING 被記錄,1 級別消息以LOG_NOTICE 被記錄,。更高級的調(diào)試信息不會被發(fā)送到syslogd.你可以在/etc/syslogd.conf 文件里使用如下接口: local4.warning /var/log/squid.log

-u port

指定另一個ICP 端口號,,覆蓋掉squid.conf 文件里的icp_port,。

-z

初始化cache,或者交換,,目錄,。在首次運行squid,或者增加新的cache目錄時,,你必須使用該選項,。

-C

阻止安裝某些信號句柄,它們捕獲特定的致命信號例如SIGBUS和SIGSEGV,。正常的,,這些信號被squid 捕獲,以便它能干凈的關(guān)閉,。然而,,捕獲這些信號可能讓以后調(diào)試問題困難。使用該選項,,致命的信號導(dǎo)致它們的默認動作,,通常是coredump。

-D

禁止初始化DNS 測試,。正常情況下,,squid 直到驗證它的DNS 可用才能啟動。該選項阻止了這樣的檢測,。你也能在squid.conf 文件里改變或刪除dns_testnames 選項,。

-F

讓squid 拒絕所有的請求,直到它重新建立起存儲元數(shù)據(jù),。假如你的系統(tǒng)很忙,,該選項可以減短重建存儲元數(shù)據(jù)的時間。然而,,如果你的cache 很大,,重建過程可能會花費很長的時間。

-N

阻止squid變成后臺服務(wù)進程,。

-R

阻止squid 在綁定HTTP 端口之前使用SO_REUSEADDR 選項。

-V

激活虛擬主機加速模式,。類似于squid.conf 文件里的httpd_accel_host virtual 指令,。

-X

強迫完整調(diào)試模式,如你在squid.conf 文件里指定debug_options ALL,9 一樣,。

-Y

在重建存儲元數(shù)據(jù)時,,返回ICP_MISS_NOFETCH 代替ICP_MISS.忙碌的父cache 在重建時,該選項可以導(dǎo)致最少的負載,。

【實驗步驟】

    本練習(xí)主機A,、B為一組,,C、D為一組,,E、F為一組。

    首先使用“快照X”恢復(fù)Linux系統(tǒng)環(huán)境。

一.包過濾實驗

    操作概述:為了應(yīng)用iptables的包過濾功能,,首先我們將filter鏈表的所有鏈規(guī)則清空,,并設(shè)置鏈表默認策略為DROP(禁止),。通過向INPUT規(guī)則鏈插入新規(guī)則,,依次允許同組主機icmp回顯請求,、Web請求,最后開放信任接口eth0。iptables操作期間需同組主機進行操作驗證,。

    (1)清空filter鏈表所有規(guī)則鏈規(guī)則,。

      iptables命令iptables -t filter -F

    (2)同組主機使用/opt/ExpNIS/NetAD-Lab/Tools/portscan/nmap工具對當前主機進行端口掃描,。

   (3)查看INPUT、FORWARD和OUTPUT鏈默認策略,。

    iptables命令iptables -t filter -L

    (4)將INPUT、FORWARD和OUTPUT鏈默認策略均設(shè)置為DROP。

    iptables命令  iptables -P INPUT DROP 

                iptables -P FORWARD DROP 

                     iptables -P OUTPUT DROP 

    同組主機利用nmap對當前主機進行端口掃描,查看掃描結(jié)果,并利用ping命令進行連通性測試。

    (5)利用功能擴展命令選項(ICMP)設(shè)置防火墻僅允許ICMP回顯請求及回顯應(yīng)答,。

    ICMP回顯請求類型    8     ;代碼         。

    ICMP回顯應(yīng)答類型          ,;代碼          ,。

    iptables命令iptables -I INPUT -p icmp --icmp-type 8/0 -j ACCEPT 

                    iptables -I OUTPUT -p icmp --icmp-type 0/0 -j ACCEPT

    利用ping指令測試本機與同組主機的連通性,。

    (6)對外開放Web服務(wù)(默認端口80/tcp)。

    iptables命令iptables -I INPUT -p tcp --dport 80 -j ACCEPT 

                  iptables -I OUTPUT -p tcp --sport 80 -j ACCEPT

    同組主機利用nmap對當前主機進行端口掃描,,查看掃描結(jié)果,。

    (7)設(shè)置防火墻允許來自eth0(假設(shè)eth0為內(nèi)部網(wǎng)絡(luò)接口)的任何數(shù)據(jù)通過。

    iptables命令iptables -A INPUT -i eth0 -j ACCEPT 

                    iptables -A OUTPUT -o eth0 -j ACCEPT   同組主機利用nmap對當前主機進行端口掃描,,查看掃描結(jié)果,。

二.事件審計實驗

    操作概述:利用iptables的日志功能檢測、記錄網(wǎng)絡(luò)端口掃描事件,日志路徑 /var/log/iptables.log。

    (1)清空filter表所有規(guī)則鏈規(guī)則,。

    iptables命令iptables -F

    (2)根據(jù)實驗原理(TCP擴展)設(shè)計iptables包過濾規(guī)則,,并應(yīng)用日志生成工具ULOG對iptables捕獲的網(wǎng)絡(luò)事件進行響應(yīng),。

iptables命令iptables -I INPUT -p tcp --tcp-flag ALL SYN -j ULOG--ulog-prefix “SYN Request”

(3)同組主機應(yīng)用端口掃描工具對當前主機進行端口掃描,,并觀察掃描結(jié)果,。

    (4)在同組主機端口掃描完成后,,當前主機查看iptables日志,,對端口掃描事件進行審計,,日志內(nèi)容如圖21-2-1所示,。


 

圖21-2-1  iptables日志內(nèi)容

 

三.狀態(tài)檢測實驗

    操作概述:分別對新建和已建的網(wǎng)絡(luò)會話進行狀態(tài)檢測。

    1.對新建的網(wǎng)絡(luò)會話進行狀態(tài)檢測

    (1)清空filter規(guī)則鏈全部內(nèi)容,。

    iptables命令 iptables -F

    (2)設(shè)置全部鏈表默認規(guī)則為允許,。

    iptables命令iptables -P INPUT ACCEPT 

        iptables -P FORWARD ACCEPT 

                           iptables -P OUTPUT ACCEPT

    (3)設(shè)置規(guī)則禁止任何新建連接通過。

    iptables命令iptables -A INPUT -m state --state NEW -j DROP

    (4)同組主機對當前主機防火墻規(guī)則進行測試,,驗證規(guī)則正確性,。

    2.對已建的網(wǎng)絡(luò)會話進行狀態(tài)檢測

    (1)清空filter規(guī)則鏈全部內(nèi)容,并設(shè)置默認規(guī)則為允許,。

    (2)同組主機首先telnet遠程登錄當前主機,,當出現(xiàn)“l(fā)ogin:”界面時,暫停登錄操作,。

    telnet登錄命令  telnet 同組主機IP                           

    (3)iptables添加新規(guī)則(狀態(tài)檢測)——僅禁止新建網(wǎng)絡(luò)會話請求,。

    iptables命令   iptables -A INPUT -m state --state NEW -j DROP                          

            或      iptables -I INPUT -m state --state NEW -j DROP                       

    同組主機續(xù)步驟(2)繼續(xù)執(zhí)行登錄操作,嘗試輸入登錄用戶名“guest”及口令“guestpass”,登錄是否成功,? 成功         ,。

    同組主機啟動Web瀏覽器訪問當前主機Web服務(wù),訪問是否成功,?  不成功        ,。解釋上述現(xiàn)象添加的iptables命令僅對新建會話連接起到阻塞作用,對屬于已建立會話連接的數(shù)據(jù)包不起作用,,而telnet會話是已建連接                              ,。

    (4)刪除步驟(3)中添加的規(guī)則。

    iptables命令  iptables -D INPUT -m state --state NEW -j DROP                           

             或    iptables -D INPUT 1                          

    (5)同組主機重新telnet遠程登錄當前主機,,當出現(xiàn)“l(fā)ogin:”界面時,,暫停登錄操作。

    (6)iptables添加新規(guī)則(狀態(tài)檢測)——僅禁止已建網(wǎng)絡(luò)會話請求,。

    iptables命令iptables -A INPUT -m state --state ESTABLISHED -j DROP   

               iptables -I INPUT -m state --state ESTABLISHED -j DROP

    同組主機續(xù)步驟(5)繼續(xù)執(zhí)行登錄操作,,登錄是否成功?          ,。

同組主機啟動Web瀏覽器訪問當前主機Web服務(wù),,訪問是否成功?          ,。解釋上述現(xiàn)象                              ,。

嘗試輸入登錄用戶名“guest”及口令“guestpass”,,登錄是否成功  不成功  ,。

同組主機啟動Web瀏覽器訪問當前主機Web服務(wù),訪問是否成功 不成功  ,。解釋上述現(xiàn)象  添加的iptables命令對已建會話連接起到阻塞作用  ,。

    (7)當前主機再次清空filter鏈表規(guī)則,并設(shè)置默認策略為DROP,添加規(guī)則開放FTP服務(wù),,并允許遠程用戶上傳文件至FTP服務(wù)器,。

    iptables命令iptables -A INPUT -p tcp --dport 21 -j ACCEPT 

  iptables -A INPUT -m state --state ESTABLISHED,RELATED –j ACCEPT 

                      iptables -A OUTPUT -p tcp --sport 21 -j ACCEPT 

                      iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT

同組主機嘗試上傳文件,是否成功,?

四.NAT轉(zhuǎn)換實驗
   
實驗概述:圖21-2-2描述了NAT轉(zhuǎn)換實驗所應(yīng)用的網(wǎng)絡(luò)拓撲結(jié)構(gòu),。內(nèi)網(wǎng)主機與NAT服務(wù)器eth0接口位于同一網(wǎng)段(內(nèi)網(wǎng));外網(wǎng)主機與NAT服務(wù)器eth1接口位于同一網(wǎng)絡(luò)(外網(wǎng)),;NAT服務(wù)器提供NAT轉(zhuǎn)換,。通過設(shè)置nat服務(wù)器的iptables NAT規(guī)則,實現(xiàn)內(nèi),、外網(wǎng)主機間的通信數(shù)據(jù)包的地址轉(zhuǎn)換,,達到屏蔽內(nèi)部網(wǎng)絡(luò)拓撲結(jié)構(gòu)與轉(zhuǎn)發(fā)外網(wǎng)主機請求端口的目的(端口重定向)。


    
 
圖21-2-2  實驗網(wǎng)絡(luò)拓撲結(jié)

    「說明」 本實驗是在Linux系統(tǒng)下完成,,Linux系統(tǒng)默認安裝了2塊以太網(wǎng)卡,,網(wǎng)絡(luò)接口分別為eth0和eth1,,在設(shè)置NAT服務(wù)前請激活eth1網(wǎng)絡(luò)接口,命令ifconfig eth1 up,。
    本步驟由3人為一組進行,,其中主機A、C,、E為一組,,B、D,、F為一組,。實驗角色說明如下:

實驗主機

實驗角色

主機A、B

內(nèi)網(wǎng)主機

主機C,、D

NAT服務(wù)器

主機E,、F

外網(wǎng)主機

    實驗操作前,實驗主機需重置iptables,,具體命令如下:


1.確定各接口IP地址
    (1)默認內(nèi)網(wǎng)IP地址192.168.0.0/24,、外網(wǎng)IP地址202.98.0.0/24。配置完成內(nèi)網(wǎng)主機eth0接口IP地址及默認網(wǎng)關(guān)(指向NAT服務(wù)器內(nèi)網(wǎng)接口),,NAT服務(wù)器eth0和eth1接口IP地址,,外網(wǎng)主機eth0接口IP地址,并完成下列問題的填寫:
    內(nèi)網(wǎng)主機IP192.168.0.50/24,,其默認網(wǎng)關(guān)192.168.0.150,;
    外網(wǎng)主機IP202.98.0.50/24
    NAT服務(wù)器內(nèi)網(wǎng)接口IP192.168.0.150/24,、外網(wǎng)接口IP202.98.0.150/24  ,。
    (2)內(nèi)網(wǎng)主機添加靜態(tài)ARP緩存表項目
    NAT服務(wù)器作為內(nèi)網(wǎng)主機訪問外網(wǎng)的唯一的安全網(wǎng)關(guān),其IP與MAC地址應(yīng)被綁定到內(nèi)網(wǎng)主機的ARP緩存表中,,防止內(nèi)網(wǎng)主機遭受ARP欺騙,、IP欺騙等網(wǎng)絡(luò)行為,添加ARP靜態(tài)表項命令如下:


    例如NAT服務(wù)器內(nèi)網(wǎng)接口的IP地址為192.168.0.50,,MAC地址為aa:bb:cc:dd:ee:ff,,則添加靜態(tài)表項的命令為arp -s 192.168.0.50 aa:bb:cc:dd:ee:ff。
    (3)內(nèi)網(wǎng)主機對NAT服務(wù)器內(nèi)網(wǎng)接口進行連通性測試(ping),;外網(wǎng)主機對NAT服務(wù)器外網(wǎng)接口進行連通性測試(ping),。
2.設(shè)置iptables規(guī)則允許內(nèi)部網(wǎng)絡(luò)訪問外部網(wǎng)絡(luò)
    操作流程:首先開啟NAT服務(wù)器的路由功能(開啟網(wǎng)絡(luò)接口間數(shù)據(jù)的轉(zhuǎn)發(fā)),清空filter鏈表全部規(guī)則,,并設(shè)置其默認策略為DROP,;繼續(xù)設(shè)置規(guī)則允許來自內(nèi)網(wǎng)的數(shù)據(jù)流進入外網(wǎng),并允許任何返回流量回到內(nèi)網(wǎng)(數(shù)據(jù)轉(zhuǎn)發(fā))。
    (1)NAT服務(wù)器開啟路由功能,。
    基于安全的考慮,,默認情況下Linux路由數(shù)據(jù)包的功能是關(guān)閉的,通過下述命令開啟系統(tǒng)路由功能:

    (2)清空filter表規(guī)則鏈內(nèi)容,,并設(shè)置filter表INPUT,、FORWARD和OUTPUT規(guī)則鏈,默認策略為禁止,。
    iptables命令iptables –F 

                iptables -P INPUT DROP 

                iptables -P FORWARD DROP 

               iptables -P OUTPUT DROP

 (3)添加filter表新規(guī)則,,允許來自內(nèi)網(wǎng)的數(shù)據(jù)流進入外網(wǎng),并允許任何返回流量回到內(nèi)網(wǎng)(即實現(xiàn)NAT服務(wù)器內(nèi)部網(wǎng)絡(luò)接口eth0與外部網(wǎng)絡(luò)接口eth1間的數(shù)據(jù)轉(zhuǎn)發(fā)),。
 
 iptables -A FORWARD -i eth0 -o eth1 -s 192.168.0.0/24 -d any/0 -j ACCEPT  

  iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
 (4)外網(wǎng)主機啟動snort(/opt/ExpNIS/NetAD-Lab/Tools/ids/snort)以網(wǎng)絡(luò)嗅探方式運行(設(shè)置過濾器僅監(jiān)聽icmp數(shù)據(jù)包),,snort命令如下:

    內(nèi)網(wǎng)主機ping探測外網(wǎng)主機,是否ping通未ping通,?描述snort捕獲數(shù)據(jù)現(xiàn)象捕獲到了源地址為內(nèi)網(wǎng)主機IP,、目的地址為外網(wǎng)主機IP的ICMP請求報文,但沒有捕獲到應(yīng)答報文  ,。
    外網(wǎng)主機的默認網(wǎng)關(guān)指向NAT服務(wù)器的外網(wǎng)接口eth1,,內(nèi)網(wǎng)主機再次ping探測外網(wǎng)主機,是否ping通ping通,?外網(wǎng)主機停止snort監(jiān)聽(Ctrl C),,觀察捕獲到的ICMP請求數(shù)據(jù),其源IP地址是
捕獲到的ICMP請求數(shù)據(jù)源IP地址是內(nèi)網(wǎng)主機IP地址 ,,結(jié)合先前實驗現(xiàn)象,,說明原因:外網(wǎng)主機在未指向默認網(wǎng)關(guān)的情況下(同時沒有相關(guān)路由信息),由于其回顯應(yīng)答的ICMP數(shù)據(jù)包目的地址為內(nèi)網(wǎng)主機IP,,與本地網(wǎng)絡(luò)不處于同一網(wǎng)段,,所以該數(shù)據(jù)包被丟棄,;相反指定了網(wǎng)關(guān),,外網(wǎng)主機會將該包發(fā)送給網(wǎng)關(guān),即NAT服務(wù)器,,NAT服務(wù)器將此包路由發(fā)送給內(nèi)網(wǎng)主機,。
3.設(shè)置iptables規(guī)則通過NAT屏蔽內(nèi)部網(wǎng)絡(luò)拓撲結(jié)構(gòu)
    操作流程:在實現(xiàn)步驟2的操作基礎(chǔ)上,繼續(xù)添加nat表新規(guī)則,,實現(xiàn)數(shù)據(jù)包從內(nèi)網(wǎng)到外網(wǎng)的源地址轉(zhuǎn)換,。
    (1)添加nat表新規(guī)則,通過網(wǎng)絡(luò)地址轉(zhuǎn)換實現(xiàn)內(nèi)網(wǎng)主機訪問外網(wǎng),。
    iptables命令iptables -t nat -A POSTROUTING -o eth1 -s 192.168.0.0/24 -d any/0 -j SNAT  --to-source 202.98.0.150
iptables -t nat -A POSTROUTING -m state --state ESTABLISHED,RELATED –j ACCEPT 由于步驟2中已經(jīng)添加了eth0到eth1的數(shù)據(jù)轉(zhuǎn)發(fā)規(guī)則,,所以此處不必再填寫。
    (2)外網(wǎng)主機將默認網(wǎng)關(guān)指為空,并重新啟動snort捕獲ICMP數(shù)據(jù),。內(nèi)網(wǎng)主機對外網(wǎng)主機進行ping探測,,是否ping通ping 通?外網(wǎng)主機停止snort監(jiān)聽,,觀察所捕獲到ICMP請求數(shù)據(jù),,其源IP地址是NAT服務(wù)器外網(wǎng)接口IP?解釋實驗象由于NAT服務(wù)器對來自內(nèi)網(wǎng)主機的數(shù)據(jù)包做了SNAT,,即替換數(shù)據(jù)包源IP地址為外網(wǎng)接口IP,,然后再將轉(zhuǎn)換后的數(shù)據(jù)包發(fā)送到外網(wǎng)中。在接收到應(yīng)答包時,,對數(shù)據(jù)包進行反向轉(zhuǎn)換,,即替換數(shù)據(jù)包的目的IP地址為內(nèi)網(wǎng)主機IP,然后再將反向轉(zhuǎn)換后的數(shù)據(jù)包發(fā)送到內(nèi)網(wǎng)中,。
4.設(shè)置防火墻規(guī)則通過NAT實現(xiàn)端口重定向
    操作流程:在實現(xiàn)步驟3的操作基礎(chǔ)上,,繼續(xù)添加nat表新規(guī)則,實現(xiàn)數(shù)據(jù)從外網(wǎng)到內(nèi)網(wǎng)的地址轉(zhuǎn)換,。
    (1)添加nat表新規(guī)則,,實現(xiàn)80/tcp請求數(shù)據(jù)從外網(wǎng)到內(nèi)網(wǎng)的地址轉(zhuǎn)換。
    iptables命令
iptables -t nat -A PREROUTING -i eth1 –p tcp --dport 80 -s any/0 -d 202.98.0.150 -j DNAT --to-dest 192.168.0.50  

     iptables -t nat -A PREROUTING -m state --state ESTABLISHED,RELATED -j ACCEPT

 (2)完成NAT外網(wǎng)接口eth1到內(nèi)網(wǎng)接口eth0之間的數(shù)據(jù)轉(zhuǎn)發(fā),。
 iptables命令iptables -A FORWARD -i eth1 -o eth0 -s any/0 -d 192.168.0.50 -j ACCEPT  

     iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

 (3)NAT服務(wù)器停止本機Web服務(wù),,具體命令如下:


    (4)確定外網(wǎng)主機默認網(wǎng)關(guān)指為空,內(nèi),、外網(wǎng)主機均啟動snort,,捕獲目的端口為80/tcp的數(shù)據(jù)包;外網(wǎng)主機啟動Web瀏覽器,,在地址欄中輸入:http://NAT服務(wù)器外網(wǎng)接口IP,,在成功訪問到Web頁面后,觀察snort捕獲數(shù)據(jù),,回答下列問題:
 外網(wǎng)主機觀察80/tcp會話的源,、目的IP地址對是NAT服務(wù)器外網(wǎng)接口IP和外網(wǎng)主機IP內(nèi)網(wǎng)主機觀察80/tcp會話的源、目的IP地址對是外網(wǎng)主機IP和內(nèi)網(wǎng)主機IP,。
外網(wǎng)主機所訪問Web頁面來源哪臺主機?  外網(wǎng)主機所訪問Web頁面來自內(nèi)網(wǎng)主機,?
 解釋上述實驗現(xiàn)象上述現(xiàn)象的原因是由于NAT服務(wù)器對來自外網(wǎng)主機的數(shù)據(jù)包做了DNAT,即替換數(shù)據(jù)包目的IP地址(也可替換目的端口)為內(nèi)網(wǎng)主機IP,,然后再將轉(zhuǎn)換后的數(shù)據(jù)包發(fā)送到內(nèi)網(wǎng)中,。在接收到應(yīng)答包時,對數(shù)據(jù)包進行反向轉(zhuǎn)換,,即替換數(shù)據(jù)包的源IP地址為NAT服務(wù)器外網(wǎng)接口IP,,然后再將反向轉(zhuǎn)換后的數(shù)據(jù)包發(fā)送到外網(wǎng)中,。
5.允許NAT服務(wù)器訪問外網(wǎng)主機提供的Web服務(wù)
 回顧步驟1-4,思考下面的問題:
 實驗期間表filter的INPUT和OUTPUT規(guī)則鏈默認策略始終為DROP(禁止數(shù)據(jù)包流入和流出),,而步驟中也沒有為這兩個鏈表進行任何操作,,為什么內(nèi)、外網(wǎng)主機間訪問還會成功呢,?
 (1)NAT服務(wù)器啟動Web瀏覽器,,訪問外網(wǎng)主機Web服務(wù),是否成功訪問不成功,?
 (2)添加filter表新規(guī)則,,僅允許NAT服務(wù)器本地數(shù)據(jù)訪問外網(wǎng)主機Web服務(wù)(80/tcp)
 iptables命令iptables -A OUTPUT -o eth1 -p tcp --dport 80 -j ACCEPT 

  iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

(3)NAT服務(wù)器再次訪問外網(wǎng)主機Web服務(wù),是否成功訪問成功,?回答上面的思考問題,。

   filter表INPUT和OUTPUT規(guī)則鏈僅對本地進程網(wǎng)絡(luò)通信起作用,換句話說,,轉(zhuǎn)發(fā)數(shù)據(jù)和NAT操作不受此規(guī)則鏈限制,,因為這時的數(shù)據(jù)包來源非本地進程。

五.應(yīng)用代理實驗
 實驗概述:使用iptables squid方式來實現(xiàn)傳統(tǒng)代理,、透明代理和反向代理,。實驗角色說明如下:

實驗主機

實驗角色

系統(tǒng)環(huán)境

主機A、B

內(nèi)網(wǎng)客戶端

Windows

主機C,、D

代理服務(wù)器

Linux

主機E,、F

外網(wǎng)Web服務(wù)器

Windows

在進行實驗操作前,首先重啟iptables服務(wù),,并清空防火墻規(guī)則,。
1.傳統(tǒng)代理
 (1)外網(wǎng)Web服務(wù)器手動分配IP地址,并確認本地Web服務(wù)已啟動,。
 (2)代理服務(wù)器激活網(wǎng)絡(luò)接口eth1,,并手動分配IP地址,可通過以下兩種方式激活eth1:
 通過“桌面”|“管理”|“網(wǎng)絡(luò)”激活eth1,,并手動分配IP地址,;
 在控制臺中輸入命令ifconfig eth1 up激活eth1,輸入命令ifconfig eth1 202.98.X.Y/24為eth1分配IP地址。
 (3)代理服務(wù)器配置squid,。
代理服務(wù)器進入目錄/usr/local/squid/etc/,,使用vim編輯器打開配置文件squid.conf,。
 在squid.conf中配置如下選項:


(4)運行代理服務(wù)器
 代理服務(wù)器進入目錄/usr/local/squid/sbin/,,輸入命令:./squid –NCd1啟動代理服務(wù)。
 (5)通過代理訪問Web服務(wù)器
 內(nèi)網(wǎng)客戶端打開IE瀏覽器,,通過“工具”|“Internet選項”|“連接”|“局域網(wǎng)設(shè)置”選中“為LAN使用代理服務(wù)器”,,在“地址”中輸入代理服務(wù)器的內(nèi)網(wǎng)IP,,在“端口”中輸入代理服務(wù)器的監(jiān)聽端口號,單擊“確定”按鈕,,完成瀏覽器設(shè)置,。
 內(nèi)網(wǎng)客戶端在IE瀏覽器地址欄中輸入http://外網(wǎng)Web服務(wù)器IP地址,即可訪問到Web頁面,。
 (6)驗證代理服務(wù)器的作用
 內(nèi)網(wǎng)客戶訪問外網(wǎng)Web服務(wù),,是否可以訪問到頁面
可以
 外網(wǎng)Web服務(wù)器關(guān)閉Web服務(wù),,代理服務(wù)器訪問外網(wǎng)Web服務(wù),,是否可以訪問到頁面
不可以
 內(nèi)網(wǎng)客戶端再次訪問外網(wǎng)Web服務(wù),,是否可以訪問到頁面
可以,,為什么?雖然外網(wǎng)Web服務(wù)器已關(guān)閉,,但是代理服務(wù)器中還緩存有外網(wǎng)Web服務(wù)器的頁面,,所以內(nèi)網(wǎng)客戶端還可以訪問到外網(wǎng)Web服務(wù)器的頁面
2.透明代理
    (1)外網(wǎng)Web服務(wù)器開啟Web服務(wù),。
    (2)代理服務(wù)器配置squid,。
    代理服務(wù)器進入目錄/usr/local/squid/etc/,使用vim編輯器打開配置文件squid.conf,,配置如下選項:

    (3)代理服務(wù)器添加iptables規(guī)則,。
    對從代理服務(wù)器內(nèi)網(wǎng)接口進入的、基于tcp協(xié)議的,、目的端口是80的數(shù)據(jù)包,,做“端口重定向”。將數(shù)據(jù)包重定向到3128端口,,命令如下:


    (4)運行代理服務(wù)器,。
    (5)通過代理訪問Web服務(wù)器。
    內(nèi)網(wǎng)客戶端將本地連接的“默認網(wǎng)關(guān)”設(shè)置為代理服務(wù)器的內(nèi)網(wǎng)IP,,即代理服務(wù)器的eth0網(wǎng)絡(luò)接口的IP,。
    內(nèi)網(wǎng)客戶端打開IE瀏覽器,通過“工具”|“Internet選項”|“連接”|“局域網(wǎng)設(shè)置”,,取消“為LAN使用代理服務(wù)器”,。
    內(nèi)網(wǎng)客戶端在IE瀏覽器地址欄輸入“http://外網(wǎng)Web服務(wù)器的IP”,即可訪問到外網(wǎng)Web服務(wù)器的Web頁面,。
3.反向代理
    (1)內(nèi)網(wǎng)客戶端開啟Web服務(wù),。
    (2)代理服務(wù)器配置squid。
    代理服務(wù)器進入目錄/usr/local/squid/etc/,,使用vim編輯器打開配置文件squid.conf,,配置如下選項:


    (3)停止代理服務(wù)器的Web服務(wù),。
    在代理服務(wù)器的終端輸入命令:service httpd stop。
    (4)刪除緩存文件,。
    刪除目錄/usr/local/squid/var/cache/00/00下所有文件,。
    (5)運行代理服務(wù)器。
    (6)外網(wǎng)通過代理訪問內(nèi)網(wǎng)客戶端Web服務(wù)
    外網(wǎng)Web服務(wù)器在IE瀏覽器地址欄中輸入“http://代理服務(wù)器外網(wǎng)IP”即可訪問到內(nèi)網(wǎng)客戶端的Web頁面,。

 【實驗總結(jié)】

   通過這次實驗使我熟悉了對iptables常用命令的認識,,對它進行包過濾事件處理的理解,以及如何利用iptables對網(wǎng)絡(luò)事件進行審計原理的理解,,為進一步的學(xué)習(xí)打下了基礎(chǔ),。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多