当前位置 主页 > 服务器问题 > Linux/apache问题 >

    Linux下PHP+Apache的26个必知的安全设置(5)

    栏目:Linux/apache问题 时间:2020-01-14 17:15

    第16个设置项:会话路径

    PHP中的会话支持包括在随后的访问中保留某些数据的一种方法。这让你能够开发更加定制的应用程序,并加大网站的吸引力。该路径在/etc/php.ini文件中定义,与某一个会话有关的所有数据都将存放在session.save_path选项指定的目录下的文件中。在RHEL/CentOS/Fedora Linux下,默认路径如下:

    session.save_path="/var/lib/php/session"

    设置用于上传文件时存储文件的临时目录

    upload_tmp_dir="/var/lib/php/session"

    确保路径是outside /var/www/html,而且无法被其他任何系统用户读取或写入:

    #ls-Z /var/lib/php/

    示例输出:

    drwxrwx---. root apache system_u:object_r:httpd_var_run_t:s0 session

    注意:ls命令的-Z选项显示了SELinux 安全上下文,比如文件模块、用户、用户组、安全上下文和文件名称。

    第17个设置项:保持PHP、软件和操作系统版本最新

    打安全补丁是维护Linux、Apache、PHP和MySQL服务器的一个重要环节。应该使用以下其中任何一个工具(如果你通过软件包管理器来安装PHP),尽快检查所有的PHP安全更新版本,并尽快打上:

    #yumupdate

    #apt-getupdate && apt-get upgrade

    你可以配置红帽/CentOS/Fedora Linux,以便通过电子邮件发送yum软件包更新通知。另一个选项是通过cron job(计划任务)打上所有的安全更新版。在Debian/Ubuntu Linux下,可以使用apticron来发送安全通知。

    注意:经常访问php.net(http://php.net/),寻找源代码安装的最新版本。

    第18个设置项:限制文件和目录访问

    确保你以Apache或www等非根用户的身份来运行Apache。所有文件和目录都应该归非根用户(或apache用户)所有,放在/var/www/html下:

    #chown-R apache:apache /var/www/html/

    /var/www/html/是个子目录,这是其他用户可以修改的文件根目录,因为根目录从来不在那里执行任何文件,也不会在那里创建文件。

    确保在/var/www/html/下,文件权限设成了0444(只读):

    #chmod-R 0444 /var/www/html/

    确保在/var/www/html/下,所有目录权限设成了0445:

    #find/var/www/html/ -type d -print0 |xargs-0 -I {} chmod 0445 {}

    关于设置合适文件权限的补充

    chown和chmod命令确保:不管在什么情况下,文件根目录或文件根目录里面的文件都可以被Web服务器用户apache写入。请注意:你需要设置对你网站的开发模型最合理的权限,所以可以根据自身需要,随意调整chown和chmod命令。在这个示例中,Apache服务器以apache用户的身份来运行。这可以在你的httpd.conf文件中用User和Group命令来配置。apache用户需要对文件根目录下的所有内容享有读取访问权,但是不应该享有写入访问权。

    确保httpd.conf有以下命令,实现限制性配置:

    Options None

    AllowOverride None

    Order allow,deny

    你只要在需要时才应该授予写入访问权。WordPress等一些Web应用程序及其他应用程序可能需要缓存目录。你可以使用以下命令,授予写入到缓冲目录的访问权:

    # chmod a+w/var/www/html/blog/wp-content/cache
    
    ### block access to all ###
    
    #echo'deny from all' > /var/www/html/blog/wp-content/cache/.htaccess

    第19个设置项:写保护Apache、PHP和MySQL配置文件