「GRE」- 安全威胁

问题描述

GRE 隧道的主要作用是将数据在分支-总部之间传递,数据并不加密,有被篡改的风险;

GRE 隧道建立也有一定风险,通过伪造 IP 地址,可以使得非法设备与合法设备之间建立 GRE 隧道;

解决方案

数据校验和验证

校验和验证是指对封装的报文进行端到端校验,通过数据校验防止数据被篡改

若 GRE 报文头中的 C 位标识位置 1,则校验和有效。发送方将根据 GRE 头及 Payload 信息计算校验和,并将包含校验和的报文发送给对端。接收方对接收到的报文计算校验和,并与报文中的校验和比较,如果一致则对报文进一步处理,否则丢弃;

隧道两端可以根据实际应用的需要决定配置校验和或禁止校验和。如果本端配置了校验和而对端没有配置,则本端将不会对接收到的报文进行校验和检查,但对发送的报文计算校验和;相反,如果本端没有配置校验和而对端已配置,则本端将对从对端发来的报文进行校验和检查,但对发送的报文不计算校验和;

识别关键字

识别关键字(Key)验证是指对 Tunnel 接口进行校验。通过这种弱安全机制,可以防止错误识别、接收其它地方来的报文;

若 GRE 报文头中的 K 位为 1,则在 GRE 头中插入一个四字节长关键字字段,收发双方将进行识别关键字的验证;

关键字的作用是标志隧道中的流量,属于同一流量的报文使用相同的关键字。在报文解封装时,GRE 将基于关键字来识别属于相同流量的数据报文。只有 Tunnel 两端设置的识别关键字完全一致时才能通过验证,否则将报文丢弃。这里的“完全一致”是指两端都不设置识别关键字,或者两端都设置相同的关键字;