首先,我們先簡單學習瞭解一下有關Linux防火牆的知識點:
防火牆具有隔離功能,工作在網絡或主機邊緣,對進出網絡或主機的 數據包基於一定的規則檢查,並在匹配某規
則時由規則定義的行爲進行處理的一 組功能的組件,基本上的實現都是默認情況下關閉所有的通過型訪問,只開放允
許訪問的策略。
接下來我們將學習有關於使用管理防火牆的命令:
iptables :命令行工具,用來編寫規則,寫好的規則被送往netfilter,告訴內核如何去處理信息包。
iptables由五個表(table:filter、nat、mangle、raw、security filter)和五個鏈(chain : INPUT、OUTPUT、FORWARD、
PREROUTING、POSTROUTING)以及一些規則組成 。
filter表:根據預定義的規則過濾符合條件的數據包 。
nat表:network address translation 地址轉換規則表 。
mangle表:修改數據標記位規則表 。
raw表:關閉NAT表上啓用的連接跟蹤機制,加快封包穿越防火牆速度。
security表:用於強制訪問控制(MAC)網絡規則,由Linux安全模塊(如SELinux)實現,優先級由高到低的順序爲:
security -->raw-->mangle-->nat-->filter
規則rule:根據規則的匹配條件嘗試匹配報文,對匹配成功的報文根據規則定義的處理動 作作出處理。
規則格式:iptables [-t 表名] 選項 chain [-m 擴展需加載模塊 [per-match-options]] -j 動作 [per-target-options]
選項:1、鏈管理: -N:new, 自定義一條新的規則鏈
-X:delete,刪除自定義的空的規則鏈
-P:Policy,設置默認策略;對filter表中的鏈而言,其默認策略有: ACCEPT:接受 DROP:丟棄
-E:重命名自定義鏈;引用計數不爲0的自定義鏈不能夠被重命名,也不能被刪除。
、 2.查看: -L:list, 列出指定鏈上的所有規則,本選項須置後
-n:numberic,以數字格式顯示地址和端口號
-v:verbose,詳細信息 -vv 更詳細
--line-numbers:顯示規則的序號 常用組合: -vnL --line-numbers
-S: selected,以iptables-save 命令格式顯示鏈上規則
3、規則管理: -A:append,追加
-I:insert, 插入,要指明插入至的規則編號,默認爲第一條
-D:delete,刪除 (1) 指明規則序號 (2) 指明規則本身
-R:replace,替換指定鏈上的指定規則編號
-F:flush,清空指定的規則鏈
-Z:zero,置零 iptables的每條規則都有兩個計數器 (1) 匹配到的報文的個數 (2) 匹配到的所有
報文的大小之和
匹配規則:1.基本規則:[!] -s, --source address[/mask][,...]:源IP地址或範圍
(! 表示取反)[!] -d, --destination address[/mask][,...]:目標IP地址或範圍
[!] -p, --protocol protocol:指定協議,可使用數字如0(all) protocol: tcp, udp, icmp, icmpv6, 等等。
[!] -i, --in-interface name:報文流入的接口;只能應用於數據報文流入環節,只 應用於INPUT、
FORWARD、PREROUTING鏈
[!] -o, --out-interface name:報文流出的接口;只能應用於數據報文流出的環 節,只應用於
FORWARD、OUTPUT、POSTROUTING鏈
2.拓展規則:(1)隱式擴展:在使用-p選項指明瞭特定的協議時,無需再用-m選項指明擴展模塊 的擴
展機制,不需要手動加載擴展模塊
tcp協議的擴展選項
[!] --source-port, --sport port[:port]:匹配報文源端口,可爲端口範圍
[!] --destination-port,--dport port[:port]:匹配報文目標端口,可爲範圍
(2)顯示拓展:必須使用-m選項指明要調用的擴展模塊的擴展機制,要手動加載擴
展模塊 [-m matchname [per-match-options]]
處理動作:-j 動作 [per-target-options]
簡單:ACCEPT,DROP
擴展:REJECT:--reject-with:icmp-port-unreachable默認
RETURN:返回調用鏈
REDIRECT:端口重定向
DNAT:目標地址轉換
SNAT:源地址轉換
等等,在此只介紹一些常用的選項
處理動作的顯示拓展:multiport擴展 :以離散方式定義多端口匹配,最多指定15個端口。
[!] --source-ports,--sports port[,port|,port:port]... 指定多個源端口
[!] --destination-ports,--dports port[,port|,port:port]... 指定多個目標端口
[!] --ports port[,port|,port:port]...多個源或目標端口
iprange擴展 :指明連續的(但一般不是整個網絡)ip地址範圍
[!] --src-range from[-to] 源IP地址範圍
[!] --dst-range from[-to] 目標IP地址範圍
舉例:
4、string擴展 對報文中的應用層數據做字符串模式匹配檢測
--from offset 開始偏移
--to offset 結束偏移
[!] --string pattern 要檢測的字符串模式
[!] --hex-string pattern要檢測字符串模式,16進制格式
5、time擴展 根據將報文到達的時間與指定的時間範圍進行匹配
--datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]] 日期
--datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
--timestart hh:mm[:ss] 時間
--timestop hh:mm[:ss]