iptables一些簡單運用

iptables:防火牆

  firewallTCP/IP協議棧; linux(內核)

        主機防火牆

網絡防火牆

工作於主機或網絡邊緣,對於進出的報文根據定義的規則做檢查,進而對被規則匹配到的報文作爲做響應處理的套件

 

IPSintrusion protect system***防禦系統 

IDSintrusion detect system***檢測系統

 

 防火牆:

  網絡層防火牆

  應用層防火牆

防火牆的分類:

  簡單包過濾防火牆

  帶狀態檢測的包過濾防火牆



Iptables內置鏈:

prerouting:路由前

input:到達本機內部的報文必經之路

forward:由本機轉發的報文必經之路

output:由本機發出的報文必經之路

postrouting:路由後

 

iptables

filter:過濾,定義是否允許通過防火牆

nat:地址轉換,啓用connection_track;   目標端口,源端口

mangle:報文拆封,包裝,轉發

raw:目標是關閉nat表上啓用的連接追蹤功能  。

 

Iptables內置鏈和表對應關係

PREROUTING   INPUT     FORWARD    OUTPUT    POSTROUTING

Fliter:②③④

nat:①④⑤ 在①做目標地址轉換   在⑤做源地址轉換

mangle:①-

raw:①④

 

數據報文流程:

跟本機內部進程通信;

進入:-->prerouting-->input

出去:-->output-->postrouting

 

由本機轉發:

請求:-->PREROUTING,-->FORWARD-->POSTROUTING

響應:-->PREROUTING,-->FORWARD-->POSTROUTING 

    規則中如果限定原地址、目標地址、源端口、目標端口等與流向相關的設定

         寫規則

數據報文的流向:

IP和目標IP由流向決定; 

 

注意:iptables:用戶空間的工具,寫規則,並自動發往netfilter,立即生效;

       netfilter:接收並生效規則。

 

如何保存啓用的規則於規則文件中:

 1#iptables-save > /etc/sysconfig/iptables

 2#service iptables Sava

 生效規則文件中的規則:

 1#iptables-restore < /etc/sysconfig/iptables

 2#service iptables restart

     執行的操作:清空現有規則,讀取並生效規則文件中的規則。

 

iptables基本語法:

iptables[-t table]  command    chain        crtiria    -j   target 

指明那張表  命令選項   做什麼處理   匹配條件    跳轉目標

           -t TABLE: 

         nat, mangle, raw, filter

         默認爲filter

 

command

鏈:

   -Fflush清除 清空規則鏈  如果不指定表 表明全部清空

   -Nnew,自建一條鏈  

   -Xdelete刪除一條自定義的空鏈

   -Zzero計數器歸零  被本規則所匹配包數  和字節大小之和

   -Ppolicy設定默認策略,對filter表來講,默認規則爲acceptdrop

   -Erename重命名自定義鏈

 鏈中的規則

  -Aappend增加

  -I:insert插入一條新規則

  -D:delete刪除

  -Rreplace替換規則

 

查詢:

   -L:列表

   -n:numeric以數字格式顯示主機地址和端口

   -v:詳細格式;-vv

   --line-numbers:顯示規則編號

   -x:不要對計數器的計數結果做單位換算,而顯示其精確值。

  pkts  bytes  target   prot  opt     in       out        source     destination

  包數  字節數  目標    協議  選項   流入的接口 流出的接口   源地址   目標地址


iptables [-t table] -A  鏈名 匹配條件 -j 處理目標

    匹配條件

通用匹配

-s 地址:匹配包的源地址,指定報文源ip地址匹配的範圍;可以是ip,也可以是     網絡地址;可使用!取反。

--src,--source

  -d地址:目標地址   指定報文目標ip地址匹配的範圍;

  --dst,--destination

  -P協議:指定匹配報文的協議類型,一般有三種tcp,udp和ICMP;

  -i IN_IF;數據報文流入的接口; prerouting,input,forward

  -o OUT_IF:數據報文流出的接口;output,forward,postrouiting

    

擴展匹配:調用netfilter額外模塊實現特殊檢查機制,(使用到相關功能,要使用iptables命令的-m選項來指定調用哪個模塊)

      隱式擴展:當使用-p{tcp|udp|icmp}中的一種時,可以直接使用擴展專用選項

-p tcp [-m tcp]

        --sport port[-port]:指定源端口

  

        --dport port[-port]:指定目標端口

  

--tcp-flags :tcp標誌位  要檢查標誌位列表(用逗號分隔) 必須爲1的標誌位列表(逗號分隔)

例如:--tcp-flags syn,ack,rst,fin

 -all 所有位  

                        例如: iptables -I INPUT -p tcp --tcp-flags all all -j DROP

 -all none     

                        例如:iptables -I INPUT -p tcp --tcp-flags all none -j DROP

 --syn

                  -p udp [-m udp]

         --sport

         --dport

-p icmp [-m icmp]

--icmp-type

0:echo-reply,ping響應

8:echo-request,ping請求

   

   顯示擴展:必須明確說明使用哪個模塊進行擴展,而後才能使用其擴展專用選項

 -m:擴展模塊名稱                  

 -m state --state


multiport:多端口匹配

