iptables

一、機制

部隊大院、高檔私人住宅區都是在一個被保護起來的范圍內,要想進入只能從各個大門進入,在進入的時候還在門口出示證件、或者是指紋識別、或者是保安身份認證等,只有通過了這些檢查才能進入到大院、住宅區內部。

Linux系統也是這么一個大院,netfilter就是這個大院的圍墻,prerouting、input、output、forward、postrouting就是南大門、北大門、西大門、東大門、西南門。要想從這幾個門進入到內部來,就得過門禁。但是每大門上的門禁制度和方法不一樣,raw(刷指紋)mangle(打卡)、filter(出示有效證件)nat(保安確認)。

于是便有了哪些門禁制度制用在哪些大門上的事情了。

南大門(prerouting,可以通過刷指紋(raw)、mangle(打卡)、保安確認(nat)其中的一種便可以進入。

其他大門上也各有各的門禁制度,這些大門被稱為鏈(chain)、這些門禁制度被稱為表(tables).

具體分布如下圖:

11.png

需要說明的是,這是centos6.x系列的,7.x系列的input鏈增加了nat

報文的流向可以分為以下三種情況:                                    

到本機某進程的報文:PREROUTING –> INPUT                                     

由本機轉發的報文:PREROUTING –> FORWARD –> POSTROUTING                              

由本機的某進程發出報文:OUTPUT –> POSTROUTING

  

二、對鏈的操作

總結起來就是:增、刪、改、查

 

iptables  -t 表名 {-E,-F,-N,-P,-X,-Z} 鏈名

  -P定義鏈的默認策略;其target一般可使用ACCEPTDROP

  舉例:iptables   -P  INPUT  drop   iptables   -t  nat  -P  INPUT  drop

  -N自定義規則鏈;僅在默認鏈通過某規則進行調用方可生效;因此,每個自定義鏈都有其引用記數;

實例:iptables  –t  表名 –N  鏈名(自己定義的鏈的鏈名)

  -X只能刪除自定義的空的引用計數為0的鏈;

實例:iptables  -t 表名  -X 鏈(名)

  -F清空指定的鏈,或刪除指定鏈上的規則;

實例:iptables –t 表名 –F 鏈名或者是鏈名 規則編號

  -E重命名自定義的引用計數為0的鏈;

實例:iptables –t 表名 –E 舊的鏈名 新的鏈名

 -Z清空所有鏈或指定鏈上的計數器或者是指定鏈上的指定規則的計算器

實例:iptables –t 表名 –Z [鏈名或鏈名 規則編號]

三、對表的操作

處理動作也可以總結為:增、刪、改、查

4個參數

iptables  -t 表名 {-A,-D,-I,-R} 鏈名  其他操作à固定格式 不加-t 表名 默認 –t  filter

 

  -A追加規則到指定的鏈尾部;

  實例:iptables  -t 表名 –A 鏈名  規則定義à追加到鏈尾部

  -I插入規則到指定的鏈中的指定位置,默認為鏈首;

  實例:iptables  -t  表名  -I  鏈名 規則編號 規則定義 à指定插入到鏈的指定位置

當規則編號不寫的時候表示插入成為第一行

  -D刪除指定的鏈上的指定規則;

  實例:iptables  –t  表名  -D 鏈名  規則定義

  實例:iptables  –t  表名  -D 鏈名  規則編號

  -R將指定的鏈上的指定規則替換為新的規則;

  實例:iptables  –t 表名  -R 鏈名 規則編號  規則定義—>就是規則修改,但是修改太麻煩,于是直接替換   

 

 

PS:一個鏈和表結合的查看的命令                          

查看

 -Llist, iptables [-t table] -L [chain [rulenum]] [options…]

   -n:數字格式;

   – v:詳細格式信息;                                                       -vv, -vvv :v的個數越多顯示信息越詳細

    –line-numbers:顯示鏈上的規則的編號;

    -xexactly,顯示計數器的精確值;不做取整處理

實例:iptables  –t 表名  -vnL     iptables –t 表名 –vnL  鏈名 規則編號

一般的 –L 要和-n組合使用的

   計數器:

  每條規則以及鏈的默認策略分別有各自的兩個計數器:

    (1) 匹配到的報文的個數:pkts

    (2) 匹配到的所有報文的大小之積:bytes

[root@localhoast ~]# iptables –nvL

Chain INPUT (policy ACCEPT 4538 packets, 454K bytes)第一個是報文個數 第二個是報文的大小

 pkts bytes target     prot opt in     out     source               destination

 

四、對iptables規則的制定操作

固定的格式

iptables  -t 表名  大寫字母的命令 鏈名  匹配標準 -j 目標(規則)

匹配條件的分類:

   基本匹配條件

   擴展匹配條件

   隱式擴展

   顯式擴展

基本匹配條件

前面的!表示取反 包括:源、目標ip、網卡名稱、協議名稱

    -s指定一個源ip的范圍   不寫-s就表示所有的ip  

    實例:iptable  -t 表名 –A 鏈名 -s 192.168.2.0/24

   匹配指定主機之外的地址。
   #iptables -A FORWARD -s !192.168.0.19

    -d指定一個目標ip的范圍  不寫-d表示所有的ip

    -p:檢查報文中傳輸層的協議類型,支持tcp, udp,  udplite, icmp,  icmpv6,esp,  ah, sctp, mh,或者 "all"

   實例:iptables –t表名 –A  鏈名 -p  協議名

    iptables  -t 表名 -A 鏈名 -p !協議名à除了這個協議之外的全部的協議

    -i:檢查報文進入本機時的接口是否符合本處指定的接口;INPUT, FORWARD  and  PREROUTING ;

實例:iptables –t 表名 –A 鏈名 –i  網卡名稱

    -o:檢查報文即將離開本機時經由的接口是否符合本處指定的接口;FORWARD, OUTPUT and POSTROUTING;

實例:iptables –t 表名 –A 鏈名 –o  網卡名稱                

    -m:顯式指明要使用的擴展模塊;

    -j:跳轉目標;

擴展匹配條件

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

   隱式擴展:

      -p tcp [-m tcp]

      –sport PORT[-PORT]

      –dport

      –tcp-flag 要檢查標志位列表(用逗號分隔)  必須為1的標志位列表(逗號分隔)

      -p icmp [-m icmp]

     –icmp-type

       0: echo-reply, ping響應

       8: echo-request, ping請求

iptables -t filter -A INPUT -p icmp –icmp-type 8 -j DROP                        

iptables -t filter -A INPUT -p tcp –tcp-flags syn,ack,rst,fin syn -j DROP               

iptables -t filter -A INPUT -p tcp –dport 80 –tcp-flags all none -j DROP

     顯式擴展:

       -m 擴展模塊名稱

      模塊:iptables,netfilter各擁有一部分代碼

       multiport: 多端口匹配,可用于匹配非連續或連續端口;最多指定15個端口;

        –source-ports, –sports port[,port,port:port]

        –destination-ports, –dports

        –ports

iptables -I INPUT -d 192.168.19.128 -p tcp -m multiport –dports 22,80 -j ACCEPT           

iptables -I OUTPUT -s 192.168.19.128 -p tcp -m multiport –ports 22,80 -j ACCEPT

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

    [!] –src-ragne IP[-IP]

    [!] –dst-range

iptables -A INPUT -d 192.168.19.128 -p tcp –dport 23 -m iprange –src-range 192.168.19.129-192.168.19.135 -j ACCEPT                  

iptables -A OUTPUT -s 192.168.19.128 -p tcp –sport 23 -m iprange –dst-range 192.168.19.129-192.168.19.135 -j ACCEPT

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

     –algo {kmp|bm}

     –string "STRING"

     –hex-string "HEX_STRING": HEX_STRING為編碼成16進制格式的字串;

  iptables -I OUTPUT -m string –algo bm –string "sex" -j DROP

    time: 基于時間做訪問控制

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

     –datestop

     –timestart hh:mm[:ss]

     –timestop hh:mm[:ss]

     –weekdays day[,day]

iptables -I INPUT -d 192.168.19.128 -p tcp –dport 80 -m time –timestart 08:20 –timestop 18:00 –weekdays Mon,Tue,Thu,Fri -j REJECT

    connlimit: 連接數限制,對每IP所能夠發起并發連接數做限制;

      [!] –connlimit-above 

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 192.168.19.128 -p icmp –icmp-type 8 -m limit –limit 20/minute –limit-burst 5 -j ACCEPT

    state: 狀態檢查

     –state 連接追蹤中的狀態:

      NEW: 新建立一個會話

      ESTABLISHED:已建立的連接

      RELATED: 有關聯關系的連接

      INVALID: 無法識別的連接

iptables -t filter -A OUTPUT -p tcp –sport 22 -m state –state NEW -j DROP 

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

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

    模塊:nf_conntrack_ftp

modprobe nf_conntrack_ftp                                    

lsmod | grep nf_conntrack_ftp                            

nf_conntrack_ftp       12913  0                             

nf_conntrack                            

79758  3 nf_conntrack_ftp,nf_conntrack_ipv6,xt_state

    2、放行請求報文:

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

    iptables -A INPUT -p tcp –dport 21 -m –state NEW -j ACCEPT

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

    iptables -A INPUT -m –state ESTABLISHED,RELATED -j ACCEPT

    3、放行響應報文:

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

    iptables -A OUTPUT -m –state ESTABLISHED,RELATED -j ACCEPT

   由于系統對調整連接追蹤功能所能容納的連接有最大數目,視具體清空調整最大連接數目,或者不啟用此功能

    cat /proc/sys/net/nf_conntrack_max

    65536

   其中當前追蹤的所有連接在/proc/net/nf_conntrack

    /proc/net/nf_conntrack

  不同協議或連接類型追蹤時的屬性,/proc/sys/net/netfilter目錄:

   TARGET -j target

  ACCEPT, REJECT, DROP, SNAT, DNAT, MASQERADE, RETURN, LOG, REDIRECT, MARK

    SNAT

    –to-source SIP

    DNAT

   –to-destination

iptables -t nat -A POSTROUTING -p tcp –dport 23210 -j SNAT –to-source 192.168.19.129       

iptables -t nat -A PREROUTING -p tcp –dport 23220 -j DNAT –to-destination 192.168.19.129     

iptables -A INPUT -d 192.168.19.128 -p tcp –dport 80 -j LOG –log-prefix "from iptables: 

原創文章,作者:hanlln1,如若轉載,請注明出處:http://www.www58058.com/66533

(0)
hanlln1hanlln1
上一篇 2017-01-13
下一篇 2017-01-13

相關推薦

  • 第六周

    請詳細總結vim編輯器的使用并完成以下練習題 基本模式: 編輯模式,命令模式 輸入模式 末行模式 內置的命令行接口 打開文件: # vim [options] [file ..] +#:打開文檔后,直接讓光標處于第#行的行首 +/PATTERN:打開文件后,直接讓光標處于第一個被PATTERN匹配到的行的行首   模式轉換: 編輯模式:默認模式 編…

    Linux干貨 2017-05-13
  • 數據庫基礎

    數據庫基礎 一、數據模型 數據庫模型圖 1、層次模型、2、網狀模型、 3、關系模型二維關系: 表:就是一個關系及屬性的描述,如:學生(學好,姓名,性別,班級)       行:row, entity       列:colume,…

    Linux干貨 2016-10-19
  • 8月3日課堂筆記

    課堂筆記 linux用戶和組管理(非常非常重要)    用戶管理和組管理各種相關的應用程序    簡單的管理命令 安全上下文:   每次對主機操作都是以發起一個進程來完成的,進程代表著人來執行操作,進程以其發起者的身份來運行;所以開機時有很多守護類的進程,我們應該以普通身份來運行,普通用戶通常都是系統用戶;從來不用登陸系統的;進程對文件的訪問權限,取決于發起…

    Linux干貨 2016-08-04
  • Linux系統的磁盤管理

    linux磁盤及文件系統管理 磁盤分區及文件系統管理 RAID設備 LVM: 磁盤的動態編輯管理 CPU, memory(RAM), I/O I/O設備: Disks, Ethercard (網卡) Disks: 實現持久存數數據 接口類型: IDE(ata): 并口  理論速度: 133MB/s SCSI: 并口 640MB/s SATA: 串口…

    Linux干貨 2016-08-29
  • linux基礎知識:計算機的組成及其功能

    摘要:
    1. 描述計算機的組成及其功能。
    2. 按系列羅列Linux的發行版,并描述不同發行版之間的聯系與區別。
    3. 描述Linux的哲學思想,按照自己的理解對其解釋性描述。
    4. 說明Linux系統上命令的使用格式;詳細介紹ifconfig、echo、……等命令使用,配合相應實例闡述。
    5. 如何獲取幫助信息,描述man文檔章節劃分。
    6. 羅列發行版基礎目錄名稱命名法則及功用規定。

    2017-12-03
  • LVS工作原理淺析

    一、什么是LVS         LVS是Linux Virtual Server的簡寫,意即Linux虛擬服務器,是一個虛擬的服務器集群系統。本項目在1998年5月由章文嵩博士成立,是中國國內最早出現的自由軟件項目之一。         LVS集群采用IP負載均衡技術和基于內容…

    Linux干貨 2016-11-29
欧美性久久久久