Iptables ——基本配置原理

Linux:網絡防火牆

netfilter:Frame 內核提供的框架

IPtables:數據報文過濾:NAT mangle等規則生成工具數據,過濾放在netfilter中Frame才能生效。

IP Header 32位  版本號4位,報文首部的長度4位(需要乘以4纔是首部長度,首部爲32位),

Type of Service 服務類型,Total Length 報文總長度,Idetification (Fragment ID)段標識

不同設備支持的發送最大數據 進行分片

M F(more Fragment)更多的分片 D F(dont Fragment)不能分片 控制標記

Fragment Offset段偏移 報文的順序 報文的排列順序

Idetification段標識一樣表示要將報文合併在一起,DF是不能分片,報文在互聯網上發送是不能分片,如果分片報錯。

Time-to-live(TTL)生存時間,protocol 協議 ,ICMP(三層半協議)網絡控制協議,header  Chercksum首部校驗和(存放首部的校驗碼),

Source IP Address 源IP地址,Destination IP Address 目的地址,Options可變長度可選數據,TCP UDP通過端口號區別是哪個進程,0-1023只能管理員使用。

TCP報文首部 傳輸控制協議 有三次握手 有重傳機子

Source Port Number 源端口號 Destination 目標端口號  

sequence Number 序列號(發送方告訴接收方第一個是隨機值後面依次加一) acknowledgement Nunber 確認號 (確認好加一)每一次確認加一   URG緊急指針0無效 1有效 用來說明確認號是否有效 

RST 重置 抖動時重置 

urgent pointer

windows Size滑動窗口用來接收和發送方的緩衝區大小

TCP Checksum 校驗和 

網絡能夠發送的數據格式:文本 二進制

被動打開 listen

請求主動打開 sent

主動發送報文 SYN=1 ack =0第一次 SYN_SENT

                      服務器回包   SYN=1 ACK =1  SYN_RECV

                      第二次發包    SYN=1 ACK=2 SYN_established

                       服務器回包   SYN=1 ACK=3 SYN_established

四次揮手     客戶端狀態 發送 FIN FIN_wait1  

                  服務器端 close_wait     ACK      TIME_WAIT1

客戶端等待服務器服務器數據發送完成 

                 服務器 FIN 數據發送完成

客戶端不能立即close

2*msl

closing狀態 

                   客戶端  ack  斷開連接  last_ack

服務器立即(closed)斷開   

上面爲TCP的狀態轉移

TCP的有限狀態機實現TCP的狀態轉移。

網絡:IP報文首部,TCP協議

防火牆:硬件,軟件

規則:標準 

將數據報文按照處理數據,如果數據符合規則,就處理。

FRAMEWORK:

默認規則:

開放(堵非法)

關閉(通認證)

規則:匹配標準

        IP:源IP,目標IP

        TCP:SPORT,DSPORT SYN=1,FIN=0,RST=0,ACK=0,SYN=1,FIN=0,RST=0,ACK=1

                 SYN=1,FIN=0,RST=0,ACK=2(establish)  

       ICMP:ICMP-type 使用報文類型

數據報文過濾:

Linux2.0

ipfw/firewall

Linux2.0

ipchain/firewall

Linux2.4

iptables/netfilter

/proc/sys/net/ipv4/ip_forward是否允許轉發

路由決策:進入本機網卡到tcpip協議棧然後進行決策轉發。

hook:鉤子函數。工作在TCPIP上的三個鉤子。規則就是鉤子。

nat地址轉換:nat會化表 

nat轉換使用了5個鉤子。

目標地址轉換:在報文進入時更改目標地址

原地址轉換:在報文離開時更改原地址

hook function:鉤子函數

preouting

input

output

forward

prestrouting

規則:

PREROUTING

INPUT

PORWARD

OUTPUT

POSTROUTING

filter(過濾):表

INPUT

OUTPUT

FORWARD

nat(地址轉換):表

PREROUTING

OUTPUT

POSTROUTING

mangle(拆開、修改、封裝):表

PREROUTING

INPUT

FORWARD

OUTPUT

POSTROUTING

raw(原始格式):表

 PREROUTING

OUTPUT

iptables:raw :PREROUTING 

              mangle:PREOUTING

                nat :PREOUTING

             路由選擇:

1 、本機應用:mangle:INPUT

                 filter:INPUT

1.1路由選擇

raw:OUTPUT

mangle:OUTPUT

nat:OUTPUT

filter:OUTPUT

  2、數據轉發:

                       mangle:FORROUTING

                        fliter:FORWARD 

出棧數據:

mangle:POSTROUTING

nat:POSTROUTING

500條規則

能否使用自定義規則?

可以使用自定義鏈,但只在被調用才能發揮作用,而且如果沒有自定義鏈中的任何規則匹配,應該還有返回機制:

用可以刪除自定義的空鏈

默認鏈無法刪除

每個規則都有兩個,內置的計數器:

被匹配的報文個數

被匹配的報文大小之和

規則:匹配標準、處理動作

匹配標準:

通用匹配

 iptables  [-t TABLE] COMMAND CHAIN [num]匹配標準 -j 處理辦法

擴展匹配

            -s ,--src 指定原地址

             -d,--dst 指定目標地址

             -p {tcp|udp|icmp}指定四層協議

              -i  INTERFACE:指定數據報文流入的接口

                   可用於定義標準的鏈:PREROUTING,INPUT,FORWARD

             -o INTERFACE:指定數據報文流出的接口

                 可用於標準定義的鏈:OUTPUT,POSTROUTING,FORWARD

              -j TARGET跳轉

                    ACCEPT

                    DROP 丟棄
                    REJECT拒絕

              隱含擴展:不用特別指明那個模塊進行的擴展時使用-p {tcp|udp|icmp}

              顯示擴展:必須指明由那個模塊進行擴展,在ipatles中使用-m選項完成此動作

iptables -t filter -A INPUT -s 192.16.0.0/16  -d 192.16.100.7  -j DROP









   





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