apache目录访问控制需默认拒绝、显式放行,禁用indexes、followsymlinks、execcgi、includes等高危options,设allowoverride none防覆盖,并对/admin、.git等敏感路径及隐藏文件实施精细化拒绝策略。

在Apache核心配置中实现严格的目录访问控制和Options加固,关键在于“默认拒绝 + 显式放行”和“最小功能启用”。不依赖.htaccess,直接在主配置或虚拟主机块中统一管控,既提升性能,也避免被覆盖绕过。
禁用高危Options并关闭目录浏览
默认开启的Options可能暴露结构或引入风险。应在根目录或各站点目录块中明确关闭:
- Options -Indexes:彻底禁止目录列表,防止文件结构泄露
- Options -FollowSymLinks:禁用符号链接跟踪(更安全);如确需软链,改用 SymLinksIfOwnerMatch,仅当链接目标与所有者一致时才解析
- Options -ExecCGI -Includes:除非明确需要服务器端包含(SSI)或CGI执行,否则一律禁用,防脚本注入
- 建议组合写法:Options None(完全关闭所有选项),再按需逐个添加必要项,例如 Options +SymLinksIfOwnerMatch +MultiViews
强制最小覆盖权限:禁用.htaccess覆盖
AllowOverride 控制是否允许 .htaccess 覆盖主配置。生产环境应默认禁用,防止配置被恶意篡改:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 对网站根目录及子目录统一设置:AllowOverride None
- 仅在极少数确需动态控制的路径(如某认证子目录)中,按需开启特定功能,例如:AllowOverride AuthConfig Limit(只允许认证与限流相关指令)
- 配合 AccessFileName .htaccess(确保使用标准文件名),并用 FilesMatch 保护该文件本身
基于路径的精细化访问策略
对敏感路径(如 /admin、/backup、/logs、/.git)必须单独定义访问规则,不继承上级配置:
- 使用
块,内部设置:Require ip 192.168.10.0/24(白名单) + Require all denied(兜底拒绝) - 对静态资源目录(如 /uploads),可限制可执行类型:
Require all denied - 禁止访问所有隐藏文件与敏感后缀:
Require all denied
根目录默认拒绝 + 显式放行内容目录
最严格的做法是从根目录开始设为“不可访问”,再逐层开放实际需要服务的路径:
- 在主配置中先定义:
Require all denied - 再明确放行网站文档根:
Require all granted - 若存在多个虚拟主机,每个 DocumentRoot 都需独立声明 Require all granted,避免意外继承宽松策略










