apache目录访问限制需按版本(2.4+必须用require)、位置(主配置/.htaccess/虚拟主机)和粒度(目录/文件/ip)精准配置;禁用危险options(如-indexes)、拦截敏感文件(.htaccess、.env等)、并验证403响应。

Apache 目录访问限制不能只靠“关掉列表”或写一句 Deny from all,必须区分 Apache 版本、配置位置(主配置 / .htaccess / 虚拟主机)、控制粒度(整个目录 / 特定文件 / IP段),否则容易失效或引发 500 错误。
用 Require 显式授权(Apache 2.4+ 必须)
Apache 2.4 废弃了 Order/Allow/Deny,所有规则必须用 Require 指令。不写 Require 会继承上级策略,极易漏放。
-
Require all denied→ 彻底拒绝所有请求,适合后台、配置、备份目录 -
Require ip 192.168.1.0/24→ 仅允许内网访问,运维接口常用 -
Require valid-user→ 强制 Basic 认证,需配合AuthType Basic和AuthUserFile - 多条件组合用
<requireall></requireall>:例如“仅限某IP + 必须登录”,避免逻辑错位
禁用危险 Options 功能
Options 不是“开关”,而是执行能力清单。默认开启的 Indexes、FollowSymLinks、ExecCGI 等都可能被利用。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
-
Options -Indexes→ 关闭目录列表(最基础且关键),防止上传目录、日志目录暴露文件结构 -
Options -ExecCGI -Includes -FollowSymLinks→ 上传目录、临时目录必须加,阻断脚本执行与符号链接跳转 -
Options None→ 最严策略,但会禁用 FollowSymLinks,可能导致重写规则或软链接失效,慎用 - 切勿单独写
Options +Indexes或未加减号的Options Indexes,这会覆盖父级设置,意外开启列表
精准拦截敏感文件(不止是目录)
攻击者常直连 .htaccess、.env、backup.zip、.git/config,光锁目录不够。
- 在主配置或虚拟主机中添加:
Require all denied - 对高危路径单独设防,如备份目录:
Require all denied
Options None - 确保这些配置放在
<virtualhost></virtualhost>内或全局<directory></directory>块中,避免被 .htaccess 覆盖
验证是否真正生效
配完不验证等于没配。重点测三类典型请求:
- 浏览器访问
https://yoursite/.htaccess→ 必须返回 403,不能是下载或 200 - 访问一个空目录(如
/uploads/)且无 index.* 文件 → 必须 403,不能列出文件 - 尝试用 curl 请求
https://yoursite/.git/config→ 必须 403,不能返回内容










