直接禁用不安全模块是apache安全加固最基础有效的措施;应先用apache2ctl -m或httpd -m识别已加载模块,再禁用mod_autoindex、mod_userdir、mod_info、mod_status、mod_include、mod_cgi等高危模块,并重启服务验证生效。

直接禁用不安全模块是 Apache 安全加固中最基础也最有效的一步。很多默认启用的模块并不参与常规 Web 服务,却会暴露敏感信息、允许目录遍历、执行脚本或泄露配置细节。
识别当前启用的模块
先确认哪些模块正在运行,避免误关关键功能:
- Ubuntu/Debian 系统执行:apache2ctl -M
- RHEL/CentOS 系统执行:httpd -M
- 输出中带 shared 标记的即为已加载模块
重点禁用的高危模块
以下模块若无明确业务需求,建议立即停用:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- mod_autoindex:启用后若无默认索引页(如 index.html),会自动列出目录内容,极易泄露文件结构
- mod_userdir:开放用户主目录(如 ~username)访问,常被用于横向探测
- mod_info 和 mod_status:分别暴露完整配置详情与实时服务器状态,攻击者可据此精准构造漏洞利用链
- mod_include(SSI):若未严格限制,可能引发服务端注入
- mod_cgi / mod_cgid:除非你确实在跑 Perl/Shell CGI 脚本,否则必须关闭——这是远程代码执行的高发入口
在不同系统中禁用操作
禁用方式因发行版而异,但目标一致:不让模块被加载。
- Ubuntu/Debian:sudo a2dismod autoindex userdir info status include cgi cgid,然后 sudo systemctl restart apache2
- RHEL/CentOS:sudo vim /etc/httpd/conf.modules.d/00-base.conf,找到对应
LoadModule行并注释掉(前面加 #),再执行 sudo systemctl restart httpd - 禁用后务必运行 apachectl configtest 或 httpd -t 验证语法,避免配置错误导致服务无法启动
验证是否生效
重启后再次运行 apache2ctl -M 或 httpd -M,确认目标模块已不在列表中。也可尝试访问 /server-status 或 /icons/ 等典型路径,看是否返回 404 或 403,进一步确认模块已退出服务。