可用於匹配非連續或連續端口;最多指定15個端口;

 

專用選項:

--source-ports,--sports port[,port,port:port]源端口

--destiantion-ports,--dports 目標端口

--ports:不做限定

 

例如:

# iptables -I INPUT -d 172.16.100.7 -p tcp -m multiport --dports 22,80 -j ACCEPT

# iptables -I OUTPUT -s 172.16.100.7 -p tcp -m multiport --sports 22,80 -j ACCEPT


iprange:匹配指定範圍內的地址;匹配一段連續的地址而非整個網絡時有用;

專用選項:

[!]--src-range IP[-IP]

[!]--dst-range

例如: 

# iptables -A INPUT -d 172.16.100.7 -p tcp --dport 23 -m iprange --src-range 172.16.100.1-172.16.100.100 -j ACCEPT

# iptables -A OUTPUT -s 172.16.100.7 -p tcp --sport 23 -m iprange --dst-range 172.16.100.1-172.16.100.100 -j ACCEPT

      

string:字符串匹配,能夠檢測報文應用層中的字符串

 字符串匹配檢測高效算法

     kmp,bm

 

      專用選項:

--algo {kmp|bm}

--string “STRING”

--hex-string “HEX_STRING”:HEX_STRING爲編碼成16進制格式的字串;

例如:# iptables -I OUTPUT -m string --algo kmp --string "sex" -j DROP


time:基於時間做訪問控制

專用選項:

--datestart YYYY[-MM][-DD[Thh[:mm[:ss]]]]

--datestop

 

 --timestart hh:mm[:ss]

 --timestop hh:mm[:ss]

 --weekdays day[,day]

  mon,tue

      例如:# iptables -I INPUT -d 172.16.100.7 -p tcp --dport 80 -m time --timestart 08:20  --timestop 18:40 --weekdays Mon,Tue,Thu,Fri -j REJECT


connlimit:連續數限制,對每ip所能夠發起併發連接數做限定;

專用選項

 [!]--connlimit-above [n]

 

 例如:iptables -A INPUT -d 172.16.100.7 -p tcp --dport 22 -m connlimit --connlimit-above 2 -j DROP



limit:速率限制

專用選項

--limit n[/second|/minute|/hour|/day]

--limit-burst n

例如:# iptables -A INPUT -d 172.16.100.7 -p icmp --icmp-type 8 -m limit --limit 20/minute --limit-burst 5 -j ACCEPT


state:狀態檢查

專用選項:

 --state

  

 連接追蹤中的狀態

NEW:新建一個會話,

ESTABLISHED:已建立的連續

RELATED:有關聯關係的連接

INVALID:無法識別的連接

調整連接追蹤功能所能容納的連接的最大數目;

/proc/sys/net/nf_conntrack_max

當前追蹤的所有連接

/proc/net/nf_conntrack

不同協議或連接類型追蹤時的屬性:

/proc/sys/net/netfilter目錄

放行被動模式下的FTP服務:

1、裝載模塊/lib/modules/KERNEL_VERSION/kernel/net/netfilter/

模塊:nf_conntrack_ftp

2、放行請求報文:

 (1)放行NEW狀態對21端口請求的報文;

  (2) 放行ESTABLISHED以及RELATED狀態的報文

3、放行響應報文:

  (1) 放行ESTABLISHED以及RELATED狀態的報文

NEW:有限放行

 

優化規則:儘量減少規則條目,彼此不相關的匹配機會較多的放在上面,屬於同一功能匹配規則更嚴格放在上面;


處理目標:

內置目標

DROP 拒絕  悄悄丟棄

REJECT 明確說明拒絕

ACCEPT 允許

自定義的鏈

        例如:iptables -t filter -A INPUT -s 172.16.0.0/16 -d 172.16.100.7 -p icmp -j DROP


刪除

iptables [-t table] -D chain rulenum

例如:iptables -t filter -D input 1


設定策略:

iptables [-t table] -p chain target


修改規則

iptables [-t table] -R chain rulenum rule-specification

例如:iptables -R OUTPUT 1 -s 172.16.100.7 -d 172.16.0.0/16 -o eth0 -p tcp --sport 22 -j ACCEPT


插入規則:

iptables [-t table] -I chain [rulenum] rule-specification

iptables -I INPUT -i lo -j ACCEPT  能進不能出

iptables -I OUTPUT -o lo -j ACCEPT  可進可出


創建自定義鏈:

iptables [-t table ] -N chain

例如:iptables -t filter -N http_in

iptables -A http_in -d 172.16.100.7 -p tcp --dport 80 -m iprange --src-range 172.16.100.1-172.16.100.100 -j ACCEPT



刪除自定義且0引用的空鏈

iptables [-t table ] -X chain


重命名自定義鏈且 0引用

iptables [ -t table ] -E old_name new_name

目標:

RETURN:在自定義鏈中無法匹配報文時,將其返回主鏈

NAT:

SNAT:源地址轉換

DNAT:目標地址轉換

PNAT:端口地址轉換

FULL NAT:全地址轉換

SNAT

--to-source SIP表示轉換成那個源地址圖5-23

iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -j SNAT --to-source 172.16.100.7


MASQUERADE:地址僞裝 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章