簡易防火牆建置與流量統計之二(轉)

post0發表於2007-08-10
簡易防火牆建置與流量統計之二(轉)[@more@]

§ 2.7 測試

以 eth1 做為對內的網路介面,其虛擬 IP 位址為 192.168.1.0 ~ 192.168.1.255,因為其第一個為網路號碼,最後一個為廣播號,所以可用的虛擬 IP 為 192.168.0.1 ~ 192.168.255.254,我們將閘道器(gateway)設為 192.168.0.1、子網路遮罩設為 255.255.255.0,將 192.168.1.2 ~ 192.168.1.254 之間的 IP 分配給內部的機器,之後內部的機器就可以互相通訊(‘ping’),但對於要連出去,還需要一個步驟,那就是使用一支程式,ipchains 來達成這個目的。先針對上述的問題,如果要讓內部的機器連線到外部的網路,可先執行:

/sbin/ipchains -A forward -s 192.168.0.0/24 - d 0.0.0.0/0 -j MASQ

/sbin/ipchains -P forward DENY

第一個命令會將來源 192.168.0.0 ~ 192.168.255.255 的封包使用 IP 偽裝,將偽裝的封包送轉送給預設的路由,到外部的網路。

第二個命令會將 forward 的預設政策設為 DENY。

你可以將這兩行命令加在 /etc/rc.d/rc.local 檔案中,使其每次開機時執行。

對於 ipchains 的使用,會在下面作更詳細的說明。

第 3 章 封包過濾防火牆ipchains

若你使用的是新版的 Linux,裡面都會有 ipchains 的套件,直接使用就可以讓你建立封包過濾防火牆。

§ 3.1 ipchains語法

其選項、來源 ip、目的地 ip、port 可以不加,表示為全部。

ipchains語法:

ipchains 命令 input/forward/output 選項 源ip Port 目的ip port -j目標

範例: ipchains -A input -p all -s 192.168.1.2 -d eef.oit.edu.tw 23 -j DENY

§ 3.2 ipchains命令

可以有兩種形式來指定,全名方式或縮寫方式來表示

--add -A 增加新的 ipchains 規則

--delete -D 刪除第一個 ipchains 規則,或某一個 ipchains 規則

--inser -I 插入一個新 ipchains 規則,其插入需指定規則中的數字,如果數字為 1 表示為第一個。

--replace -R 取代所選擇的規則,其取代需指定規則中的數字。

--list -L 列出所選擇設定的 ipchains 規則,如果沒有規則被指定,會列出所有的規則出來。

--flush -F 將某個 ipchains 規則清除(例如:input、output、forward)這相當於去刪除掉規則的功效。

--zero -Z 將所有規則中的封包和位元組計數器歸零它也可以去指定-L, --list (list) 選項,會先列出之前的資料,再列出歸零的資料。

--check -C 檢查封包是否違反所設的規則,這是一個相當有用的測試,其是-s (來源), -d (目的地), -p(協定), -i (介面)更是必要。

--new -N 產生一個新的使用者定義規則(user-defined)。

--delete-chain -X 刪除使用者定義的規則,如果沒有指定任何的引數,它將會所有的定義的規則。

--policy -P 設定目標的政策,只有 input,forward,output 可以去設定。

--masquerade -M 這個選項可以去檢視現在的偽裝連線狀況(須加上-L 選項),或是去設定 kernel 偽裝引數(-S選項)。

--set -S 設定偽裝停止時間變數

--help -h 列出描述命令語法的說明。

§ 3.3 ipchains引數選項

可以有兩種形式來指定,全名方式或縮寫方式來表示

使用’!’去定義相反的意義:驚歎號’!’有’not’的意義,有許多選項可以加上’!’去使用,表示不是的意思。

例如: -s ! localhost

說明: 表示除了localhost的來源位址都可以。

--proto -p [!] protocol 協定:可以用數字或名字,例如:tcp、icmp、udp及all。

範例:

ipchains -A input -p tcp -s 192.168.1.3 -d eef.oit.edu.tw ftp -j DENY

說明:

源地址為 192.168.1.3 的主機不能對 eef.oit.edu.tw 這臺主機做 ftp 的動作請求。

-- source -s [!] 指定來源位址。

--source-port [!] port 指定來源的port。

--destination -d [!] 指定目的地位址

--destination-port [!] 指定目的地的port

--icmp-type [!] 型別名稱,指定ICMP型別

--interface -i [!] 網路介面名稱 ,lo、eth0、eth1。

-- jump -j 指定規則的目標,如果沒有指定的話,這條規則算是沒有用處。

--numeric -n 取消DNS查詢,直接使用IP

-- log -l 將關於ipchains的訊息記錄起來,記錄於/var/log/messages內。

-- verbose -v 完整模式,會列出介面名稱、規則、TOS偽裝,封包和位元組計數也會列出,須和-L一起使用。

[!] --syn -y 只有當SYN設定時才會符合TCP封包

--TOS -t Type Of Service

[!] --version -V 列出ipchains的版本

--bidirectional -b 雙向模

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-940725/,如需轉載,請註明出處,否則將追究法律責任。

相關文章