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









   





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