上一篇博文說明了iptable的一些常識
這裡簡明再複述一下
linux的防火牆包含了2部分,分别是存在于核心空間的netfilte和使用者空間的iptables
而iptable可以定義4類規則
filter:防火牆核心所在
nat:位址轉換
mangle:實作資料包修改;如TTL
raw:不常用,這裡不做多解釋
優先級次序:raw-mangle-nat-filter
在iptable中定義的規則要輸送到核心中的netfilte才能生效
定義防火牆規則一般有2種模式。一種是比較嚴格的,隻放行允許通過的資料包,其餘資料包全部阻止。還有一種比較寬松的,隻阻止不允許通過的資料包。在企業應用中,一般使用第一種,根據業務需要放行對應的資料包。
Iptable定義規則的一般機制(更加具體的文法參照man文檔)
iptable [-t table] sub_command CHAIN [num] [cretiria] [-j ACCTION]
-t:
預設沒有指定是filter,也可以指定mangle,nat,raw
sub_command:
rule:
-A(append):追加
-I(insert):插入,如 -I INPUT 3
-D(delete):删除,指定标準或者num 如 -D OUTPUT 8
-R(replace):替換 -R FORWARD 6
chain:
-F(flush):清空鍊
-N(new):新增一條鍊
-X:删除使用者自定義的空鍊
-Z:清空計數器
關于計數器:每條規則都有2條計數器
1:記錄被本條規則比對到的包個數
2:記錄比對到本條規則到的包的體積之和
-E:重命名鍊
policy:
-P chain {ACCEPT|DROP}
exsample:
将INPUT鍊的預設政策修改為DROP
iptables -t filter -P INTPUT DROP
view:
-L 顯示定義的規則
-n:使用這個選項,就不會去反向解析IP位址的主機名,加快察看速度
-v:詳細資訊,可以多加幾個v,越多越詳細
-x:精确顯示資料包體積
--line-numbers
比對條件:
通用比對:
-s IP/NETWORK:源位址
-d IP/NETWORK:目标位址
-p {tcp|udp|icmp}:指定協定
-i input interface:指定資料包進入的接口
-o output interface:指定資料包出去的接口
example:
禁止192.168.1.0/24網段ping192.168.2.1主機
iptables -t fliter -A INTUP -s 192.168.1.0/24 -d 192.168.2.1 -p icmp -j DROP
擴充比對
隐式擴充:指對-p選項中指定的協定進行的擴充
-p {tcp|udp|icmp}
--sport portnum 源端口
--dport portnum 目标端口
--tcpflags 針對tcp的标志位
--icmp-type icmp的包類型。
擴充上面的exapmle
iptables -t fliter -A INTUP -s 192.168.1.0/24 -d 192.168.2.1 -p icmp –icmp-type 8 -j DROP
這裡明确拒絕了192.168.1.0/24網段的icmp-request包,8是icmp-request包,0是icmp-echo包
拒絕192.168.2.1主機通路本機的web服務
iptables -t fliter -A INPUT -s 192.168.2.1 -p --dport 80 -j DROP
iptables -t fliter -A INPUT -s 192.168.2.1 -p --dport 443 -j DROP
規則的寫法有多種,也可以寫在OUTPUT鍊上,不過效率沒有INPUT上高,而如果寫在OUTPUT上 ,應該這樣寫
iptables -t fliter -A OUTPUT -d 192.168.2.1 -p –sport 80 -j DROP
iptables -t fliter -A OUTPUT -d 192.168.2.1 -p –sport 443 -j DROP
具體寫法要按照需求,分析資料包的走向而定
顯式擴充:使用-m指定要加載的擴充(下一章具體描述)
-j TARGET:跳轉到到的鍊常見的有以下3種
ACCEPT
DROP
REJECT
基本的用法先到這裡,下一篇将具體說說顯式擴充
本文轉自lustlost 51CTO部落格,原文連結:http://blog.51cto.com/lustlost/939989,如需轉載請自行聯系原作者