天天看點

IPtables之二:基礎規則編寫

上一篇博文說明了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,如需轉載請自行聯系原作者

繼續閱讀