Apache符号链接本身非漏洞,但配置不当可被利用;应禁用FollowSymLinks或改用SymLinksIfOwnerMatch,并结合目录权限、访问控制及测试验证确保安全。

Apache 中符号链接(Symlink)本身不是漏洞,但若配置不当,可能被利用绕过目录限制、读取敏感文件甚至执行恶意脚本。关键不在于“禁止所有符号链接”,而在于**明确控制哪些链接可被跟随、在哪些目录生效、是否允许跨挂载点访问**。
确认 FollowSymLinks 是否启用
默认配置中常包含 Options FollowSymLinks 或 Options Indexes FollowSymLinks,这表示 Apache 允许解析并跳转到符号链接指向的目标路径。若无业务需要,应主动禁用或收紧:
- 全局禁用:在主
<directory></directory>块中,将Options改为Options -FollowSymLinks(减号表示显式禁用) - 按需启用:仅对明确信任的子目录开启,例如上传目录需链接到外部存储时:
<Directory "/var/www/html/uploads"><br> Options +FollowSymLinks<br> AllowOverride None<br></Directory>
防止跨文件系统跳转(SymlinksIfOwnerMatch)
即使启用 FollowSymLinks,也可加一层保护:只允许链接目标与链接文件属主一致且位于同一文件系统。这是比单纯禁用更灵活的安全折中:
- 替换配置为:
Options SymLinksIfOwnerMatch - 效果:当
/var/www/html/link指向/etc/passwd,因属主和文件系统不匹配,Apache 直接返回 403 - 注意:该选项要求目标文件存在且可 stat,对 NFS 等网络文件系统支持有限
配合目录权限与访问控制
符号链接的安全不能孤立看待,必须结合目录级访问策略:
- 确保链接目标目录本身有严格权限(如
chmod 750 /target/dir,且 Apache 运行用户如apache或www-data属于对应组) - 在
<directory></directory>块中显式拒绝危险路径:<Directory "/etc"><br> Require all denied<br></Directory>
- 禁用 .htaccess 覆盖能力(
AllowOverride None),避免用户自行启用 FollowSymLinks
验证与测试
配置修改后务必验证实际行为:
- 创建测试链接:
ln -s /etc/passwd /var/www/html/testlink - 重启 Apache:
sudo systemctl restart httpd(CentOS/RHEL)或sudo systemctl restart apache2(Debian/Ubuntu) - 访问
http://your-server/testlink,应返回 403(禁用时)或正常显示内容(启用时) - 运行
httpd -t或apache2ctl configtest确保语法无误


















