在构建稳定可靠的Web服务时,Apache服务器作为广泛使用的Web服务器软件,面临着各种网络威胁,其中DDoS(分布式拒绝服务)攻击是最常见且危害极大的攻击方式之一,DDoS攻击通过大量恶意请求耗尽服务器资源,导致正常用户无法访问,严重影响业务连续性,合理配置Apache服务器以有效防御DDoS攻击,是每个运维人员必须掌握的技能,本文将从系统级配置、Apache模块优化、连接限制、速率控制、防火墙联动及监控日志等多个维度,详细介绍Apache服务器防止DDoS攻击的实用策略。

系统级基础优化:提升服务器整体抗压能力
在配置Apache之前,首先需要确保操作系统层面的基础优化,因为服务器的整体性能直接决定了抗DDoS攻击的能力。
调整系统内核参数
Linux系统内核参数的优化可以显著提升网络处理能力,编辑/etc/sysctl.conf文件,添加以下关键配置:
net.ipv4.tcp_syncookies = 1 # 启用SYN Cookies,防御SYN Flood攻击 net.ipv4.tcp_max_syn_backlog = 65536 # 增加SYN队列长度 net.core.netdev_max_backlog = 65536 # 网络接口接收数据包的队列长度 net.ipv4.tcp_synack_retries = 2 # 减少SYN-ACK重试次数 net.ipv4.tcp_fin_timeout = 10 # 缩短TCP连接超时时间 net.core.somaxconn = 65536 # 增加最大连接队列数
执行sysctl -p使配置生效,这些参数能有效缓解SYN Flood攻击和连接资源耗尽问题。
资源限制与进程管理
通过ulimit命令限制Apache进程的最大文件描述符数量,避免因连接过多导致系统资源耗尽,在/etc/security/limits.conf中添加:
apache soft nofile 65535 apache hard nofile 65535
确保Apache的mpm_prefork或mpm_worker模块配置合理,例如mpm_prefork的MaxRequestWorkers不宜过大,避免内存耗尽。
Apache核心模块配置:精准控制请求行为
Apache模块化设计提供了灵活的扩展能力,通过启用和配置特定模块,可以实现对请求的精细化控制,有效过滤恶意流量。
mod_security:Web应用防火墙(WAF)
mod_security是Apache最强大的安全模块之一,具备SQL注入、XSS攻击防护及DDoS攻击防御功能,安装后,在httpd.conf中启用并配置基础规则:
LoadModule security2_module modules/mod_security2.so
<IfModule mod_security.c>
SecRuleEngine On # 启用规则引擎
SecRequestBodyAccess On # 检查请求体
SecResponseBodyAccess On # 检查响应体
SecRequestBodyLimit 134217728 # 限制请求体大小(128MB)
# 防御大请求体攻击
SecRule REQUEST_BODY_CONTENT "@gt 1048576" "id:1001,phase:2,deny,status:413"
</IfModule> 结合owasp-modsecurity-crs规则集,可进一步提升对DDoS攻击的识别能力,例如防御HTTP Flood攻击的规则:
SecRule ARGS "@gt 100" "id:2001,phase:2,deny,msg:请求参数过多"
mod_evasive:实时拦截恶意请求
mod_evasive通过监控请求频率,自动拦截来自同一IP的异常请求,安装后配置:

