首页/安全/安全加固速查/反向路径过滤(rp_filter)防源地址欺骗
主机加固基线90 条

反向路径过滤(rp_filter)防源地址欺骗

rp_filter 校验入包源地址在路由表中的可达性,缓解 IP 欺骗与部分环路问题;CIS 建议 all 与 default 均启用严格模式(1)。

安全加固速查安全更新于 2026-10-13

rp_filter 是什么

rp_filter(反向路径过滤)在内核收包时校验源地址是否在路由表中可达:如果回程路由不指向收到该包的接口,就直接丢弃。它用于缓解 IP 源地址欺骗,也顺带避免部分路由环路问题。CIS 基线建议 all 与 default 都启用严格模式,即取值为 1。

基本信息

基线值net.ipv4.conf.all.rp_filter = 1,default.rp_filter = 1
适用平台RHEL / CentOS 系与 Debian / Ubuntu 系
风险等级中
取值含义0 关闭、1 严格模式、2 松散模式
生效方式写入 sysctl.d 后执行 sysctl --system

典型使用场景

  • 主机加固基线中的反欺骗检查项
  • 排查伪造源地址的攻击流量
  • 多上行链路环境中确认严格模式是否会误丢包
  • 虚拟机与容器宿主机的网络加固
  • 配置变更后按接口复核实际生效取值

核查取值

核查取值
sysctl net.ipv4.conf.all.rp_filter net.ipv4.conf.default.rp_filter   # 全局与默认值
sysctl -a --pattern 'net.ipv4.conf.*.rp_filter' | head -20            # 按接口逐一查看
sysctl net.ipv4.conf.eth0.rp_filter                                   # 单个接口的实际取值

加固配置

加固配置
# /etc/sysctl.d/99-hardening.conf
net.ipv4.conf.all.rp_filter = 1       # 所有接口启用严格模式
net.ipv4.conf.default.rp_filter = 1   # 新建接口默认继承严格模式
# 保存后执行:sysctl --system

取值含义

取值含义适用场景
0完全关闭校验仅在确认存在拓扑冲突时使用
1严格模式,源地址必须在本接口的回程路由上常规主机基线取值
2松散模式,源地址在任意接口可达即通过非对称路由下的折中方案
all 与 default全局与新建接口的默认值两项都应设置
接口级取值各接口自身配置与 all 和 default 共同决定最终行为
非对称路由场景(多上行链路、LVS DR 直连回包等)下严格模式会丢包:改动前先确认拓扑,必要时改用松散模式 2,而不是直接关成 0。
接口级取值与 all、default 是按取最大值的规则共同生效,改完配置要用 sysctl -a 按接口逐一复核,别只看全局那两个值。
云主机与虚拟化环境里,网关侧通常已经做了源地址校验,此时 rp_filter 属于纵深防御的一层;保持基线取值即可,不必为了压测之类的临时场景去改动它。

易错点

  • 把 rp_filter 设成 0 等于完全关闭校验,确实需要放宽时应优先选松散模式 2
  • 只改运行时取值没写进 sysctl 配置文件,重启后配置回退
  • 改完只看 all 与 default,忽略接口级取值,实际生效值可能与预期不同
  • 在非对称路由环境中直接启用严格模式,导致业务丢包,改动前必须确认拓扑

数据来源与参考

  • CIS Linux Benchmark:Ensure reverse path filtering is enabled
  • RFC 2827:网络入口过滤(BCP 38 思路)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