Apache目录保护需三类手段协同:路径级访问控制(如Require)、功能限制(如Options None)、内容拦截(如FilesMatch阻断脚本执行),缺一不可。

一、用 精准控制谁能访问
这是最基础也最关键的一步。路径必须与 DocumentRoot 绝对路径完全一致,否则规则不生效。
- 例如 DocumentRoot 是
/var/www/example.com,就写<directory></directory>,不能简写成/var/www - 子目录如上传目录要单独定义:
<directory></directory>(Apache 按最长路径匹配) - 2.4+ 版本默认拒绝所有请求,必须显式授权:
Require all granted(开放)Require ip 192.168.1.0/24(仅内网)Require local(仅本机) - 要同时满足多个条件,比如“允许所有但排除某 IP”,必须用容器:
<RequireAll><br> Require all granted<br> Require not ip 203.0.113.99<br></RequireAll>
二、收紧 Options 和 AllowOverride,减少攻击面
这两个指令不决定“能不能进”,而是限制“进来后能干什么”,直接影响安全水位。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
-
Options -Indexes +FollowSymLinks:禁用目录列表(防结构泄露),只保留必要功能 -
Options None:最严模式,适合静态资源或上传目录 -
AllowOverride None:禁止 .htaccess 覆盖主配置(生产环境首选,防绕过) -
AllowOverride All:仅在确需动态规则时启用,且必须人工审核 .htaccess 内容
三、额外加固敏感目录,阻断脚本执行和文件暴露
仅靠 Require 不足以防护上传目录、配置目录等高危区域。
- 对
/uploads类目录,加脚本拦截:
<FilesMatch "\.(php|pl|py|jsp|sh|cgi)$"><br> Require all denied<br></FilesMatch>
- 搭配
Options -ExecCGI -Includes,防止 CGI 或 SSI 执行 - 屏蔽常见敏感文件:
<FilesMatch "\.(git|svn|bak|log|ini|conf|yml)$"><br> Require all denied<br></FilesMatch>
- 系统层同步设置文件权限:
chown -R www-data:www-data /var/www/example.com/uploads,chmod -R 755 /var/www/example.com,上传目录建议750
四、需要密码保护?用 Basic Auth
适用于后台管理路径等需人工鉴权的场景。
- 先用
htpasswd -c /etc/apache2/.htpasswd admin创建用户文件 - 在对应
块中添加:
AuthType Basic<br>AuthName "Admin Area"<br>AuthUserFile /etc/apache2/.htpasswd<br>Require user admin
- 注意:Basic Auth 密码明文传输,仅适合内网或配合 HTTPS 使用

















