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

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

第 4 章 封包過濾防火牆ipchains的操作規則

§ 4.1 ipchains規則

首先列出 ipchains 的規則表出來:

ipchains -L

分為三大部分:

input chains:輸入時的過濾規則例如:

ipchains -A input -p tcp -s 192.168.1.3 -d 192.192.69.36 www -j DENY

禁止 192.168.1.3 的來源位址去存取目的地 192.192.69.36 的網頁

forward chain :執行 IP 偽裝的規則例如:

ipchains -A forward -s 192.168.1.0/24 -d 0.0.0.0/24 -j MASQ

啟動 192.168.1.0~255 的 IP 偽裝

output chain:輸出時的過濾規則(與 input 相反)例如:

ipchains -A output -p tcp -s 192.192.69.36 www -d 192.168.1.3 -j DENY

功用與 input 相同,只不過來源地址、目的地位址要對換

每個所設的規則必須要去符合情況,以及要做些什麼(目標)。

舉例來說,你可能要去拒絕從 IP 位址 192.168.1.3 的 ICMP 的封包,所以在這裡我們的條件必須是協定 ICMP 及來源位址必須是 192.168.1.3,目的地為 192.192.69.39 這臺主機(若不設則為全部),目標是’DENY’。

指令寫法為:

ipchains -A input -p icmp -s 192.168.1.3 -d 192.192.73.35 -j REJECT

§ 4.2 命令的用法

增加新的規則 -A:

我們增加(-A)’input’的規則,要指明封包的來源位址(‘-s 192.168.1.3’)及協定

(‘-p ICMP’),及應該結果為拒絕(‘-j DENY’)。

範例:

ipchains -A input -s 192.168.1.3 -p icmp -j DENY

說明:拒絕來自192.168.1.3的icmp封包。

刪除規則 -D:

我們刪除 ipchains 規則有兩種方法,首先我們知道在’input’的規則中只有一個(剛剛上面所增加的),也是第一個,所以我們可以使用數字來刪除.。

範例:

ipchains -D input 1

說明:刪除input規則中的第一條。

第二種方法是跟增加新的規則差不多,只不過是增加(-A)換成了刪除(-D),這種方法在你如果設定了很多的規則的時候很好用,你可以不必去數它到底是第幾個,只要照打一遍就行了,當然必須要一模一樣才行。

範例:

ipchains -D input -s 192.168.1.3 -p icmp -j DENY

§ 4.3 指定協定種類

使用 '-p'來指定協定種類,其中協定分為 'TCP' (Transmission Control Protocol)、'UDP' (User Datagram Protocol)、'ICMP' (Internet Control Message Protocol)或是全部(all),在這的協定寫法沒有分大小寫,能以數字代替協定。

在 /etc/protocols 中有註明各種協定,其中 tcp 為 6,udp 為 17,icmp 為 1。

TCP(傳輸控制協定):

位於應用層,如果應用程式(http、ftp)需要可靠性高的資料傳輸方式,那麼就可以採用 TCP,TCP 會去檢查資料是否安全到達,否則就重新傳送資料。將傳輸的資料以 TCP 格式成為資料段,交由網路層的 IP 協定去處理,每一段資料含有一個檢查值,接收者用它來驗證資料是否受損,如果接收的資料沒有損壞,會傳回確認回去;如果資料有損會便會丟棄。TCP 具有可靠性及連線性。

UDP(使用者資料協定):

位於應用層,讓應用程式直接使用封包傳送服務,如 IP 提供的傳送服務,UDP 協定並不會去檢查封包是否安全到達目的地,因此傳送速度快,但卻是一個不可靠、非連線性的封包協定。

ICMP(網路控制訊息協定):

屬於網際層的一部分,利用 IP 封包的傳送,傳送它的訊息,ICMP 傳送的訊息執行了如偵測遠端機器是否運作(‘ping’)、資料流的控制(當封包到得太快來不及處理時,目的主機傳回一個 ICMP 的來源抑制訊息給傳送者,告訴資料來源暫時停止傳送封包)。

ICMP 並沒有 port,但它還是有它的選項引數可以使用,用來選擇 ICMP 的型別。

我們可以指定 ICMP 的名稱或是數字代表(可以執行 ipchains -h icmp 去列出詳細的名字)。

§ 4.4 指定UDP和TCP的port

指定來源和目的地的IP位址 -s -d :

來源(-s)和目的地(-d)的表示法有3種:

1. 使用完整的主稱名稱,例如:‘mouse.oit.edu.tw’ 或 ‘localhost’

2. 使用IP位址,例如:‘192.192.73.36’

3. 允許某範圍的IP位址,例如:‘192.192.73.0/24’ 或 ‘192.192.73.0/255.255.255.0’ 兩者是一樣的,都是包含了192.192.73.0 ~ 192.192.73.255的IP位址。

在斜線(‘/’)的數字代表了IP位址,‘/24’是255.255.255.0,‘/32’是 255.255.255.255,其中比較重要的是’0/0’,指全部。

範例:

ipchains -A input -s 0/0 -j DENY

說明:

‘0/0’表示指定所有來源的 IP 位址都會被拒絕,你也可以不加’-s’引數,也是指定所有的來源 IP 位址。

§ 4.5 重要的指定目標

除了去指定協定之外,還可以細分去指定它的 port

例如:

指所有來源位址的 port 80,其中 80 也可以用名字來表示’www’

-p tcp -s 0.0.0.0/0 80

假如要 TCP 封包可以到達 192.168.0.1 的任何 port,但除了 www 這個 port:

-p tcp -d 192.168.0.1 ! www

其中驚歎號’!’放置的位址也可以這樣指定:

-p tcp -d ! 192.168.0.1 www

也可以表示為不是 192.168.0.1 和 www 的 port:

-p tcp -d ! 192.168.0.1 ! www

§ 4.6 log 記錄 /var/log/message

若你有加上’-l’選項的話,關於 ipchains 的訊息會被記錄在 /var/log/message 檔案中,在標準的 Linux 系統上,kernel 的輸出訊息經由 klogd(kernel logging daemon)所記錄。其中的記錄為:

Jul 18 11:38:28 www kernel: Packet log: input REJECT eth0 PROTO=1

(1) (2) (3) (4) (5) (6) (7) (8)

192.168.1.3:8 192.168.1.1:0 L=60 S=0x00 I=7476 F=0x0000 T=32

(9) (10) (11) (12) (13) (14) (15)

ipchains記錄:

(1) 日期、時間

(2) 主機名稱

(3) 使用 kernel 來記錄

(4) 指出從 ipchains 產生訊息

(5) 所使用的規則:input

(6) 規則的目標:REJECT

(7) 封包所經過的網路卡介面:eth0

(8) 協定號碼:1(ICMP)、6(TCP)、17(UDP)

(9) 來源 IP 位址和 port

(10) 目的地 IP 位址和 port

(11) 封包的長度

(12) TOS(Type of service)

(13) IP 的 ID

(14) 資料段偏?/textarea>


〖關於我們〗〖技術成員〗〖合作機會〗〖聯絡方法〗〖意見反饋

© 2000 LinuxAid京ICP備010217號

相關文章