Apache 使用符号链接列出根目录

Apache 使用符号链接列出根目录

我猜这是一个配置错误,但无论如何我都想问一下;

首先,我的公共 www 目录是。当我以 root 身份登录 SSH 并在目录 ( )/var/www/domain.com/public_html上创建符号链接时,然后在该目录中创建一个包含以下内容的 htaccess 文件public_htmlln -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>

相关内容