【问题标题】: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 以外的文件?

【问题讨论】:

    标签: apache


    【解决方案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() 并且仍然能够做所有事情。除非你也打算放弃所有这些功能。
    猜你喜欢
    • 1970-01-01
    • 2012-11-30
    • 2015-04-17
    • 2011-03-21
    • 2020-09-08
    • 2021-03-08
    • 2020-10-10
    • 2011-10-28
    • 1970-01-01
    相关资源
    最近更新 更多