zoukankan      html  css  js  c++  java
  • [网络安全] 网站安全配置优化 之 nginx

    nginx 涉及到两个账户,一个是 nginx 的运行账户,一个是 php-fpm 的运行账户。如果访问的是一个静态文件,则只需要 nginx 的运行账户对文件具有读取权限;而如果访问的是一个 php 文件,则首先需要 nginx 的运行账户对文件有读取权限,读取到文件后发现是一个php 文件,则转发给 php-fpm,此时则需要 php-fpm 账户对文件具有读取权限。

    一。研究发现的结论

    1. linux 下,要读取一个文件,首先需要具有对文件所在目录的执行权限,然后需要对文件的读取权限。
    2. php 文件的执行不需要文件的执行权限,只需要 nginx 和 php-fpm 运行账户的读取权限。
    3. 上传木马后,能不能列出一个目录的内容,跟 php-fpm 的运行账户对目录的读取权限有关。
    4. 木马执行命令的权限跟 php-fpm 的账户权限有关。
    5. 如果木马要执行命令,需要 php-fpm 的账户对相应的 sh 有执行权限。
    6. 要读取一个目录内的文件,是不需要对目录有读取权限的,只需要对目录有执行权限。

    二。Nginx服务器涉及到的安全配置

    以下内容需要积分高于 1 才可浏览

    本帖隐藏的内容

    1. Nginx.conf 的配置
    2. php-fpm.conf 的配置
    3. nginx 和 php-fpm 的运行账户对磁盘的权限配置
    4. php.ini 的配置

    三。常见需要配置的操作方法

    1. 禁止一个目录的访问

    示例:禁止访问 path 目录下的任何内容(注意:后面的 / 一定要加)
    location ^~ /path/ {
    deny all;
    }
    如果没有加后面的 / ,任何开头为 “path” 的访问都会禁止,如:path/11.php 或 pathabc

    2. 禁止某个目录下 php 文件的访问及执行

    示例:禁止单个目录下的 php 文件访问和执行
    location ~ /data/.*.php$ {
    deny all;
    }

    示例:禁止多个目录下 php 文件的访问执行
    location ~ /(data|temp|img|m)/.*.php {
    deny all;
    }


    3. 禁止 IP 的访问

    示例:禁止 IP 段访问的写法
    deny 10.0.0.0/24;


    示例:只允许某个 IP 或某个 IP 段用户访问,其它的用户全都禁止
    allow  120.24.0.0/14;
    allow 10.0.0.0/24;
    deny all;



    四。需要解决的常见问题

    1. 让木马上传后不能执行
    针对上传目录,在nginx配置文件中加入配置,使此目录无法解析php。

    2. 让木马执行后看不到非网站目录文件
    取消 php-fpm 运行账户对于其他目录的读取权限。

    3. 木马执行后命令不能执行
    取消 php-fpm 账户对于 sh 的执行权限。

    4. 禁止 php-fpm、nginx 等账号可以登陆 shell
    创建用户时在后面加上 -s /sbin/nologin
  • 相关阅读:
    【学习总结】SQL学习总结之SQL语法
    【学习总结】SQL学习总结之认识SQL
    【JAVA】JAVA8-String.join字符串拼接
    【JAVA】Scanner.next()与Scanner.nextLine()的区别
    【JAVA】java中split以"." 、""、“|”分隔字符串
    【问题解决方案】apple music取消订阅
    【问题解决方案】MacBook Pro那些坑
    【JAVA】Java循环语句中的continue跳转进入下一次循环是否判断循环条件
    【问题解决方案】Markdown中部分字符显示为格式因而得不到预期结果的问题解决
    【JAVA】哈希表HashMap中java8新增功能概述
  • 原文地址:https://www.cnblogs.com/gaosf/p/14422478.html
Copyright © 2011-2022 走看看