温馨提示×

centos lamp怎样防止DDoS攻击

小樊
39
2025-12-23 15:02:44
栏目: 云计算

CentOS LAMP 防护 DDoS 的实用方案

一 分层防御思路

  • 边缘与网络层:优先把流量交给CDN/WAF/云清洗,利用其全球节点与清洗能力吸收大流量;在本地边界用iptables/firewalld做连接与速率限制,减轻内核与应用压力。
  • 主机与传输层:优化Apache MPM 与 KeepAlive,限制并发与空闲连接,降低资源被占满的风险。
  • 应用与数据库层:启用WAF(如 ModSecurity+OWASP CRS)识别恶意请求,配合Fail2Ban自动封禁恶意来源;对MySQL限制远程访问、强口令与必要权限。
  • 监控与响应:持续监控与日志分析,异常时联动上游清洗或ISP处置;定期更新与打补丁,保持策略与规则库最新。

二 关键配置步骤

  • 安装并启用 EPEL(CentOS 7 示例)
    • 安装 EPEL 仓库:sudo rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
    • 验证:sudo yum repolist | grep epel
  • 安装与启用 mod_evasive(Apache 专用抗 DoS/DDoS 模块)
    • 安装:sudo yum install mod_evasive -y
    • 确认模块加载:sudo httpd -M | grep evasive(应见 evasive20_module)
    • 常用配置(/etc/httpd/conf.d/mod_evasive.conf):
      • DOSEmailNotify:设置告警邮箱(如 admin@example.com)
      • DOSWhitelist:加入可信 IP 白名单
      • 参考阈值:DOSPageCount 2、DOSSiteCount 50、DOSPageInterval/DOSSiteInterval 1(每秒统计,超过即拉黑一段时间)
  • 安装与启用 ModSecurity + OWASP CRS(WAF)
    • 安装:sudo yum install mod_security -y
    • 部署 CRS(示例):
      • mkdir -p /etc/httpd/crs-tecmint && cd $_
      • wget https://github.com/SpiderLabs/owasp-modsecurity-crs/tarball/master
      • tar xzf master && mv SpiderLabs-owasp-modsecurity-crs-* owasp-modsecurity-crs
      • cp owasp-modsecurity-crs/modsecurity_crs_10_setup.conf.example owasp-modsecurity-crs/modsecurity_crs_10_setup.conf
    • 在主配置中引入(/etc/httpd/conf/httpd.conf 或 /etc/httpd/conf.modules.d/security.conf):
      • Include crs-tecmint/owasp-modsecurity-crs/modsecurity_crs_10_setup.conf
      • Include crs-tecmint/owasp-modsecurity-crs/base_rules/*.conf
    • 基础开关(/etc/httpd/modsecurity.d/local.conf):
      • SecRuleEngine On
      • SecRequestBodyAccess On
      • SecResponseBodyAccess On
      • SecResponseBodyMimeType text/plain text/html text/xml application/octet-stream
      • SecDataDir /tmp
  • 配置 Fail2Ban(自动封禁暴力来源)
    • 安装:sudo yum install fail2ban -y && sudo systemctl enable --now fail2ban
    • 建议为 Apache 创建本地规则(/etc/fail2ban/jail.local 或 jail.d/apache.local):
      • [apache]
      • enabled = true
      • filter = apache-auth
      • action = iptables[name=HTTP, port=http,protocol=tcp]
      • logpath = /var/log/httpd/error_log
      • maxretry = 5
      • bantime = 3600
  • 边界防火墙限速与连接限制(iptables 示例)
    • 限制单 IP 的新建连接速率(每秒 20 个,突发 50)
      • 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 1 --hitcount 20 -j DROP
    • 限制单 IP 并发连接数(最多 100)
      • iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 100 -j REJECT --reject-with tcp-reset
    • 说明:firewalld 可用 rich-rule 实现类似策略,生产环境建议结合业务压测微调阈值。

三 Apache 与 MySQL 优化要点

  • Apache(MPM 与连接)
    • 采用event MPM(高并发更友好),合理设置 MaxRequestWorkers(由内存与业务决定)、KeepAlive On/Off 与 KeepAliveTimeout(如 2–5 秒),减少长连接占用;必要时启用请求体限制与超时控制。
  • MySQL
    • 仅允许可信网段访问(bind-address、skip-networking 视部署而定),使用强密码与最小权限账户;对慢查询与异常会话设置告警与限制,避免被应用层滥用拖垮数据库。

四 监控 响应与兜底

  • 监控与日志
    • 实时观察带宽、连接数、CPU/内存、Apache 访问/错误日志;为 Fail2Ban、WAF 与系统日志配置集中化收集与告警,便于快速定位攻击特征与来源。
  • 大规模攻击处置
    • 启用CDN/WAF 的清洗与速率限制能力,必要时切换至维护/验证码页面;与ISP联动进行上游清洗或黑洞路由;攻击缓解后逐步恢复策略,避免二次冲击。
  • 持续加固
    • 定期更新系统与组件(内核、Apache、PHP、MySQL、规则库),复核防火墙与 WAF 规则,演练应急预案,确保恢复流程可用。

0