首页主机资讯如何配置Linux防火墙防止DDoS攻击

如何配置Linux防火墙防止DDoS攻击

时间2025-12-12 21:57:03发布访客分类主机资讯浏览728
导读:Linux 防火墙防 DDoS 实操指南 一、目标与总体思路 在系统层面通过 内核参数 提升抗洪能力,在防火墙层面用 iptables/nftables 做速率限制、异常包丢弃与黑白名单治理,在应用前尽早过滤以减小内核与连接跟踪压力。 对...

Linux 防火墙防 DDoS 实操指南

一、目标与总体思路

  • 在系统层面通过 内核参数 提升抗洪能力,在防火墙层面用 iptables/nftables 做速率限制、异常包丢弃与黑白名单治理,在应用前尽早过滤以减小内核与连接跟踪压力。
  • 对于大规模或应用层(HTTP/HTTPS)攻击,仅靠本机防火墙难以完全抵御,建议叠加 CDN/WAF/上游清洗 等能力。

二、内核参数优化(sysctl)

  • 启用 SYN Cookie、增大 SYN 队列、降低重试,缓解 SYN Flood
    • net.ipv4.tcp_syncookies = 1
    • net.ipv4.tcp_max_syn_backlog = 16384
    • net.ipv4.tcp_synack_retries = 1
    • net.ipv4.tcp_syn_retries = 2
  • 提升网络与连接处理能力,减少丢包与排队:
    • net.core.netdev_max_backlog = 262144
    • net.core.somaxconn = 65535
    • net.core.rmem_default = 31457280;net.core.rmem_max = 67108864
    • net.core.wmem_default = 31457280;net.core.wmem_max = 67108864
    • net.ipv4.tcp_rmem = 4096 87380 33554432
    • net.ipv4.tcp_wmem = 4096 87380 33554432
  • 缩短 TIME_WAIT 回收,减轻端口与连接表压力:
    • net.ipv4.tcp_max_tw_buckets = 1440000
    • net.ipv4.tcp_tw_reuse = 1
    • net.ipv4.tcp_fin_timeout = 10
  • 连接跟踪与端口范围(按内存与业务评估,过大可能占用较多内存):
    • net.netfilter.nf_conntrack_max = 10000000
    • net.netfilter.nf_conntrack_tcp_timeout_established = 1800
    • net.ipv4.ip_local_port_range = 1024 65000
  • 应用与持久化:
    • 将以上写入 /etc/sysctl.conf/etc/sysctl.d/99-ddos.conf,执行 sysctl -p 生效。

三、iptables 规则模板(按“尽早丢弃、分层限速”的原则)

  • 基础放行与安全加固(示例为 INPUT 链,按需调整):
    • 允许回环与已建立连接:
      • iptables -A INPUT -i lo -j ACCEPT
      • iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
    • 丢弃无效包与异常 TCP(建议在 mangle/PREROUTING 尽早处理,性能更好):
      • iptables -t mangle -A PREROUTING -m conntrack --ctstate INVALID -j DROP
      • iptables -t mangle -A PREROUTING -p tcp ! --syn -m conntrack --ctstate NEW -j DROP
  • 速率限制(示例阈值,需按业务压测微调):
    • 全局限制新 SYN(每秒 1 个,突发 3 个):
      • iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j ACCEPT
      • iptables -A INPUT -p tcp --syn -j DROP
    • 针对 Web 端口(80/443)限制新连接速率(每秒 10 个,突发 20 个):
      • iptables -A INPUT -p tcp --dport 80,443 -m limit --limit 10/s --limit-burst 20 -j ACCEPT
      • iptables -A INPUT -p tcp --dport 80,443 -j DROP
    • 限制 ICMP(每秒 1 个,突发 3 个;如需完全禁 ping 可改为 DROP):
      • iptables -A INPUT -p icmp -m limit --limit 1/s --limit-burst 3 -j ACCEPT
      • iptables -A INPUT -p icmp -j DROP
    • 限制每个源 IP 的并发连接数(超过 5 个新连接即丢弃,缓解连接耗尽):
      • iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 5 -j DROP
  • 黑白名单与端口封禁(按需):
    • 封禁单个 IP:iptables -A INPUT -s 1.2.3.4 -j DROP
    • 封禁网段:iptables -A INPUT -s 203.0.113.0/24 -j DROP
    • 封禁端口:iptables -A INPUT -p tcp --dport 23 -j DROP
  • 说明:
    • 上述规则顺序很重要,命中 ACCEPT 后不再继续匹配;对高包率场景,尽量把过滤规则放到 mangle/PREROUTING 以更早丢弃。

四、按发行版与场景的落地要点

  • CentOS/RHEL(iptables 为主):
    • 默认策略建议:INPUT/FORWARD DROP,OUTPUT ACCEPT;务必先放行 SSH 与已建立连接,再叠加限速与黑白名单。
    • 规则持久化:iptables-save > /etc/sysconfig/iptables 或使用 service iptables save(视系统而定)。
  • Ubuntu/Debian(可用 ufw 简化管理):
    • 启用与基础放行:ufw enableufw allow **22/tcp**ufw allow **80,443/tcp**
    • 对暴力登录限速:ufw limit **ssh/tcp**
    • 封禁 IP:ufw deny from **1.2.3.4** to any
    • 如需更细粒度控制,可在 ufw 之上用 iptables 补充规则。
  • Web 服务叠加防护(Nginx 示例):
    • http { } 定义限流区:limit_req_zone $binary_remote_addr zone=mylimit:10m rate=**1r/s**;
    • server { } 应用:limit_req zone=mylimit burst=**5** nodelay;
    • 与防火墙限速配合,可显著降低应用层压力。

五、监控、联动与边界防护

  • 自动封禁与日志联动:
    • 使用 fail2ban 监控服务日志并自动封禁恶意 IP(如 SSH、Nginx),配置 bantimefindtimemaxretry 并结合防火墙规则持久化封禁。
  • 连接数/来源分析(排查与取证):
    • 统计连接数 Top IP:netstat -ntu | awk '{ print $5} ' | cut -d: -f1 | sort | uniq -c | sort -nr | head
    • 观察异常连接:netstat -an | grep ":80" | grep ESTABLISHED
    • 实时监控带宽与连接:iftopnloadss -s
  • 边界与上游:
    • 对于 UDP 放大/反射 等大流量攻击,本机防火墙效果有限,建议在 CDN/WAF/上游清洗 侧拦截与缓解,再回注干净流量。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 如何配置Linux防火墙防止DDoS攻击
本文地址: https://pptw.com/jishu/770966.html
如何用Linux防火墙进行流量控制 如何用Linux防火墙进行入侵检测

游客 回复需填写必要信息