关于iptables连接跟踪模块的NEW状态和INVALID状态的笔记

前面的状态介绍来源于以下两篇博文:
https://blog.51cto.com/misliang/1371361
https://blog.csdn.net/dhRainer/article/details/84846417

状态跟踪

conntrack将数据流的状态信息以Hash表的形式储存在内存中,包括五元组信息以及超时时间等。这里说的状态跟踪并非是指状态协议(如TCP)中连接状态的跟踪,而是conntrack特有的与网络传输协议无关的状态的跟踪。

下面介绍一下conntrack中的状态分类以及在TCP和UDP这两种4层协议中,是如何进行状态跟踪的。

五种状态
conntrack共可以为连接标记五种状态,分别如下:
NEW,表示这个分组需要发起一个连接,或者说,分组对应的连接在两个方向上都没有进行过分组传输。NEW说明这个包是我们看到的第一个包。意思就是,这是conntrack模块看到的某个连接第一个包,它即将被匹配了。比如,我们看到一个SYN包,是我们所留意的连接的第一个包,就要匹配它。第一个包也可能不是SYN包,但它仍会被认为是NEW状态。比如一个特意发出的探测包,可能只有RST位,但仍然是NEW。

ESTABLISHED,表示分组对应的连接已经进行了双向的分组传输,也就是说连接已经建立,而且会继续匹配这个连接的包。处于ESTABLISHED状态的连接是非常容易理解的。只要发送并接到应答,连接就是ESTABLISHED的了。一个连接要从NEW变为ESTABLISHED,只需要接到应答包即可,不管这个包是发往防火墙的,还是要由防火墙转发的。ICMP的错误重定向等信息包也被看作是ESTABLISHED,只要它们是我们所发出的信息的应答。

RELATED,表示分组要发起一个新的连接,但是这个连接和一个现有的连接有关,例如:FTP的数据传输连接和控制连接之间就是RELATED关系。RELATED是个比较麻烦的状态。当一个连接和某个已处于ESTABLISHED状态的连接有关系时,就被认为是RELATED的了。换句话说,一个连接要想是RELATED的,首先要有一个ESTABLISHED的连接。这个ESTABLISHED连接再产生一个主连接之外的连接,这个新的连接就是RELATED的了,当然前提是conntrack模块要能理解RELATED。ftp是个很好的例子,FTP-data连接就是和FTP-control有RELATED的。还有其他的例子,

INVAILD,表示分组对应的连接是未知的,说明数据包不能被识别属于哪个连接或没有任何状态。有几个原因可以产生这种情况,比如,内存溢出,收到不知属于哪个连接的ICMP错误信息。一般地,我们DROP这个状态的任何东西。

这些状态可以一起使用,以便匹配数据包。这可以使我们的防火墙非常强壮和有效。以前,我们经常打开1024以上的所有端口来放行应答的数据。现在,有了状态机制,就不需再这样了。因为我们可以只开放那些有应答数据的端口,其他的都可以关闭。这样就安全多了。

UNTRACKED

这是一种特殊状态,或者说并不是状态。它是管理员在raw表中,为连接设置NOTRACK规则后的状态。这样做,便于提高包过滤效率以及降低负载。

conntrack是一种状态跟踪和记录的机制,本身并不能过滤数据包,只是提供包过滤的依据。 有状态是一种过滤依据,无状态实际也是一种过滤依据。

因此,需要小心的是,设置了NOTRACK,不代表是放行,只是它的状态是UNTRACKED。所以如果想要对这种包放行或者处理,同样需要配置相应的规则。具体使用方法可以查看下面“设置NOTRACK”部分的内容。
————————————————

笔记:
conntract -L (-p tcp -s ip1 ip2) 命令
或者安装iptstate后, 可用 iptstate 命令查看跟踪模块的连接状态表
测试:用xcap重放数据包对状态进行测试
在这里插入图片描述
通过上图-L -n -v 选项 查看通过各个规则的数据包,得出这个数据包所属的状态

测试目的:
测试对于没有任何连接状态信息的第一个通xcap回放的tcp包,iptables会判定数据包为什么状态?

测试结果:
首包是 SYN/ACK、FIN/ACK、RST这三种数据包会被判定为INVALID 数据包。
其他SYN、ACK、 ACK+PSH、 这几种数据包会判定为NEW包。
注测试中:只有 首包是SYN包的数据包才会在conntract状态信息表(用conntract -L查看到的)里查询得到相关的信息,其他的首包在状态信息表中都查询不到任何状态信息。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值