阿帕奇配置。如何禁止查看根文件夹

Posted

技术标签:

【中文标题】阿帕奇配置。如何禁止查看根文件夹【英文标题】:Apache configuration. How to forbid root folders viewing 【发布时间】:2010-12-14 08:21:15 【问题描述】:

我添加了虚拟主机 ServerAdmin root@localhost DocumentRoot /var/www/html/blogvet.ru 服务器名称 www.blogvet.ru 服务器别名 blogovet.ru

但是我在这个域中的脚本可以看到所有服务器文件/*不仅在他的目录/var/www/html/blogovet.ru

如何禁止查看除 DocumentRoot 以外的文件?

【问题讨论】:

【参考方案1】:

脚本将能够读取运行该脚本的用户可以读取的所有文件。因此,您应该确保您的 Web 服务器不以 root 身份运行(它需要以 root 身份启动以侦听端口 80,但应该将用户切换到例如“www”本身),然后确保该用户无法读取任何合理的文件。

您还可以使用 SElinux 获得额外的安全层。

【讨论】:

您需要以 root 身份启动 apache,但您应该将其配置为在侦听端口 80 后切换到另一个用户。请参阅用户和组 apache 配置指令。【参考方案2】:

我找到了这个 php 解决方案(如果禁用 cgi 和 ssi,看起来不错)

<VirtualHost *:80>
    ServerAdmin root@localhost
    DocumentRoot /var/www/html/site.com
    ServerName www.site.com
    ServerAlias site.com
    ErrorLog /var/www/html/site.com/error-log
#    TransferLog /var/www/html/site.com/transfer-log
#    CustomLog /var/www/html/site.com/access-log common
    <IfModule mod_php5.c>
        php_admin_value upload_tmp_dir "/tmp"
        php_admin_value include_path ".:/usr/share/pear:/usr/share/php:/var/www/html/site.com"
        php_admin_value open_basedir "/var/www/html/site.com"
        php_admin_value doc_root "/var/www/html/site.com"
    </IfModule>
    <Directory "/var/www/html/site.com">
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

【讨论】:

这里,一个php脚本可以仍然访问文件系统中任何可读的文件,但是特定的脚本php_admin会尝试只访问某些文件。 虚假的安全感。正如 Rasmus 指出的那样,您可以只使用 shell_exec() 并且仍然能够做所有事情。除非你也打算放弃所有这些功能。

以上是关于阿帕奇配置。如何禁止查看根文件夹的主要内容,如果未能解决你的问题,请参考以下文章

阿帕奇服务器的配置

Docker 部署Nginx 并配置

阿帕奇00-default配置文件(备忘)

阿帕奇apache服务器和webDav服务器快速配置

Apache 阿帕奇 配置运行环境

阿帕奇配置本地虚拟站点,XAMPP环境下