簡易防火牆建置與流量統計之三(轉)[@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號 | |