当前位置:首页 > 云谷精选

如何防止Apache服务器被CC攻击?模块配置与调优

admin2026年03月19日云谷精选47.92万
摘要:# Apache服务器防CC攻击:别让“小请求”拖垮你的大业务 我前两天帮朋友处理一个电商站点的故障,那场面真是让人哭笑不得。网站打开慢得像在拨号上网,后台一看,CPU和内存全跑满了。一开始以为是促销活动太火爆,结果仔细一查——好家伙,每分钟几万个请求,…

Apache服务器防CC攻击:别让“小请求”拖垮你的大业务

我前两天帮朋友处理一个电商站点的故障,那场面真是让人哭笑不得。网站打开慢得像在拨号上网,后台一看,CPU和内存全跑满了。一开始以为是促销活动太火爆,结果仔细一查——好家伙,每分钟几万个请求,全来自那么几十个IP,都在反复请求同一个商品详情页。典型的CC攻击(Challenge Collapse),说白了就是用大量“看起来正常”的请求,活活把你的服务器“累死”。

很多刚入行的朋友可能会觉得,CC攻击不像DDoS那么“声势浩大”,应该好对付。其实吧,这种想法最危险。CC攻击成本低、伪装性强,专挑你业务逻辑里最耗资源的地方打(比如搜索、登录、下单接口),很多所谓的高配服务器,PPT上很猛,真被针对性的CC打起来,几分钟就露馅了。

如果你的Apache服务器还在用默认配置“裸奔”,心里应该有点数了。今天,咱们不聊空泛的理论,就结合我这些年踩过的坑和有效的配置,把Apache防CC这件事,掰开揉碎了讲明白。

一、先搞懂:CC攻击到底在“打”你哪里?

别急着改配置,方向错了,再折腾也白搭。CC攻击的核心目的,是耗尽服务器的连接资源计算资源

  • 连接资源:Apache的MaxClients(或MaxRequestWorkers)决定了它能同时处理多少个连接。攻击者用大量IP或代理,快速建立并保持连接,把名额占满,真用户就挤不进去了。
  • 计算资源:攻击者频繁请求那些需要执行数据库查询、复杂运算的动态页面(比如/search.php?keyword=xxx)。每个请求都让CPU飙高一点,积少成多,服务器直接“卡死”。

所以,防护思路就两条:1. 别让无效连接占着茅坑;2. 别让恶意请求过度消耗CPU。 下面,我们就围绕这两点,对Apache动手术。

二、核心模块调优:给你的Apache穿上“防弹衣”

1. mod_evasive —— 专治各种“请求轰炸”

这模块名字就霸气——“规避”。它就像个敏锐的保安,能实时监测单个IP的请求频率,一旦发现异常(比如一秒内请求同一个页面几十次),立马采取行动:可以延迟响应、直接屏蔽,或者记入日志。

关键配置(通常在httpd.conf或单独配置文件中)

<IfModule mod_evasive20.c>
    DOSHashTableSize    3097   # 哈希表大小,管理IP用的,访问量大可以调高
    DOSPageCount        2      # 规定时间内对同一页面的请求次数阈值(关键!)
    DOSSiteCount        50     # 规定时间内对同一网站的总请求次数阈值
    DOSPageInterval     1      # 页面计数的时间间隔(秒)
    DOSSiteInterval     1      # 站点计数的时间间隔(秒)
    DOSBlockingPeriod   10     # 封锁IP的时间(秒)
    DOSEmailNotify      admin@yourdomain.com # 报警邮件(记得配)
    DOSSystemCommand    "sudo iptables -A INPUT -s %s -j DROP" # 触发后执行的命令,比如拉黑IP
</IfModule>

重点解读

  • DOSPageCount 2DOSPageInterval 1 这个组合非常严格,意思是1秒内同一个IP请求同一个页面超过2次,就触发防护。对于纯静态站或API,可以适当放宽,但动态站(尤其是带登录、搜索的)建议从严。
  • 一定要配DOSSystemCommand,光延迟响应不够,得让防火墙(如iptables)直接把恶意IP掐掉,这才是根治。很多教程不提这步,效果差一大截。
  • 这个模块会消耗一定内存和CPU来追踪IP,对于访问量巨大的站,需要根据服务器性能调整DOSHashTableSize

2. mod_ratelimit / mod_qos —— 给流量“限速”

如果说mod_evasive是抓坏人的警察,那这俩就是交通管制员,防止某些“车道”(URL或IP)流量过大。

  • mod_ratelimit:更简单直接,可以针对特定目录或文件类型限制下载速度。对于防止攻击者疯狂爬取你站上的大文件(如图片、视频)特别有用。
    <Location /downloads/>
        SetOutputFilter RATE_LIMIT
        SetEnv rate-limit 200  # 限制速度为200KB/秒
    </Location>
  • mod_qos:功能更强大,能基于服务器整体状态做动态限流。比如,当服务器并发连接数超过500时,自动对新来的、访问特定路径的请求返回503(服务暂不可用),优先保障核心业务。
    # 当并发连接超过80%时,对/media/目录的请求,50%概率返回503
    QS_SrvRequestRate 0-500%/5 /media/ 503 50%

    说白了,这就是“丢车保帅”。真遇到大规模攻击,确保你的首页、支付页面还能活,比死扛所有请求要明智得多。

3. mod_security (WAF模块) —— 规则定胜负

这是个功能强大的Web应用防火墙。你可以为它编写精细的规则,比如:

  • 拦截User-Agent为空的请求(很多攻击脚本会这样)。
  • 拦截短时间内携带大量不同参数的请求(典型CC特征)。
  • 拦截对wp-login.php等常见后台页面的高频访问。

