apache的配置块安全加固核心是默认拒绝、最小权限、显式授权,必须设置options -indexes、allowoverride none、require all denied(根目录)及严格路径控制。

Apache 的 <directory></directory> 配置块是安全加固的关键区域,它直接控制特定路径下文件和目录的访问行为。配置不当容易导致目录遍历、敏感文件泄露、任意代码执行等风险。核心思路是:默认拒绝、最小权限、显式授权。
中必须设置的安全项
-
禁用目录浏览
删除或禁用Indexes选项,防止用户看到目录下所有文件列表:Options -Indexes
若原配置为
Options Indexes FollowSymLinks,改为Options FollowSymLinks或更严格的Options None。 -
禁止 .htaccess 覆盖
关闭AllowOverride可防止分散式配置引入不可控规则:AllowOverride None
仅在明确需要动态重写(如 WordPress)的子目录中单独启用,例如:
<directory> AllowOverride All </directory> -
严格访问控制
使用Require指令替代旧版Order/Allow/Deny(Apache 2.4+):Require all denied # 默认拒绝所有访问
如需开放访问,再显式放行:
Apache Superset Dashboard and SQL Exploration Skill下载Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
Require all granted
或按 IP 限制:
Require ip 192.168.1.0/24 Require ip 2001:db8::/32
-
禁用符号链接跳转
避免通过FollowSymLinks访问系统敏感路径(如/etc/passwd):Options -FollowSymLinks
若必须使用,确保目标路径受控且无危险文件。
-
关闭执行权限(对静态资源目录)
对纯静态内容目录(如/var/www/html/assets),移除脚本执行能力:<directory> Options -ExecCGI -Includes -SymLinksIfOwnerMatch AddHandler default-handler .php .pl .py .sh </directory>
典型安全示例:网站根目录配置
<directory>
Options -Indexes -FollowSymLinks -ExecCGI -Includes
AllowOverride None
Require all granted
</directory>
# 文件系统根目录(最外层)务必严格限制
<directory></directory>
Options None
AllowOverride None
Require all denied
该配置确保:
- 不暴露文件列表
- 不允许任意
.htaccess覆盖主策略 - 不允许符号链接逃逸
- 不执行 CGI 或服务端包含
- 系统根
/完全不可访问
注意事项
- 修改后必须运行
apachectl configtest或apache2ctl configtest验证语法 - 生效需重启或重载:
systemctl reload apache2(Debian/Ubuntu)或systemctl reload httpd(RHEL/CentOS) - 所有
<directory></directory>路径必须是绝对路径,相对路径无效 - 配置优先级:
.htaccess
不复杂但容易忽略——真正起作用的不是“加了什么”,而是“删了什么”和“默认拒绝了什么”。










