Apache 指令安全配置原则是“全局拒绝、显式放行”:根目录默认拒绝,网站根目录最小化授权(禁用索引和符号链接),敏感子目录叠加IP白名单或禁用脚本执行,配置文件目录完全屏蔽,并禁用.htaccess以防止绕过。
Directory 指令安全配置原则
apache 的 <directory></directory> 指令是控制文件系统路径访问权限的核心机制。生产环境中,必须摒弃“默认开放、局部收紧”的惯性思维,转为“全局拒绝、显式放行”——即从根目录开始严格限制,仅对明确需要对外提供服务的路径逐层授权。
根目录与网站根目录的强制防护
在主配置文件(/etc/apache2/apache2.conf 或 /etc/httpd/conf/httpd.conf)顶部添加以下基础策略:
-
系统根目录默认拒绝:
<directory></directory><br> Require all denied<br> Options None<br> AllowOverride None<br>
-
网站根目录最小化授权(以
/var/www/html为例):<directory><br> Require all granted<br> Options -Indexes -FollowSymLinks<br> AllowOverride None<br></directory>
禁用目录索引(-Indexes)防止文件列表泄露;禁用符号链接(-FollowSymLinks)避免绕过路径限制访问敏感系统文件。
敏感子目录的精细化管控
对后台、上传、临时资源等高风险路径,必须叠加 IP 白名单或认证保护:
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
-
管理后台仅限内网访问:
<directory><br> Require ip 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16<br> Require local<br></directory>
-
上传目录禁止脚本执行:
<directory><br> Require all granted<br> Options -ExecCGI -Includes -Indexes<br> AddHandler default-handler .php .pl .py .sh<br></directory>
通过AddHandler将常见脚本后缀降级为静态文件处理,彻底阻断恶意上传后的代码执行。 -
配置文件目录完全屏蔽:
<directory><br> Require all denied<br></directory>
权限继承与覆盖的避坑要点
<directory></directory> 区块按路径长度优先匹配,但易被 .htaccess 绕过。因此必须:
- 全局禁用
.htaccess:主配置中设AllowOverride None,仅在极少数需动态覆盖的子目录中单独启用,如<directory> AllowOverride All </directory>; - 避免使用通配符路径(如
<directory></directory>),Apache 不支持 glob 通配,会导致配置失效; - 所有路径必须使用绝对路径,且结尾不加斜杠(
"/var/www/html"正确,"/var/www/html/"可能触发匹配异常); - 修改后务必执行
sudo apache2ctl -t(Debian系)或sudo httpd -t(RHEL系)验证语法,再重启服务。