它的威力取决于规则库的质量和维护。新手建议从OWASP核心规则集开始,但一定要在测试环境先跑,否则一个错误规则可能把正常用户也拦了。

三、Apache基础配置加固:把“篱笆”扎紧

光靠模块不够,Apache自己的“阀门”也得拧好。

  • 调整超时时间Timeout 30(默认60)。给正常请求30秒足够了,恶意连接占着不干活?早点断掉。
  • 限制请求体LimitRequestBody 1048576。限制单个请求最大1MB,防止有人用超大POST请求来耗资源。
  • 禁用不必要的方法<LimitExcept GET POST HEAD>。如果你的站只用GET/POST,就把PUT、DELETE等方法全拒了。
  • 优化MaxClients/MaxRequestWorkers这个值不是越大越好! 盲目调高,CC攻击来时死得更惨。计算公式大概是:MaxClients ≈ 可用内存 / 单个Apache进程平均内存占用。用ps auxtop看看你的httpd进程占多少内存,算一下。小内存VPS,设成50-100可能更安全。

四、组合拳与“终极隐藏术”

单点防护永远有漏洞,得打组合拳。

  1. 动静分离:把图片、CSS、JS这些静态资源,扔到CDN上。一来减轻Apache压力,二来CDN本身就有抗CC能力(比如Cloudflare的“Under Attack”模式)。攻击者打不到你真实服务器(源站),这是最实在的。
  2. 日志分析是金矿:别只看access.log,把mod_evasivemod_security的日志和系统监控(如htopiftop)结合起来看。攻击前往往有扫描试探,日志里能看到那些“探头探脑”的IP。
  3. 源站隐藏(终极大招):通过CDN或高防IP代理,让你的真实服务器IP在公网上彻底“消失”。只允许来自CDN节点IP的流量访问你的Apache(用防火墙白名单实现)。攻击者连你门牌号都找不到,还打什么?这是目前最有效的方案之一,很多云服务商的高防产品就是这个原理。

几句大实话

  1. 没有一劳永逸:攻击手法在变,你的规则也得定期看。把mod_evasive的报警邮件设置好,别当摆设。
  2. 别迷信“无限制防护”:低配VPS,上再多的软件防护,遇到大规模攻击也扛不住。该升级硬件、该买高防服务时,别硬撑。业务连续性比那点钱重要。
  3. 测试!测试!测试!:所有配置改完,自己用工具(比如absiege)模拟一下,或者找个安全扫描服务试试效果。别等真被打哭了再排查。

防护的本质,是增加攻击者的成本和难度。对于Apache防CC,mod_evasive+基础加固做起,结合日志监控,有条件就上CDN隐藏源站,这套组合下来,已经能挡住90%的普通CC攻击了。

行了,配置项就聊这么多。赶紧去看看你的Apache还在不在“裸奔”吧。

扫描二维码推送至手机访问。

版权声明:本文由www.ysyg.cn发布,如需转载请注明出处。

本文链接:http://www.ysyg.cn:80/?id=666

“如何防止Apache服务器被CC攻击?模块配置与调优” 的相关文章

分析高防CDN中的连接空闲超时管理算法:优化高并发下的内存占用

## 高防CDN里那个不起眼的“超时”设置,可能正悄悄拖垮你的服务器 前两天帮一个做电商的朋友看服务器,问题挺典型:平时访问丝滑,一到促销秒杀,后台就卡成PPT,甚至直接挂掉。查了一圈,带宽够、CPU和内存占用看着也正常,防火墙日志里攻击流量也不多。最后…

分析高防CDN的Cookie校验与重定向算法对CC肉鸡的自动清洗

# 当Cookie遇上“肉鸡”:高防CDN那点不为人知的清洗内幕 说实话,我这两年看过的站点防护配置,少说也有几百个了。最让我哭笑不得的不是那些裸奔的——人家至少心里有数。反而是那些上了“高防”还被打趴的,问题往往出在细节上,比如今天要聊的这个:**Co…

分析高防CDN的边缘侧SSL握手加速算法对算力消耗的优化

# 边缘握手加速:高防CDN里那个“看不见”的算力魔术 不知道你有没有遇到过这种情况——明明上了高防CDN,网站安全是稳了,可一到流量高峰,页面加载速度还是慢得让人抓狂。这时候你去看监控,CPU和内存占用也没爆表,但用户体验就是上不去。 我去年帮一个电…

分析高防CDN中的连接复用控制算法对后端源站负载的保护机制

# 高防CDN的连接复用:真能帮源站“减负”,还是只是听起来很美? ˃ 说真的,这行里花里胡哨的技术名词太多了,什么“智能调度”、“动态复用”——听起来都挺猛,但很多站点配置完了,真被打的时候才发现,问题不是防护没上,而是配置根本没对上实际业务。我自己见…

详解HTTP请求头解析算法在过滤变种应用层攻击中的作用

# HTTP请求头里藏玄机:一招拆穿变种应用层攻击的“假身份” 咱们做防护的,最头疼的可能不是那种“硬碰硬”的流量洪水——毕竟堆带宽、上高防还能扛一扛。真正让人后背发凉的,是那些伪装成正常请求的变种应用层攻击。它们就像混进人群的刺客,穿着和你一样的衣服,…

深度解析令牌桶与漏桶算法在CDN边缘节点限速中的应用差异

# 令牌桶和漏桶,CDN限速的“油门”和“刹车”到底怎么选? 前两天跟一个做电商的朋友聊天,他愁眉苦脸地说:“促销那会儿,CDN流量费用直接爆了,后台一看,全是爬虫在那儿疯狂薅商品详情页,跟不要钱似的。” 我问他:“你没做限速吗?” 他一脸无奈:“做…