家庭宽带IPv6地址使用揭秘

网络
本文将探讨家宽IPv6地址的公网可用性,分析智能网关设备安全机制的原理,结合白名单提出一种终端和服务器间端到端安全通信的方法。

Part 01 IPv6地址可用性 

设备获取IPv6的全球单播地址后,理论上能够实现设备和业务服务器的双向端到端通信,我们使用笔记本电脑接入家宽网络,分配IPv6地址后并验证时,发现其公网连通性是不可达状态,这是什么原因呢?

bogon:~ root$ telnet 2409:8a28:ec3:51f0:2a12:93ff:fe68:fee5
Trying 2409:8a28:ec3:51f0:2a12:93ff:fe68:fee5...
telnet: connect to address
2409:8a28:ec3:51f0:2a12:93ff:fe68:fee5: Network is unreachable

原来是考虑到IPv6地址暴露后存在安全风险,运营商在智能网关标准中,提出了端口权限最小化和防攻击功能的要求,在网关出厂时,厂商会在网关中预置特定的防火墙策略。由于网络策略的存在,家宽网络中IPv6地址实际可用性是很差的,直接下行的转发流量基本都被网关拦截或丢弃。为了安全有效地使用IPv6地址,结合白名单机制的网络策略或许是一个不错的选择。

图1 《中国移动智能家庭网关技术规范》-端口权限最小化

图片

图2 《中国移动智能家庭网关技术规范》-防攻击功能

Part 02 IPv6 session防火墙 

IPv6端到端的通信,由于网络策略的原因,导致服务器到终端设备的下行流量被拦截。

经过对智能网关的分析,发现上述拦截能力可称为IPv6 session防火墙,该防火墙功能基于iptables实现,在网关的iptables转发链中,存在一个FORWARD_FIREWALL子链,用于存储控制转发的session防火墙策略。

防火墙策略FORWARD:

