2008年5月2日

linux 防火牆iptables語法2.4 與2.6都可使用

上了一天課對於iptables 與封包 unix security 有了更深入的瞭解
這是上次去TWNIC上netman大大的課程偷學的 小改一下蠻好用的
雙網卡 internet eth0 , intranet eth1

===============我是分隔線=====以下為iptables 語法 2.4 2.6 ======
# iptables rule by fox 20080429
# issue by foxa0223@gmail.com
# open mail,dns,pop3
# open local 10000 22 21
# deny all connecting
iptables -F
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p icmp -j DROP
iptables -A INPUT -i eth1 -p tcp --dport 10000 -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --dport 110 -j ACCEPT
iptables -A INPUT -p tcp --dport 113 -j REJECT
iptables -A INPUT -j DROP
#iptables_save /etc/sysconfig/iptables auto start 2008.4.29
iptables-save > /etc/sysconfig/iptables

=====ip table 馬步=========
ptables 程式的功能屬於封包處理的工作
係利用不同的原則表 (rule tables)來定義
在iptables內含內建的原則表:
Filter Table 、NAT Table 、Mangle Table
而每個原則表又由數個鏈(Chains)組成

Filter Tables --------
INPUT Chain
OUTPUT Chain
FORWARD Chain

NAT Tables --------
PREROUTING Chain
POSTROUTING Chain
OUTPUT Chain

Mangle Tables -----
PREROUTING Chain
INPUT Chain


Filter Tables 是 iptables 的預設原則表
以下是 iptables 的語法:
iptables [-t/--table table類型] 命令 [比對] [-j 目標/jump]

一、. Tables 類型
--table filter 或 -t filter
--table nat 或 -t nat
--table mangle 或 -t mangle

二、命令
表示此行iptables所要執行的工作
每行iptables工作中只能有一個命令

1. -A 增加
2. -D 刪去
3. -E 更改Chain 名稱
4. -h help 說明
5. -F 清除 Chain 內容
6. -I 插入
7. -L 列出
8. -N 新增使用者定義 Chain
9. -P 設定Chain 的目標 ,但僅限於 INPUT FORWARD OUTPUT
10. -R 取代Chain 的某一原則
11. -X 刪除 使用者定義 Chain
12. -Z Chain 的計數器歸零

三、比對

1. -c 重設原則計數器
2. -d 此原則的目地IP
3. -f 封包切割
4. -i 指定此原則套用的進入介面 ( eth0 eth1)
5. -j 指定此原則的動作 ( ACCEPT DROP)
6. -n 以數字方式顯示資訊
7. -o 指定此原則套用的送出介面 ( eth0 eth1)
8. -s 此原則的來源IP
9. -v 輸出資訊
10. -x 顯示精確的數目
11. --line-numbers 顯示編號
12. --modprobe 載入模組

四、延伸比對
(1) -p tcp
1. --dport n:m 指定目地連接port 為 n 到 m 的範圍
2. --miss n:m 指定miss 數值
3. --sport n:m 指定來源連接port 為 n 到 m 的範圍
4. --syn 封包的syn 位元開啟
5. --tcp-option 比對TCP參數數值
6. --tcp-flags TCP封包的狀態旗標

(2) -p udp
1. --dport n:m 指定目地連接port 為 n 到 m 的範圍
2. --sport n:m 指定來源連接port 為 n 到 m 的範圍

(3) -p icmp
1. --icmp-type icmp的類型編號

(4) -m mac
1. --mac-source mac硬體位址

(5) -m limit
1. --limit-burst
2. --limit 平均流量

(6) -m multiport
1. --destination-ports 多個目地port
2. --ports 比對來源和目地相同封包
3. --source-ports 多個來源port

(7) -m mark
1. --mark 號碼

(8) -m owner
1. --cmd-owner 程式名稱 來自本機的封包是否為某程式產生
2. --gid-owner GID 來自本機的封包是否為某群組產生
3. --pid-owner PID 來自本機的封包是否為某程序產生
4. --uid-owner UID 來自本機的封包是否為某使用者產生
5. --sid-owner SID 來自本機的封包是否為某連線產生

(9) -m state
1. --state 狀態

(10) -m conntrack
1. --ctexpire 時間 封包有效時間
2. --ctorigdst ip 封包原始目地IP
3. --ctorigsrc ip 封包原始來源IP
4. --ctproto 通訊協定 封包通訊協定
5. --ctrepldst ip 回應封包的目的地
6. --ctreplsrc ip 回應封包的來源地
7. --ctstate 狀態 比對連線狀態
8. --ctstatus 狀態類型 內部狀態類型

(11) -m dscp
1. --dscp 數值 用來比對DSCP 數值
2. --dscp-class 符合的 DiffServ Class

(12) -m pkttype
1. --pkt-type 封包類型 此處可用封包類型有三 unicast broadcast multicast

(13) -m tos
1. -- tos 數值 封包TOS 欄位

(14) -m ah
1. --ahspi spi 數值

(15) -m esp
1. --espspi spi 數值

(16) -m length
1. --length 封包長度

(17) -m tll
1. --ttl TTL 時間

五、目標
1. ACCEPT 允許
2. DROP 丟棄
3. RETRUN 跳過
4. QUEUE 重導佇列

六、目標延伸
(1) -j LOG
1. --log-tcp-sequence 序號 記錄TCP序號
2. --log0ip-option 選項 記錄封包表頭選項內容
3. --log-level 記錄層級 指定記錄為 SYSLOG
4. --log-prefix 前置名稱 記錄到 SYSLOG 中的前置名稱
5. --log-tcp-options 選項 記錄 TCP 封包表頭的選項內容

(2) -j MARK
1. --set-mark 數值 封包進行標記 ,供後面處理

(3) -j REJECT
1. --reject-with 類型

(4) -j TOS
1. --set-tos TOS值

(5) -j MIRROR
1. 實驗用目標

(6) -j SNAT
1. --to-source IP 位址 封包來源ip 改寫為特定IP

(7) -j DNAT
1. --to-destination IP 位址 封包目地ip 改寫為特定IP

(8) -j MASQUERADE
1. --to-ports 連接port 來源指派一個可供使用的port

(9) -j REDIRECT
1. --to-ports 連接port 目地指派一個可供使用的port

(10) -j ULOG
1. --ulog-cprange Bytes 數目 覆製到使用者空間的大小
2. --ulog-nlgroup 群組編號 設定群組編號以接受封包
3. --ulog-prefix 字串 記錄檔使用特殊字首
4. --ulog-qthreshold 封包數 允許儲存在佇列的封包數目

(11) -j TCPMSS
1. --clamp-mss-to-pmtu 不需參數,直接設 MTU-40
2. --set-mss 數值 設定MSS 欄位值

(12) -j DSCP
1. --set-dscp 數值 設定 DSCP 欄位
2. --set-dscp-class DiffServ 等級 將 DSCP 欄位設為 DiffServ等級

(13) -j ECN
1. --ecn-tcp-remove 不需參數,移除所有ECN位元


儲存 iptables 設定
因 iptables 存在記憶體內,關機會失效
所以必需將原則儲存起來

儲存:
iptables-save > filename
回復:
iprables-restore < filename


或是寫成檔案
直接由 /etc/rc.d/rc.local 執行它
Share/Save/Bookmark

1 意見: