我猜这是一个配置错误,但无论如何我都想问一下;
首先,我的公共 www 目录是。当我以 root 身份登录 SSH 并在目录 ( )/var/www/domain.com/public_html
上创建符号链接时,然后在该目录中创建一个包含以下内容的 htaccess 文件public_html
ln -s // root
Options all
DirectoryIndex Sux.html
AddType text/plain .php
AddHandler server-parsed .php
AddType text/plain .html
AddHandler txt .html
Require None
Satisfy Any
然后在浏览器中打开该网站,我甚至可以列出/root
/etc
/var
所有目录和所有文件。
现在,Apache 如何列出所有这些目录,甚至属于用户和组(假设为 domainusr)的 domain.com,而 apache 不是 nobody?这不是一个安全漏洞吗?
答案1
我知道这可能很麻烦,但是为了防止这种安全威胁,您应该研究一下 SELinux,它可以防止 apache 超出其允许的目录结构。一开始配置起来可能很难,但如果您要有指向 /root 的符号链接,那么您应该这样做,以防黑客利用 apache 中存在的开放漏洞。
是的,这确实是一个非常大的安全风险,但不是一个错误。您很可能有一个允许跟踪符号链接的全局配置。
答案2
建议您调整全局 Apache 配置文件,严格定义哪些选项可以覆盖,哪些不能覆盖。以下示例的主要目的是拒绝使用FollowSymLinks
并将其替换为SymLinksIfOwnerMatch
:
<Directory "/">
Options +ExecCGI -FollowSymLinks +Includes -IncludesNOEXEC +Indexes -MultiViews +SymLinksIfOwnerMatch
AllowOverride AuthConfig FileInfo Indexes Limit Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
</Directory>