iptables :包過濾型防火牆
功能:
filter:過濾,防火牆
nat:network address translation 網絡地址轉換
mangle:拆解報文,做出修改,封裝報文。
raw:關閉nat表上啓用的連接追蹤機制
流入:PREROUTING-->INPUT
流出:OUTPUT-->POSTROUTING
轉發:PREROUTING-->FORWARD-->POSTROUTING
各功能的分別實現;
filter:INPUT,FORWARD,OUTPUT
nat:PREROUTING,OUTPUT,POSTROUTING
mangle:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
raw:PREROUTING,OUTPUT
路由發生的時刻;
報文進入本機後;
判斷目標主機
報文發送之前;
判斷經由哪個接口送往下一跳
iptables:四表五鏈
四表:filter,nat,mangle,raw
五鏈;INPUT,FORWARD,OUTPUT,PREROUTING,POSTROUTING
添加規則要點:
1.實現哪種功能,判斷添加在哪張表
2.報文流經的路徑,判斷添加在哪個鏈上
鏈:鏈上規則的次序,即爲檢查的次序。
1.同類規則(訪問同一個應用),匹配範圍小的放上面
2.不同類規則(訪問不同應用),匹配到報文頻率大的放上面
3.將那些可由一條規則描述得多個規則合併爲一個
4.設置默認策略
功能優先級次序:raw,mangle,nat,filter
規則:
組成部分;報文的匹配條件,匹配到之後處理動作
匹配條件:根據協議報文特徵指定
基本匹配條件
擴展匹配條件
處理動作:
內建處理機制
自定義處理機制
注意:報文不能經過自定義鏈,只能在內置鏈上通過規則進行引用後生效;
iptables:規則管理工具
添加,修改,刪除,顯示等;
規則和鏈有計數器:
pkts:由規則或鏈所匹配到的報文的個數
bytes:由規則或鏈匹配到的所有報文大小之和;
iptables [-t table] {-A|-D} chain rule-specification
iptables [-t table] -I chain [rulenum] rule-specification
iptables [-t table] -R chain rulenum rule-specification
iptables [-t table] -D chain rulenum
iptables [-t table] -S [chain [rulenum]]
iptables [-t table] {-F|-L|-Z} [chain [rulenum]] [options...]
iptables [-t table] -N chain
iptables [-t table] -X [chain]
iptables [-t table] -P chain target
iptables [-t table] -E old-chain-name new-chain-name
rule-specification = [matches...] [target]
match = -m matchname [per-match-options]
target = -j targetname [per-target-options]
iptables[-t table ]SUBCOMMAND CHAIN CRETERIA -j TARGET
-t table
filter,nat,mangle,raw
鏈管理:
-F:flush,清空規則鏈;
-N;new,創建自定義規則鏈
-X: drop,刪除用戶自定義的規則鏈;
-Z: zero,清零,置零規則計數器
-P:policy,爲指定鏈設置默認策略;對filter表中的鏈而言,默認策略通常有ACCEPT,DROP,REJECT;
-E:rEname,重命名自定義鏈,引用計數不爲0的自定義鏈,無法改名,也無法刪除
規則管理:
-A:append,將新規則增加到指定鏈的尾部;
-I;insert,將新規則插入到指定鏈的指定位置
-D:delete,刪除指定鏈上的指定規則
1,指定匹配條件
2,指定規則編號
-R;replace,替換指定鏈上的指定規則
查看:
-L;list,列出指定鏈上的所有規則
-n;numberic,以數字格式顯示地址和端口號
-v:verbose,顯示詳細信息
-vv,-vvv
--line-numbers:顯示規則編號;
-x:exactly,顯示計數器計數結果的精確值。
清空:iptables -F
查看:iptables -L
查看:iptables -L -n
查看:iptables -L -n -v
查看:iptables -L -n -vvv
查看:iptables -L -n -vv
查看:iptables -t nat -L
查看:iptables -t mangle -L
查看:iptables -t raw -L
查看:iptables -t filter -L
新建:iptables -t filter -N test
刪除鏈:iptables -t filter -X test
重命名:iptables -t filter -E test test1
修改默認策略:iptables -t filter -P FORWARD DROP
查看:iptables -t filter -L -v --line-numbers
刪除規則:iptables -D INPUT 5
匹配條件:
基本匹配:
[!]-s,--src,--source IP|Netaddr :檢查報文中源地址是否符合此處指定的地址範圍
[!]-d,--dst,--destination IP|Netaddr :檢查報文中目標地址是否符合此處指定的地址範圍
-p,--protocol:檢查報文中的協議,ip首部中的protocols所標識的協議;
-i,--in-interface IFAS:數據報文的流入接口;僅能用於PREROUTING,INPUT及FORWARD鏈上;
-o,--out-interface :數據報文的流出接口;僅能用於FORWARD,OUTPUT,POSTROUTING鏈上
擴展匹配:-m macth_name --spec_options
例如:-m tcp --dport 22
隱私擴展:對-p protocol指明的協議進行的擴展,可以省略-m選項
-p tcp
--dport 端口:目標端口可以一個或多個
--sport 端口:源端口
只允許22號端口通過TCP連接
iptables -I INPUT -d 172.16.6.14 -p tcp --dport 22 -j ACCEPT
iptables -I OUTPUT -s 172.16.6.14 -p tcp --sport 22 -j ACCEPT
--tcp-flags:列表1,列表2:檢查列表1中所指明的所有標誌位,且這其中,列表2所標識出的所有標誌位必須爲1
而餘下的必須爲0,沒在列表中指明的,不做檢查。
SYN,ACK,FIN,RST,PSH,URG
--tcp-flags SYN,ACK,FIN,RST SYN
--syn:新建TCP連接的第一次請求
-p icmp
--icmp-type
可以用數值標識類型:一般0 或8
0:echo-reply
8:echo-request
iptables -A INPUT
-p udp
--dport
--sport
顯示擴展:必須使用-m
目標:
-j:jump,跳轉
ACCEPT:接受
DROP:丟棄
REJECT:拒絕
RETURN:返回調用鍵
REDIRECT:端口重定向
LOG:記錄日誌
MARK:做防火牆標記
DNAT:目標地址轉換
SNAT:源地址轉換
MASQUERADE:地址僞裝
。。。
自定義鏈:有自定義鏈上的規則進行匹配檢查
允許TCP訪問
iptables [-t filter] -A INPUT -d 172.16.6.14 -p tcp -j ACCEPT
iptables [-t filter] -A OUTPUT -s 172.16.6.14 -p tcp -j ACCEPT
設置默認策略
iptables -P INTPUT DROP
iptables -p OUTPUT DROP
iptables -p FORWARD DROP
允許ping
iptables [-t filter] -A INPUT -d 172.16.6.14 -p icmp -j ACCEPT
iptables [-t filter] -A OUTPUT -s 172.16.6.14 -p icmp -j ACCEP
允許某一臺可以ping
iptables -A INPUT -s 172.16.6.49 -d 172.16.6.14 -p icmp -j ACCEPT
iptables -A OUTPUT -s 172.16.6.14 -d 172.16.6.49 -p icmp -j ACCEPT
允許22號端口
iptables -I INPUT -d 172.16.6.14 -p tcp --dport 22 -j ACCEPT
iptables -I OUTPUT -s 172.16.6.14 -p tcp --sport 22 -j ACCEPT