Apache漏洞检测与防护配置实操指南

为什么你需要关注Apache漏洞检测与防护

Apache作为最流行的Web服务器之一,公开漏洞列表(CVE)不断更新,从拒绝服务到远程代码执行,风险真实存在。
零基础用户往往不知道从哪里入手,本文给你一套直接能跑的流程:先检测现有漏洞,再配置防护规则,最后验证效果。
整个过程只需SSH登录和几个命令,适合刚接手服务器的新手。

准备阶段:检查环境与安装必要工具

当前操作需要一台运行Apache的Linux服务器(本文以CentOS 7/Ubuntu 22.04为例)。
请确保拥有root或sudo权限。

第一步:确认Apache版本

httpd -v   # CentOS系
aapache2 -v  # Ubuntu/Debian

如果返回Apache/2.4.6这类数字,说明已安装。
继续检查是否启用mod_security,执行:

apachectl -M | grep security

没有输出说明未安装,下一步安装工具。

第二步:安装扫描工具Nikto和检测脚本

# Ubuntu
apt update && apt install nikto -y
# CentOS
yum install -y epel-release && yum install nikto -y

Nikto是开源Web服务器扫描器,能检测已知漏洞和错误配置。

第三步:安装ModSecurity(WAF核心)
Ubuntu:

apt install libapache2-mod-security2 -y
a2enmod security2
systemctl restart apache2

CentOS:

yum install mod_security -y
systemctl restart httpd

安装后执行apachectl -M | grep security确认模块已启用。

分步操作:从检测到配置防护

1. 使用Nikto扫描本地Apache,找出已知漏洞

在服务器本地运行(可替换为目标域名):

nikto -h http://localhost -ssl -output report.html

-ssl对HTTPS有效,-output生成HTML报告。
重点关注OSVDB编号和CVE条目。
例如:

+ OSVDB-3092: /icons/README: Apache default file found.
+ Server leaks inodes via ETags, header found...

这些是常见风险点。
如果看到mod_status信息泄露或目录列表开启,后续需要关闭。

2. 配置ModSecurity并启用OWASP核心规则集

ModSecurity默认只记录,不拦截。
需要复制配置文件并激活规则:

cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf

编辑新文件,将SecRuleEngine DetectionOnly改为SecRuleEngine On(生产环境建议先DetectionOnly观察两天)。

然后下载OWASP核心规则集(CRS)——这是社区维护的通用规则:

cd /usr/local/src
wget https://github.com/coreruleset/coreruleset/archive/v4.0.0.tar.gz
tar xzf v4.0.0.tar.gz
mv coreruleset-4.0.0 /etc/modsecurity/coreruleset

在Apache主配置或虚拟主机配置中添加包含:

IncludeOptional /etc/modsecurity/coreruleset/crs-setup.conf.example
IncludeOptional /etc/modsecurity/coreruleset/rules/*.conf

重启Apache后,ModSecurity已处于主动拦截状态。

3. 手动加固安全响应头与禁用危险功能

通过配置文件关闭目录列表和Server令牌泄露。
/etc/httpd/conf/httpd.conf(或对应站点配置)中添加:


    Options -Indexes  # 禁用目录浏览

ServerTokens Prod
ServerSignature Off

还可以用ModSecurity添加安全头:

SecAction \
  "id:900500,\
   phase:1,\
   nolog,\
   pass,\
   t:none,\
   setenv:!UNIQUE_ID,\
   setenv:MODSEC_ON=1"
SecRule RESOURCE_BODY "@rx (?:malicious|exploit)" \
  "id:100000,phase:2,t:lowercase,deny,msg:'Malicious keyword detected'"

以上仅为示例,实际更推荐使用OWASP CRS规则。

常见避坑与高频问题解答

Q1:开启ModSecurity后网站直接503?
A:规则误杀。建议先将SecRuleEngine设为DetectionOnly,查看Apache错误日志(/var/log/httpd/error_log),找到被拦截的请求ID,再调整对应规则(例如排除某些URI或User-Agent)。

Q2:Nikto扫出大量信息,但不知道哪些真正危险?
A:重点关注CVE编号和HIGH级别告警。默认文件(如/icons/)风险较低,建议手动删除或移除。OSVDB-3092可忽略,但ServerTokens Full可改为Prod

Q3:配置后性能下降明显?
A:ModSecurity确实消耗CPU,如果并发高,可以只记录不拦截(DetectionOnly),或使用SecRuleEngine Off关闭不必要规则。生产环境建议先压测后上线。

验证防护效果

执行完以上步骤后,验证两项:

  1. 获取安全头
curl -I http://localhost | grep -i server

应返回Server: Apache(无版本号)。
再用漏洞模拟工具测试:

curl -X POST http://localhost/test -d ""

如果返回403或错误页,说明ModSecurity拦截了XSS攻击。

  1. 再次扫描

运行Nikto比较前后报告,预期/icons/等目录项不再出现,Server头信息不再泄露。

如果你按照本文步骤操作,Apache的安全性已经提高到基础防护水平。
建议每周执行一次Nikto扫描,并关注ModSecurity官方CRS更新。
遇到生产环境异常时,优先回看错误日志和本文避坑部分。

分享到:
上一篇
Nginx最新高危漏洞完整修复方案,三步搞定安全升级
下一篇
Tomcat安全漏洞加固教程:从零开始加固你的Web服务器
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意