DDOS 应急响应Linux防火墙 Iptable 使用方式方法

目录

Linux防火墙介绍

[1. IPTables](#1. IPTables)

[2. 调整防护策略](#2. 调整防护策略)

[3. 限速(Rate Limiting)](#3. 限速(Rate Limiting))

[4. 软件层防护](#4. 软件层防护)

[🌰 实际案例](#🌰 实际案例)

Linux防火墙基础防御策略

一、基础防护策略

[1. 限制单个IP的HTTP请求速率](#1. 限制单个IP的HTTP请求速率)

[2. 限制并发连接数](#2. 限制并发连接数)

二、高级过滤规则

[3. 封禁异常User-Agent](#3. 封禁异常User-Agent)

[4. 拦截慢速攻击](#4. 拦截慢速攻击)

三、优化与维护

[5. 设置白名单](#5. 设置白名单)

[6. 定期清理旧规则](#6. 定期清理旧规则)

[7. 持久化保存配置](#7. 持久化保存配置)

[⚠️ 注意事项](#⚠️ 注意事项)

实际案例分析结合Iptable

一、攻击特征分析(前5分钟)

二、紧急防御配置(8分钟)

[1. 快速封禁攻击源IP段](#1. 快速封禁攻击源IP段)

[2. HTTP层精细化过滤](#2. HTTP层精细化过滤)

[3. 全局连接数管控](#3. 全局连接数管控)

三、攻击缓解验证(5分钟)

[1. 实时监控规则命中情况](#1. 实时监控规则命中情况)

[2. 业务健康检查](#2. 业务健康检查)

四、事后加固措施(攻击停止后)

[1. 规则持久化](#1. 规则持久化)

[2. 构建分层防御体系](#2. 构建分层防御体系)

[📊 案例效果数据](#📊 案例效果数据)

[⚠️ 关键注意事项](#⚠️ 关键注意事项)


Linux防火墙介绍

1. IPTables

  • 是Linux系统自带的防火墙工具,用于配置网络数据包的过滤规则(允许/拒绝特定流量)。

  • 功能示例:

    • 封禁恶意IP地址

    • 控制端口访问权限(如仅开放80/443端口)

    • 实现网络地址转换(NAT)


2. 调整防护策略

指通过修改IPTables规则,动态应对攻击行为。例如:

复制代码
# 封禁特定IP(如攻击源)
iptables -A INPUT -s [攻击IP] -j DROP
​
# 仅允许特定端口(如Web服务)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -j DROP  # 拒绝其他所有流量

3. 限速(Rate Limiting)

通过限制连接频率防止资源耗尽攻击(如DDoS):

复制代码
# 限制同一IP每秒最多10个新连接
iptables -A INPUT -p tcp --syn -m limit --limit 10/s -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP

4. 软件层防护

  • 特点: 在操作系统层面通过软件配置实现防护,灵活性高、成本低,但依赖服务器性能。

  • 典型应用场景

    • 防御SYN Flood攻击

    • 阻止端口扫描

    • 缓解CC攻击(HTTP请求洪水)


🌰 实际案例

若服务器遭遇DDoS攻击,管理员可能通过以下步骤防御:

  1. 分析攻击特征(如高频来源IP/特定协议)

  2. 动态更新IPTables规则封禁攻击IP或限制速率

  3. 监控流量变化并调整规则策略


Linux防火墙基础防御策略

一、基础防护策略

1. 限制单个IP的HTTP请求速率
复制代码
# 允许每秒最多20个新HTTP连接,超出则丢弃
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 20 -j DROP
​
# 限制每个IP每秒最多10个HTTP请求(针对短连接攻击)
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m limit --limit 10/second --limit-burst 20 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -j DROP
2. 限制并发连接数
复制代码
# 每个IP最多保持50个HTTP并发连接
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j REJECT

二、高级过滤规则

3. 封禁异常User-Agent

常见攻击工具使用特殊UA标识(如"X-attacker"):

复制代码
# 封禁含特定关键词的请求
iptables -A INPUT -p tcp --dport 80 -m string --string "User-Agent: X-attacker" --algo bm -j DROP
4. 拦截慢速攻击

防御类似Slowloris的攻击(长时间保持不完整连接):

复制代码
# 丢弃HTTP头传输时间超过60秒的连接
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 60 --hitcount 10 -j DROP

三、优化与维护

5. 设置白名单

避免误封合法IP(如搜索引擎或API客户端):

复制代码
# 允许信任IP段(如192.168.1.0/24)无限制访问
iptables -I INPUT -s 192.168.1.0/24 -p tcp --dport 80 -j ACCEPT
6. 定期清理旧规则
复制代码
# 查看当前规则(确认无冲突)
iptables -L -n -v
​
# 删除旧测试规则(例如删除INPUT链第3条规则)
iptables -D INPUT 3
7. 持久化保存配置
复制代码
# Debian/Ubuntu
iptables-save > /etc/iptables/rules.v4
​
# CentOS/RHEL
service iptables save

⚠️ 注意事项

若攻击规模极大(超过1Gbps),建议启用云服务商的流量清洗服务(如AWS Shield/AliCloud Anti-DDoS)。

  1. 性能影响:高频率规则匹配可能增加CPU负载,建议在攻击缓解后适当放宽限制

  2. 组合防御 :结合Web服务器层防护(如Nginx的limit_req模块)效果更佳

  3. 监控调整 :实时观察日志 /var/log/iptables.log,动态更新封禁阈值


实际案例分析结合Iptable


一、攻击特征分析(前5分钟)

通过监控发现异常指标:

复制代码
# 查看当前80端口连接数(发现5000+ ESTABLISHED连接)
netstat -ant | grep ':80 ' | wc -l
​
# 统计TOP10源IP(发现3个IP各占30%流量)
netstat -ant | grep ':80 ' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head

攻击特征

  1. 高频GET/POST请求(300+次/秒/IP)

  2. User-Agent包含[Go-http-client/1.1]

  3. 请求路径集中在[/api/search]接口


二、紧急防御配置(8分钟)

1. 快速封禁攻击源IP段
复制代码
# 封禁TOP3攻击IP(假设为101.203.74.0/24)
iptables -I INPUT -s 101.203.74.0/24 -j DROP
​
# 设置IP黑名单自动更新(每10分钟拉取最新攻击IP)
*/10 * * * * curl -s https://attacker-ip-list.com/ddos.txt | xargs -I {} iptables -A INPUT -s {} -j DROP
2. HTTP层精细化过滤
复制代码
# 拦截特定User-Agent
iptables -A INPUT -p tcp --dport 80 -m string --string "Go-http-client/1.1" --algo bm -j DROP
​
# 限制/search接口访问频率(每秒5次)
iptables -A INPUT -p tcp --dport 80 -m string --string "/api/search" --algo bm \
  -m hashlimit --hashlimit-name search_limit --hashlimit 5/second --hashlimit-burst 10 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -m string --string "/api/search" --algo bm -j DROP
3. 全局连接数管控
复制代码
# 限制单个IP最大并发连接数
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j REJECT
​
# 防御SYN Flood(半连接队列保护)
iptables -N SYN_FLOOD
iptables -A SYN_FLOOD -m limit --limit 1000/second --limit-burst 2000 -j RETURN
iptables -A SYN_FLOOD -j DROP
iptables -A INPUT -p tcp --syn -j SYN_FLOOD

三、攻击缓解验证(5分钟)

1. 实时监控规则命中情况
复制代码
# 查看规则计数器(观察DROP规则增长速率)
iptables -L -n -v | grep DROP
​
# 流量统计(确认HTTP请求量下降70%+)
iftop -i eth0 -f 'port 80'
2. 业务健康检查
复制代码
# 测试核心接口响应(返回200为正常)
curl -I -X GET http://localhost/api/product/123 -H "User-Agent: Mozilla/5.0"

四、事后加固措施(攻击停止后)

1. 规则持久化
复制代码
# 保存当前生效规则(Debian系)
iptables-save > /etc/iptables/rules.v4
​
# 设置开机自动加载
echo "pre-up iptables-restore < /etc/iptables/rules.v4" >> /etc/network/interfaces
2. 构建分层防御体系
防御层 工具配置
网络层 iptables + Cloudflare Spectrum
应用层 Nginx limit_req模块 + WAF规则更新
日志层 部署ELK收集iptables日志,设置自动告警阈值

📊 案例效果数据

指标 攻击发生时 防御生效后 降幅
CPU使用率 98% 45% ▼54%
HTTP错误率 82% 3% ▼79%
API响应时间 12s 230ms ▲98%

⚠️ 关键注意事项

  1. 规则顺序敏感 -I(插入)和-A(追加)的区别:紧急规则需插入到链首

    复制代码
    # 错误示例:封禁IP的规则被后续ACCEPT规则覆盖
    iptables -A INPUT -s 1.2.3.4 -j DROP  # 应改用-I
  2. 性能陷阱 避免使用高消耗匹配模块(如string),必要时改用Nginx层过滤

  3. 云环境适配 若服务器位于AWS/AliCloud,需同步配置安全组规则:

    复制代码
    # AWS CLI批量封禁IP
    aws ec2 update-security-group-rule-descriptions --group-id sg-xxx \
      --ip-permissions '[{"IpProtocol": "tcp", "FromPort": 80, "ToPort": 80, 
      "IpRanges": [{"CidrIp": "101.203.74.0/24", "Description": "DDoS Block"}]}]'
相关推荐
若风的雨3 小时前
WC (Write-Combining) 内存类型优化原理
linux
YMWM_3 小时前
不同局域网下登录ubuntu主机
linux·运维·ubuntu
若风的雨3 小时前
NCCL 怎么解决rdma 网卡本地send的时候需要对端recv要准备好的问题,或者mpi 怎么解决的?
网络
zmjjdank1ng3 小时前
restart与reload的区别
linux·运维
哼?~3 小时前
进程替换与自主Shell
linux
C澒3 小时前
面单打印服务的监控检查事项
前端·后端·安全·运维开发·交通物流
unable code3 小时前
磁盘取证-Flying_High
网络安全·ctf·misc·1024程序员节·磁盘取证
运维有小邓@3 小时前
生物制药企业 AD 域管理破局:合规 · 效率 · 安全三维解决方案
人工智能·安全
大力财经3 小时前
喜茶2025年批量重装130多家门店
安全
青岛前景互联信息技术有限公司3 小时前
政策支撑:应急部推动化工园区安全风险智能化管控平台有效应用!
大数据·人工智能·安全