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/netfilterIptables ——基本配置原理

/proc/sys/net/ipv4/ip_forward是否允许转发

路由决策:进入本机网卡到tcpip协议栈然后进行决策转发。

hook:钩子函数。工作在TCPIP上的三个钩子。规则就是钩子。

nat地址转换:nat会化表 Iptables ——基本配置原理

nat转换使用了5个钩子。

目标地址转换:在报文进入时更改目标地址

原地址转换:在报文离开时更改原地址

hook function:钩子函数

preouting

input

output

forward

prestrouting

规则:

PREROUTINGIptables ——基本配置原理

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









   





相关文章: