Apache加固需周期性维护三类核心实体:DocumentRoot目录(每月查权限、每季度扫敏感文件、上线即验上传目录)、<Directory>配置块(每两月清理冗余规则并优化AllowOverride)、系统路径conf/logs/modules(每月锁conf权限、保logs读写安全、每季度禁用高危模块)。

Apache 目录结构本身不包含“组件”,真正需要定期加固的是围绕目录路径展开的三类核心配置与权限实体:DocumentRoot 所指的网站根目录、
DocumentRoot 路径及其内容的定期检查
这是用户请求最终落地的物理位置,也是攻击者最常瞄准的目标。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 每月检查一次目录归属与权限:确保 DocumentRoot(如 /srv/www/example.com/public)属主为非 root 的专用用户(如 webuser),组为 www-data,且其他用户无写权限。执行:
chown -R webuser:www-data /srv/www/example.com/public
find /srv/www/example.com/public -type f -perm /o+w -ls(查出所有其他用户可写的文件,立即修正) - 每季度扫描一次敏感文件残留:用 grep -r "\.env\|\.git/config\|config\.php\|phpinfo" /srv/www/example.com/public/ 确认无源码、配置、调试文件被意外发布
- 上线新功能或部署后立即验证:若新增了上传目录(如 /uploads),必须同步追加对应
块,禁用脚本执行(Options -ExecCGI -Includes)并拒绝直接访问(Require all denied)
<Directory> 配置块的策略复核与清理
每个
- 每两个月审查一次全局及虚拟主机中的所有
块:重点确认根目录(<Directory "/">)是否仍保持 Require all denied + Options None + AllowOverride None - 删除已下线子站或功能对应的
配置,避免“僵尸规则”干扰继承逻辑 - 对仍在使用的子目录(如 WordPress 的 wp-admin),检查是否仍需 AllowOverride All;若已迁移到集中配置,应改为 AllowOverride None 并将重写规则移入主配置
Apache 自身系统路径的权限与模块审计
conf、logs、modules 这些路径虽不对外服务,但一旦被篡改或越权访问,会导致整站失控。
- conf 目录(如 /etc/httpd/conf):每月执行 chmod 600 /etc/httpd/conf/httpd.conf,检查是否有非 root 用户可写文件(find /etc/httpd/conf -type f ! -user root -ls)
- logs 目录(如 /var/log/httpd):确保日志轮转正常,且 chmod 640 以上,防止普通用户读取 access_log 中的 IP 和路径
- modules 目录:每季度运行 httpd -M | grep -E "(status|info|autoindex|cgi)",禁用未使用的高风险模块(如 mod_status 仅限内网调试开启)

