LoadModule evasive20_module modules/mod_evasive20.so
<IfModule mod_evasive20.c>
DOSHashTableSize 3097 # 哈希表大小
DOSPageCount 10 # 同一IP秒内请求数超过10次触发防护
DOSSiteCount 50 # 同一IP站点总请求数超过50次触发防护
DOSPageInterval 1 # 页面计数时间窗口(秒)
DOSSiteInterval 1 # 站点计数时间窗口(秒)
DOSBlockingPeriod 60 # 封禁IP时长(秒)
DOSEmailNotify admin@example.com # 告警通知邮箱
</IfModule> 当检测到恶意IP时,mod_evasive会返回403错误,并将IP记录到/var/log/mod_evasive.log,便于后续分析。
连接与速率限制:控制资源占用
DDoS攻击的核心是耗尽服务器连接资源,通过限制单IP连接数和请求速率,可有效减缓攻击影响。
基于IP的连接限制
利用mod_limitipconn模块限制每个IP的并发连接数,避免单个IP占用过多资源,安装后配置:
LoadModule limitipconn_module modules/mod_limitipconn.so
<IfModule mod_limitipconn.c>
MaxConnPerIP 10 # 单IP最大并发连接数
NoIPLimit image/* # 图片资源不限制
MaxConnPerIPPeriod 60 # 重置计数周期(秒)
</IfModule> 请求速率控制
mod_ratelimit模块可限制客户端的下载带宽,适用于大流量攻击场景,配置示例:
LoadModule ratelimit_module modules/mod_ratelimit.so
<IfModule mod_ratelimit.c>
<Location />
SetEnvIf Remote_Addr "^192.168.1." internal
Order allow,deny
Allow from env=internal
RateLimit 102400 # 限制带宽为100KB/s
</Location>
</IfModule> 连接超时与Keep-Alive优化
合理设置连接超时时间,避免长时间占用资源,在httpd.conf中调整:
KeepAlive On # 启用长连接 MaxKeepAliveRequests 100 # 单连接最大请求数 KeepAliveTimeout 5 # 连接超时时间(秒) Timeout 30 # 请求超时时间(秒)
防火墙与流量清洗:构建多层防御体系
仅依赖Apache配置难以应对大规模DDoS攻击,需结合网络层防火墙和流量清洗服务形成纵深防御。
Linux防火墙(iptables)配置
通过iptables限制单IP的连接频率,过滤恶意流量:
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 30 -j DROP
上述规则表示:同一IP在60秒内发起超过30个新连接时,丢弃后续数据包。
云服务商流量清洗
若服务器部署在云平台(如阿里云、腾讯云),可启用DDoS高防服务,将恶意流量引流至清洗中心,过滤后再回源至服务器。

CDN加速与隐藏源站
通过CDN(内容分发网络)缓存静态资源,隐藏源站IP,吸收部分流量攻击,同时配置CDN的DDoS防护功能,
# Apache配置CDN回源IP白名单 SetEnvIf CF-Connecting-IP "^192.168.1." trusted_ip Order allow,deny Allow from env=trusted_ip Deny from all
监控与日志分析:及时发现异常攻击
实时监控服务器状态和访问日志,是快速响应DDoS攻击的关键。
服务器资源监控
使用top、htop、netstat等工具监控CPU、内存及网络连接状态,或部署Zabbix、Prometheus等监控系统,设置告警阈值:
# 监控80端口连接数 netstat -an | grep :80 | wc -l
Apache日志分析
启用mod_logio模块记录详细流量信息,配置httpd.conf:
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i" %I %O" combinedio
CustomLog logs/access_log combinedio 通过awk、grep分析日志,识别高频攻击IP:
awk '{print $1}' access_log | sort | uniq -c | sort -nr | head -10 异常IP封禁脚本
编写Shell脚本,结合iptables自动封禁恶意IP:
#!/bin/bash
LOG_FILE="/var/log/apache2/access_log"
IP_BLACKLIST="/etc/apache2/ip.blacklist"
# 统计1分钟内访问超过1000次的IP
awk '{print $1}' $LOG_FILE | sort | uniq -c | sort -nr | awk '$1>1000 {print $2}' > $IP_BLACKLIST
# 封禁黑名单IP
for ip in $(cat $IP_BLACKLIST); do
iptables -I INPUT -s $ip -j DROP
done Apache服务器的DDoS防御是一个系统工程,需结合系统优化、模块配置、连接限制、防火墙联动及监控日志等多重手段,通过合理配置mod_security、mod_evasive等模块,结合iptables和云服务商的高防服务,可有效提升服务器抗攻击能力,定期演练应急响应流程,及时更新防护规则,才能在复杂的网络环境中保障服务的稳定运行,防御DDoS攻击没有一劳永逸的方案,唯有持续优化和动态调整,才能构建起坚实的安全防线。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/35341.html




