tcp_invalid_ratelimit 是什么
该参数限制内核响应无效 TCP 报文时回送 RST 或挑战 ACK 的速率上限,用于缓解盲重置类攻击与反射放大。取值是一个时间窗,例如 500ms 表示在同一个时间窗内对相似无效报文的响应不超过一次;设为 0 表示关闭限速。它属于防护参数,不参与正常流量的吞吐与延迟调节。
基本信息
| 参数名 | net.ipv4.tcp_invalid_ratelimit |
|---|---|
| 取值形式 | 带时间单位,如 500ms、1s |
| 关闭限速 | 设为 0 |
| 查看命令 | sysctl net.ipv4.tcp_invalid_ratelimit |
| 持久化 | /etc/sysctl.d/ 下的配置文件加 sysctl --system |
典型使用场景
- 安全加固:确认公网主机默认开启无效报文限速
- 异常流量排查:怀疑存在 RST 放大时先核对限速是否生效
- 临时排障:确认某个协议异常是否与限速有关,之后立即恢复
- 基线巡检:把该值与其他 TCP 防护参数一起纳入检查清单
- 内核升级后回归:确认新内核的默认行为是否符合既有基线
查看与设置
查看与设置
sysctl net.ipv4.tcp_invalid_ratelimit # 查看当前值
sysctl -w net.ipv4.tcp_invalid_ratelimit=500ms # 临时改到 500ms
echo 'net.ipv4.tcp_invalid_ratelimit = 500ms' > /etc/sysctl.d/99-net-sec.conf
sysctl --system # 持久化并校验取值与行为
| 取值 | 行为 | 适用判断 |
|---|---|---|
| 0 | 关闭限速,每个无效报文都可能得到响应 | 仅限临时排障 |
| 500ms 等时间窗 | 同一时间窗内同类无效报文的响应受限 | 常规加固取值 |
| 内核默认值 | 随版本演进变化,需实测确认 | 作为基线起点 |
排查网络异常时可能临时关闭限速以确认因果关系,但必须记录并在排查结束后恢复;关闭期间主机对无效报文的响应能力会回到无限制状态。
该参数只影响内核对无效报文的响应速率,不能阻止攻击流量到达本机,公网暴露的服务仍需在边界做流量清洗与访问控制。
排查与加固顺序
- 先读取现状,判断当前取值是内核默认还是人工设置过
- 怀疑 RST 放大时,抓包统计单位时间内发出的 RST 数量与来源
- 临时关闭限速只用于确认因果关系,确认后立即恢复并记录
- 加固变更落到 /etc/sysctl.d/,并纳入例行安全基线检查