Chain FORWARD (policy ACCEPT 107 packets, 14852 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1     138K   34M SKIPLOG    all      *      *       ::/0                 ::/0                 mark match ! 0x4000000/0x4000000
2     3547  290K TCPMSS     tcp      *      ppp0    ::/0                 ::/0                 tcp flags:0x06/0x02 tcpmss match 1300:65535 TCPMSS set 1380
3     3176  235K TCPMSS     tcp      ppp0   *       ::/0                 ::/0                 tcp flags:0x06/0x02 tcpmss match 1300:65535 TCPMSS set 1380
4    73122   11M FORWARD_ALG  all      *      !br+    ::/0                 ::/0                
5     146K   36M JNI_FILTER  all      *      *       ::/0                 ::/0                
6    72710   25M IP_FILTER_IN  all      !br+   *       ::/0                 ::/0                
7    73122   11M IP_FILTER_OUT  all      br+    *       ::/0                 ::/0                
8    73122   11M PARCTL_MAC  all      br+    *       ::/0                 ::/0                
9    73122   11M URL_FILTER  all      br+    *       ::/0                 ::/0                
10   73122   11M MAC_FILTER  all      br+    *       ::/0                 ::/0                
11    146K   36M FORWARD_FIREWALL  all      *      *       ::/0                 ::/0

(1)当关闭时,防火墙策略为空,

Chain FORWARD_FIREWALL (1 references)
pkts bytes target prot opt in out source destination

(2)开启ipv6 session防火墙后,Forward链策略中新增了两条策略:

Chain FORWARD_FIREWALL (1 references)
pkts bytes target prot opt in out source destination 
252 26905 ACCEPT all br+ * ::/0 ::/0 
234 72274 ACCEPT all * br+ ::/0 ::/0 ctstate RELATED,ESTABLISHED

这两条策略即为实现IPv6 Session防火墙的核心,基于iptables状态跟踪实现,其实现的转发控制能力如下:

(1)接收从任意br开头的网卡到其它网卡的流量(上行);

(2)接收从网卡到任意br开头的网卡的流量,该流量的状态必须是已经建立双向连接或该连接的衍生连接(下行)。

简单来说,就是终端设备往外访问的一律放行,外部服务器来访问终端设备,如果之前没建立过连接,直接拦截,反之则放行。具体的状态信息可参考如下概念:

- 概念分析

(1)iptables状态跟踪

从Linux2.6.15的内核版本后,iptables开始支持状态跟踪(conntrack),该功能依赖于netfilter的内核模块nf_conntrack。此后,iptables可以根据包的状态进行二次的过滤拦截和状态跟踪。它也是state/ctstate和nat的主要依赖模块。

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

(2)conntrack五种状态

conntrack共可以为连接标记五种状态,分别如下:

➟ NEW:新建连接请求的数据包,且该数据包没有和任何已有连接相关联。判断的依据是conntrack当前“只看到一个方向数据包(UNREPLIED)”,没有回包。

➟ ESTABLISHED:该连接是某NEW状态连接的回包,也就是完成了连接的双向关联。

➟ RELATED:匹配那些属于helper模块定义的特殊协议的网络连接,该连接属于已经存在的一个ESTABLISHED连接的衍生连接。简而言之,A连接已经是ESTABLISHED,而B连接如果与A连接相关,那么B连接就是RELATED。这部分不理解没有关系,也很难一句话说清,后面章节会用大量笔墨来阐明它。

➟ INVALID:匹配那些无法识别或没有任何状态的数据包。这可能是由于系统内存不足或收到不属于任何已知连接的ICMP错误消息,也就是垃圾包,一般情况下我们都会DROP此类状态的包。

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

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

Part 03 IPv6白名单机制 

IPv6  Session防火墙通过两条策略实现了转发防护的能力,那么是否可以在此基础上实现白名单机制,答案是肯定的,使用白名单机制将限定通道两端的发送者和接受者,同时又保持原有的网络策略开启,符合智能网关的标准。

iptables可以通过策略添加实现白名单机制,在智能网关的转发策略中加入允许发起下行请求的IPv6地址,并按照该地址筛选下行的源IP地址的数据包并放行。经测验,开启ipv6 session防火墙,并添加特定白名单后,终端设备即可支持ipv6地址的下行访问。以6.ipw.cn为例,我们新增策略如下:

ip6tables -t filter -I FORWARD -s 6.ipw.cn -j ACCEPT 
ip6tables -t filter -I FORWARD -d 6.ipw.cn -j ACCEPT

新增后的iptables策略清单。

Chain FORWARD (policy DROP 3 packets, 246 bytes)
pkts bytes target     prot opt in     out     source               destination 
7  1833 ACCEPT     all      *      *       ::/0                 2409:8928:e20:84fe:a11b:b839:66ae:84a7 
101  7226 ACCEPT     all      *      *       2409:8928:e20:84fe:a11b:b839:66ae:84a7  ::/0

外网获取ipv6地址结果 ,即设备IPv6地址能够被6.ipw.cn访问。

curl 6.ipw.cn
2409:8a28:efb:b8a6:d1b6:9c3b:2f2e:c3ee

上述结果即说明该IPv6地址可被公网访问,说明白名单机制在理论上可行。

Part 04 总结 

本文从实际家庭网络环境出发,分析家庭宽带网络中设备的IPv6实际可用性和安全分析,并尝试了一种基于白名单的IPv6地址使用方式,能够保证地址在防火墙开启的前提下使用公网的访问能力,但从家庭网络全局角度来看,目前缺少整体的安全发现和分析的能力,特别是在IPv6开放的情况下,原有的安全分析设备的支持性和分析能力,需要适配提升。下一篇文章我们来谈一谈,如何提供一种针对家庭网络的安全监测能力。

责任编辑:庞桂玉 来源: 移动Labs
相关推荐

2023-06-25 14:57:47

网络IPv6

2013-03-28 10:12:49

网络地址IPv6地址解析

2011-08-30 14:38:29

2017-03-16 14:50:26

IPv4IPv6互联网

2010-05-25 10:28:20

IPv6地址类型

2010-05-26 15:37:02

IPv6地址类型

2012-05-31 16:33:18

IPv6地址IPv6

2010-05-31 17:32:15

IPv6地址规划

2011-08-24 14:14:19

2020-06-28 14:12:19

IPv6地址IPv4

2010-05-27 14:11:09

IPv6地址

2013-07-31 09:38:16

IPv6地址单播地址多播地址

2010-06-02 13:53:26

IPv6地址

2010-06-01 13:55:09

IPv6地址

2010-05-31 11:12:27

IPv6地址自动配置

2018-03-12 14:14:28

LinuxULAIPv6

2010-05-26 15:29:30

IPv6地址

2012-06-14 09:16:33

2012-06-14 16:56:25

2010-08-10 09:57:08

思科路由器实测
点赞
收藏

51CTO技术栈公众号