iptables 防范伪造源 IP 地址攻击的技术实现

陌敏大大_8908

陌敏大大_8908

2026-07-31

197人浏览

原创

iptables本身不直接防范ip欺骗,需配合内核rp_filter(推荐设为1或2)实现反向路径检查,并辅以iptables规则封禁私有地址段(如10.0.0.0/8、172.16.0.0/12、192.168.0.0/16等)及连接限速,构成分层防御。

iptables 防范伪造源 ip 地址攻击的技术实现

iptables 本身不直接“防范”伪造源 IP 的攻击,而是通过规则配置配合内核机制,实现对可疑流量的识别与拦截。真正起作用的是反向路径过滤(rpfilter)和显式匹配源地址合法性两类策略,而非单纯靠 NAT 或伪装功能。

启用反向路径过滤(推荐首选)

这是 Linux 内核原生支持的轻量级防护机制,能自动丢弃明显违背路由拓扑的入向包(即“非对称路径”包,常见于伪造源 IP 的扫描或反射攻击)。

  • 临时启用:运行 echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
  • 永久生效:在 /etc/sysctl.conf 中添加 net.ipv4.conf.all.rp_filter = 1,再执行 sysctl -p
  • 注意:若服务器有多网卡且路由不对称(如多出口、策略路由),建议设为 2(松散模式),即 net.ipv4.conf.all.rp_filter = 2

用 iptables 显式拒绝私有地址/保留地址作为源

攻击者常伪造 RFC1918 私有网段(如 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16)或特殊地址(如 0.0.0.0、127.0.0.0/8、224.0.0.0/4)发起攻击。可在 INPUT 和 FORWARD 链中提前拦截:

  • iptables -A INPUT -s 10.0.0.0/8 -j DROP
  • iptables -A INPUT -s 172.16.0.0/12 -j DROP
  • iptables -A INPUT -s 192.168.0.0/16 -j DROP
  • iptables -A INPUT -s 127.0.0.0/8 -j DROP
  • iptables -A INPUT -s 0.0.0.0/8 -j DROP
  • iptables -A INPUT -s 224.0.0.0/4 -j DROP

这些规则应放在通用 ACCEPT 规则之前,否则会被跳过。

限制新连接的源地址范围(适用于明确业务网段)

如果服务只面向特定子网(如办公网 192.168.10.0/24),可直接放行该段,其余全部拒绝:

WriteWise
WriteWise

WriteWise是一款AI文本写作工具,喜马拉雅推出的免费网络文学与小说 AI 写作工具。

下载
  • iptables -A INPUT -p tcp --dport 22 -s 192.168.10.0/24 -j ACCEPT
  • iptables -A INPUT -p tcp --dport 22 -j DROP

这样即使攻击者伪造了合法公网 IP,只要不在白名单内,也无法建立新连接。

结合 conntrack 识别异常连接行为

伪造源 IP 的 SYN Flood 攻击常表现为大量无状态的新连接请求。可通过限制单 IP 新建连接速率来缓解:

  • iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 50 -j DROP
  • iptables -A INPUT -p tcp --syn -m limit --limit 20/sec --limit-burst 50 -j ACCEPT

注意:这类限速需配合 conntrack 模块,确保内核已加载(lsmod | grep nf_conntrack)。

实际部署时,rp_filter 是基础防线,辅以源地址黑名单和连接速率控制,才能形成有效分层防御。单纯依赖 iptables 匹配源 IP 并不可靠——因为三层伪造包在到达本机前无法被验证,关键在于早拦截、少响应、不回包。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Java 网络安全
Java 网络安全

本专题聚焦 Java 在网络安全与加密通信中的应用,系统讲解常见加密算法(MD5、SHA、AES、RSA)、数字签名、HTTPS证书配置、令牌认证(JWT、OAuth2)及常见安全漏洞防护(XSS、SQL注入、CSRF)。通过实战项目(如安全登录系统、加密文件传输工具),帮助学习者掌握 Java 安全开发与加密技术的实战能力。

2025.10.13

4905

12

PHP 安全与防护
PHP 安全与防护

本专题聚焦于PHP开发中的安全问题与防御措施,详细讲解SQL注入、XSS攻击、CSRF攻击、文件包含漏洞等常见安全风险及其修复方法。通过结合实际案例,帮助开发者理解漏洞成因,掌握输入验证、会话安全、加密存储与安全编码规范,全面提升PHP网站的安全防护水平。

2025.11.04

415

21

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

2026.10.22

20

11

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

2026.10.22

0

10

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

2026.10.22

20

15

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

2026.10.22

0

10

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

2026.10.22

20

25

Golangci-lint配置文件与规则设置
Golangci-lint配置文件与规则设置

本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

2026.10.22

0

15

Golangci-lint安装与入门教程
Golangci-lint安装与入门教程

本专题讲解Golangci-lint的安装、初始化、基础命令和首次代码检查,覆盖本地环境、Docker及多平台用法,帮助Go开发者快速上手。

2026.10.22

0

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.9万人学习