[网络安全] 网站安全配置优化 之 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 或 

path

abc

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

原文链接:https://www.cnblogs.com/gaosf/p/14422478.html

原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/18283

(0)
上一篇 2023年11月28日 08:20
下一篇 2023年11月28日 13:19

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

优速盾注册领取大礼包www.cdnb.net
/sitemap.xml