rp_filter(Reverse Path Filtering,反向路径过滤)

rp_filter(Reverse Path Filtering,反向路径过滤)

Content #

rp_filter 依据 RFC 1812(IPv4 路由器要求)第 5.3.8 节的规定,对入站数据包的源地址进行验证。其核心规则如下:

  1. 检查入站数据包的源 IP 地址:

假设一个数据包从 接口 eth0 进入主机(或路由器),其 源地址为 192.168.1.100。

  1. 模拟查找该源地址的回程路径(Reverse Path Lookup,RPF):

设备检查本地 路由表,如果 主机需要向 192.168.1.100 发送数据包,它会选择哪个接口?假如根据路由表,去往 192.168.1.100 的数据包 应该从 eth1 发出,而不是 eth0,那么就说明该数据包的源 IP 可能是伪造的。

  1. 如果入站接口和预期出站接口不匹配,则丢弃数据包:

这种不匹配可能意味着该数据包的源地址被篡改(即来源欺骗)。在这种情况下,rp_filter 会 默默地丢弃该数据包(即不发送任何 ICMP 错误信息)。

作用 #

  1. 防止 IP 欺骗攻击:

攻击者可能伪造源 IP 地址来绕过访问控制或发动 DDoS 攻击,rp_filter 机制可以检测到不匹配的流量并丢弃它们。

  1. 提高网络安全性:

RFC 1812 建议 默认启用 该功能,以便路由器能够主动防御基于源地址欺骗的攻击,如 Smurf 攻击 和 反射放大攻击。

for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
    echo "1" > $f
done

From #