iptables詳解

  • iptables的工作機制

  • iptables有五個鉤子函數(hook functions),也叫五個規則鏈。

  • 1.PREROUTING (路由前)

  • 2.INPUT (數據包流入口)

  • 3.FORWARD (轉發關卡)

  • 4.OUTPUT(數據包出口)

  • 5.POSTROUTING(路由后)

  •   這是NetFilter規定的五個規則鏈,任何一個數據包,只要經過本機,必將經過這五個鏈中的其中一個鏈。 

  • iptables的策略

  • 防火墻的3個表:

  • 1.filter 定義允許或者不允許的

  • 2.nat 定義地址轉換的 

  •                 3.mangle功能:修改報文原數據

  • 對于filter來講一般只能做在3個鏈上:INPUT ,FORWARD ,OUTPUT

  • 對于nat來講一般也只能做在3個鏈上:PREROUTING ,OUTPUT ,POSTROUTING

  • 而mangle則是5個鏈都可以做:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING

  • 注意:規則的次序非常關鍵,誰的規則越嚴格,應該放的越靠前,而檢查規則的時候,是按照從上往下的方式進行檢查的。

  • 一.規則的寫法:

  •  iptables定義規則的方式比較復雜:

  •  格式:iptables [-t table] COMMAND chain CRETIRIA -j ACTION

  •  -t table :3個filter nat mangle

  •  COMMAND:定義如何對規則進行管理

  •  chain:指定你接下來的規則到底是在哪個鏈上操作的,當定義策略的時候,是可以省略的

  •  CRETIRIA:指定匹配標準

  •  -j ACTION :指定如何進行處理

  •  比如:不允許172.16.0.0/24的進行訪問。

  •  iptables -t filter -A INPUT -s 172.16.0.0/16 -p udp –dport 53 -j DROP

  •  當然你如果想拒絕的更徹底:

  •  iptables -t filter -R INPUT 1 -s 172.16.0.0/16 -p udp –dport 53 -j REJECT

  • 二:詳解COMMAND:

  • 1.鏈管理命令(這都是立即生效的)

  • -P :設置默認策略的(設定默認門是關著的還是開著的)

  • 默認策略一般只有兩種

  • iptables -P INPUT (DROP|ACCEPT)  默認是關的/默認是開的

  • 比如:

  • iptables -P INPUT DROP 這就把默認規則給拒絕了。并且沒有定義哪個動作,所以關于外界連接的所有規則包括Xshell連接之類的,遠程連接都被拒絕了。

  • 注意:一般來說不要改默認的規則

  •         -F: FLASH,清空規則鏈的(注意每個鏈的管理權限)

  •     iptables -t nat -F PREROUTING

  •     iptables -t nat -F 清空nat表的所有鏈

  •         -N:NEW 支持用戶新建一個鏈

  •             iptables -N inbound_tcp_web 表示附在tcp表上用于檢查web的。

  •         -X: 用于刪除用戶自定義的空鏈

  •             使用方法跟-N相同,但是在刪除之前必須要將里面的鏈給清空昂了

  •         -E:用來Rename chain主要是用來給用戶自定義的鏈重命名

  •             -E oldname newname

  •          -Z:清空鏈,及鏈中默認規則的計數器的(有兩個計數器,被匹配到多少個數據包,多少個字節)

  •             iptables -Z :清空

  • 2.規則管理命令

  •          -A:追加,在當前鏈的最后新增一個規則

  •          -I num : 插入,把當前規則插入為第幾條。

  •             -I 3 :插入為第三條

  •          -R num:Replays替換/修改第幾條規則

  •             格式:iptables -R 3 …………

  •          -D num:刪除,明確指定刪除第幾條規則

  •         

  • 3.查看管理命令 “-L”

  •  附加子命令

  •  -n:以數字的方式顯示ip,它會將ip直接顯示出來,如果不加-n,則會將ip反向解析成主機名。

  •  -v:顯示詳細信息

  •  -vv

  •  -vvv :越多越詳細

  •  -x:在計數器上顯示精確值,不做單位換算

  •  –line-numbers : 顯示規則的行號

  •  -t nat:顯示所有的關卡的信息

  • 三:詳解匹配標準

  • 1.通用匹配:源地址目標地址的匹配

  •  -s:指定作為源地址匹配,這里不能指定主機名稱,必須是IP

  • IP | IP/MASK | 0.0.0.0/0.0.0.0

  • 而且地址可以取反,加一個“!”表示除了哪個IP之外

  •  -d:表示匹配目標地址

  •  -p:用于匹配協議的(這里的協議通常有3種,TCP/UDP/ICMP)

  •  -i eth0:從這塊網卡流入的數據

  • 流入一般用在INPUT和PREROUTING上

  •  -o eth0:從這塊網卡流出的數據

  • 流出一般在OUTPUT和POSTROUTING上

  •         

  • 2.擴展匹配

  • 2.1隱含擴展:對協議的擴展

  •     -p tcp :TCP協議的擴展。一般有三種擴展

  • –dport XX-XX:指定目標端口,不能指定多個非連續端口,只能指定單個端口,比如

  • –dport 21  或者 –dport 21-23 (此時表示21,22,23)

  • –sport:指定源端口

  • –tcp-fiags:TCP的標志位(SYN,ACK,FIN,PSH,RST,URG)

  •     對于它,一般要跟兩個參數:

  • 1.檢查的標志位

  • 2.必須為1的標志位

  • –tcpflags syn,ack,fin,rst syn   =    –syn

  • 表示檢查這4個位,這4個位中syn必須為1,其他的必須為0。所以這個意思就是用于檢測三次握手的第一次包的。對于這種專門匹配第一包的SYN為1的包,還有一種簡寫方式,叫做–syn

  •     -p udp:UDP協議的擴展

  •         –dport

  •         –sport

  •     -p icmp:icmp數據報文的擴展

  •         –icmp-type:

  • echo-request(請求回顯),一般用8 來表示

  • 所以 –icmp-type 8 匹配請求回顯數據包

  • echo-reply (響應的數據包)一般用0來表示

  •                   

  • 2.2顯式擴展(-m)

  •      擴展各種模塊

  •       -m multiport:表示啟用多端口擴展

  •       之后我們就可以啟用比如 –dports 21,23,80

  • 四:狀態檢測:state

  • 是一種顯式擴展,用于檢測會話之間的連接關系的,有了檢測我們可以實現會話間功能的擴展

  •         什么是狀態檢測?對于整個TCP協議來講,它是一個有連接的協議,三次握手中,第一次握手,我們就叫NEW連接,而從第二次握手以后的,ack都為1,這是正常的數據傳輸,和tcp的第二次第三次握手,叫做已建立的連接(ESTABLISHED),還有一種狀態,比較詭異的,比如:SYN=1 ACK=1 RST=1,對于這種我們無法識別的,我們都稱之為INVALID無法識別的。還有第四種,FTP這種古老的擁有的特征,每個端口都是獨立的,21號和20號端口都是一去一回,他們之間是有關系的,這種關系我們稱之為RELATED。

  • 所以我們的狀態一共有以下幾種:

  •     NEW :新連接請求;

  •         ESTABLISHED:已建立的連接

  •         RELATED:相關聯的連接,當前連接是一個新請求,但附屬于某個已存在的連接

  •         INVALID:無法識別的連接

  •  UNTRACKED:未追蹤的連接

  • 比如: iptables -I OUTPUT -s 172.16.0.6 -m state –state ESTABLISHED -j ACCEPT

  • 注解:請求只要能進來,就允許出去。

  • 裝載連接追蹤模塊:內核模塊裝載

  • lsmod | less 查看linux模塊

  • 手動裝載modprobe nf_conntrack模塊

  • modprobe nf_conntrack_ipv4

  • modprobe nf_conntrack_ftp

  • cd /proc/sys/net/  cat nf_conntrack

  • 五:處理動作(跳轉目標)

  • 簡單target:

  • ACCEPT ,DROP

  • 擴展target:

  • REJECI

  • LOG(日志)

  • 保存和載入規則:

  • iptables-save保存到標準輸出

  • iptables-save > /etc/sysconfig/iptables-v1 重定向到文件中

  • 重載之前的防火墻策略 iptables-restore < /etc/sysyconfig/iptables-v1

  • iptables-restore

  • -n,–noflush:不清除原有規則

  • -t,–test:僅分析生成規則集,但不提交

  • 設置開機啟動iptabels:

  • chkconfig –level 3 5 iptabels on

  • centos 6:

  • 保存規則:

  • service iptabels save

  • 保存規則于/etc/sysconfig/iptables文件,覆蓋保存;

  • 重載規則:

  • service iptables restart

  • 默認重載/etc/sysconfig/iptables文件中的規則

  • 規則優化的思路:

  • (1)優先放行雙方向狀態為ESTABLISHED的報文;

  • (2)服務不同類別的功能的規則,匹配到報文可能性更大的放前面

  • (3)服務同一類別的功能的規則,匹配條件較嚴格的放在前面;

  • (4)設置默認策略:白名單機制;一般來說不建議

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

(0)
jjjhnjjjhn
上一篇 2017-03-15 19:09
下一篇 2017-03-15

相關推薦

  • 密碼保護:第二天

    無法提供摘要。這是一篇受保護的文章。

    Linux干貨 2017-07-15
  • Homework Week-6 vim使用、腳本編程

    請詳細總結vim編輯器的使用并完成以下練習題 1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#; cp /etc/rc.d/rc.sysinit /tmp/ vim /tmp/rc.sysinit 轉換為末行模式: :%s@^[[:s…

    Linux干貨 2016-09-19
  • TCP/IP五層模型

    1、簡述osi七層模型和TCP/IP五層模型 網絡的七層模型是由OSI和CITT一起制定的開放系統互連參考模型: TCP/IP 五層模型可以分為:應用層,傳輸層,網絡層,數據鏈路層,物理層。 2、簡述ip route家族命令 語法:ip [ OPTIONS ] OBJECT { COMMAND | help } OBJECT={link ,addr,rout…

    2018-01-05
  • n28 第二周作業

    n28 第二周作業

    Linux干貨 2017-12-09
  • Linux之磁盤管理

    Linux之磁盤管理       linux系統中, 一切都是文件, 而這些文件都是存儲在磁盤中, 因此對于磁盤的管理是非常重要的, Linux磁盤管理的好壞, 直接關系到整個系統的性能問題, 本文主要介紹了磁盤結構, 分區類型, 管理分區, 管理文件系統, 掛載設備, 管理虛擬內存這幾大項的內容.    &…

    Linux干貨 2016-08-29
  • 初識SElinux

    一、SElinux(Secure Enhanced Linux):安全增強的Linux        SElinux是一個在內核中實踐的強制訪問控制(MAC)安全性機制,由美國國家安全局NSA(The National Security Agency)和SCC(Secure Computing Co…

    Linux干貨 2016-09-15
欧美性久久久久