`

Nginx安全配置研究

 
阅读更多

0x00 测试环境


操作系统:CentOS6.5
Web服务器:Nginx1.4.6
Php版本:Php5.4.26

0x01 Nginx介绍


nginx本身不能处理PHP,它只是个web服务器,当接收到请求后,如果是php请求,则发给php解释器处理,并把结果返回给客户端。nginx一般是把请求发fastcgi管理进程处理,fastcgi管理进程选择cgi子进程处理结果并返回被nginx。

 

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

0x02 研究发现的结论


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

0x03 Nginx服务器涉及到的安全配置


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

0x04 常见需要配置的操作方法


1. 禁止一个目录的访问

示例:禁止访问path目录

location ^~ /path { 
deny all; 
} 

可以把path换成实际需要的目录,目录path后是否带有"/",带“/”会禁止访问该目录和该目录下所有文件。不带"/"的情况就有些复杂了,只要目录开头匹配上那个关键字就会禁止;注意要放在fastcgi配置之前。

2. 禁止php文件的访问及执行

示例:去掉单个目录的PHP执行权限

location ~ /attachments/.*\.(php|php5)?$ { 
deny all; 
} 

示例:去掉多个目录的PHP执行权限

location ~  
/(attachments|upload)/.*\.(php|php5)?$ { 
deny all; 
} 

3. 禁止IP的访问

示例:禁止IP段的写法:

deny 10.0.0.0/24; 

示例:只允许某个IP或某个IP段用户访问,其它的用户全都禁止

allow  
x.x.x.x;  
allow 10.0.0.0/24;  
deny all; 

0x05 需要解决的常见问题


1. 让木马上传后不能执行

针对上传目录,在nginx配置文件中加入配置,使此目录无法解析php。

2. 让木马执行后看不到非网站目录文件

取消php-fpm运行账户对于其他目录的读取权限。

3. 木马执行后命令不能执行

取消php-fpm账户对于sh的执行权限。

4. 命令执行后权限不能过高

Php-fpm账户不要用root或者加入root组。

0x06 Nginx安全配置方案


1. 修改网站目录所有者为非php-fpm运行账户,此处修改所有者为root。

命令:

1
chown -R root:root html/

2014032713413545690.png

2. 修改nginx及php-fpm的运行账户及组为nobody

nginx.conf

2014032713415348030.png

Php-fpm.conf

2014032713421181020.png

3. 取消nobody对所有目录的的读取权限,然后添加对网站目录的读取权限

命令:

1
2
chmod o-r –R  /
chmod o+r –R html/

4. 取消nobody对于/bin/sh 的执行权限 

chmod 776 /bin/sh

5. 确认网站目录对于nobody的权限为可读可执行,对网站文件的权限为可读

6. 对于上传目录或者写入写文件的目录添加nobody的写入权限 

7. 配置nginx.conf 对于上传目录无php的执行权限

8. 配置nginx.conf禁止访问的文件夹,如后台,或者限制访问ip

9. 配置nginx.conf禁止访问的文件类型,如一些txt日志文件

分享到:
评论

相关推荐

    nginx+waf的配置

    Nginx是一款高性能的HTTP和反向代理服务器,被广泛应用于Web...通过仔细研究这些文件,你可以深入了解Nginx与WAF的结合使用方式,并根据实际需求进行定制。在部署前,记得先在测试环境中进行验证,确保配置正确且无误。

    nginx网页配置工具 v3.9.3.zip

    在进行毕业设计或计算机案例研究时,这样的工具可以帮助学生和开发者快速搭建和调试Nginx服务器环境,降低学习曲线。同时,对于系统软件工具的开发者来说,了解和掌握如何构建类似的Web管理工具,有助于提升开发技能...

    nginx网页配置工具 v2.4.7-源码.zip

    8. **SSL/TLS支持**:Nginx源码中包含对加密通信的支持,可以学习如何配置和优化安全套接层。 通过学习和研究Nginx的源码,开发者不仅可以提升对Web服务器工作原理的理解,还能提升自身的系统编程能力,为构建更...

    Nginx入门配置与性能优化教程

    同时指导读者学会利用日志管理和安全性配置确保系统的高效和安全运营。无论你是刚接触Nginx的技术新人或是想要深入研习进阶技术的学生都会受益匪浅。 适用对象是有一定Linux基础的操作人员或对运维方向感兴趣的...

    nginx最牛的服务器

    对于`nginx-0.8.51`,这可能是Nginx的一个旧版本,可能用于回溯历史版本的功能或者研究旧版本的问题。 总之,Nginx以其出色的性能和灵活性,成为许多企业和开发者首选的Web服务器。通过深入理解其核心特性并熟练...

    nginx-1.23.4安装服务启动

    Nginx是一个广泛使用的开源软件,以其高性能、稳定性和低内存占用而闻名。在本文中,我们将深入探讨如何安装和...对于更高级的功能,如SSL/TLS加密、URL重写、限速策略等,您可以进一步研究Nginx的官方文档和社区资源。

    nginx_config_scripts_new.zip

    总之,"nginx_config_scripts_new.zip"提供的是一套实用的Nginx配置脚本集合,不仅能够提高运维效率,也是学习和研究Nginx配置自动化的好素材。通过深入理解和应用这些脚本,你可以在日常工作中更好地驾驭Nginx,...

    nginx Web服务器代码

    **Nginx Web服务器代码详解** Nginx是一款高性能、轻量级的Web服务器和反向代理服务器,因其高效的并发处理...通过提供的`nginx-0.7.61`源码,开发者可以进一步研究Nginx的内部机制,定制化自己的Web服务器解决方案。

    nginx反射例子,亲测可用!

    反射功能在测试、调试和安全研究中非常有用,可以帮助我们理解网络请求的完整流程。在Nginx中实现反射,我们需要配置特定的服务器块或location块。以下是一个简单的配置示例: ```nginx server { listen 80; ...

    nginx源码1.5.7版本

    通过研究Nginx 1.5.7的源码,我们可以深入了解网络服务器的设计理念,学习如何构建高性能、高并发的应用。同时,对于希望改进或定制Nginx功能的开发者来说,源码阅读是必不可少的步骤。通过深入源码,我们可以发现更...

    nginx-1.3.1.tar.gz

    3. **SSL/TLS支持**:随着网络安全的重要性日益突出,1.3.1可能增强了对SSL/TLS协议的支持,包括新的加密套件和更安全的默认配置。 4. **模块化架构**:Nginx的模块化设计允许用户按需安装和配置功能,1.3.1可能会...

    最新版linux nginx-1.20.0.tar.gz

    Nginx 的性能优化技巧也是值得深入研究的领域。这包括调整工作进程数量、设置合适的缓冲区大小、启用HTTP/2支持、启用GZIP压缩等。此外,通过结合负载均衡策略,如轮询、最少连接数或IP哈希,可以确保Nginx在多...

    nginx源代码1.13.10

    Nginx与OpenSSL库紧密集成,提供了丰富的加密套件选择和安全配置选项。 7. **HTTP/2支持** 自Nginx 1.9.5版本起,HTTP/2协议得到支持。在`src/http/modules/ngx_http_v2_module.c`中,你可以看到Nginx如何处理...

    Win7配置Nginx+PHP7

    在Windows 7操作系统中配置Nginx和PHP7是一项常见...如果有更多高级需求,如HTTPS支持、负载均衡或缓存设置,你需要进一步研究Nginx的高级配置。同时,记得定期更新Nginx和PHP到最新稳定版,以确保系统的安全性和性能。

    nginx+tomcat

    5. **安全配置**:Nginx可以作为安全层,实现SSL/TLS加密,防止DDoS攻击,以及配置防火墙规则,保护后端服务器。 **源码和工具** 在标签中提到的“源码”和“工具”,暗示了可能需要对Nginx和Tomcat的配置文件进行...

    反向代理-Nginx

    综上所述,Nginx 作为反向代理服务器,不仅能够提供高性能的服务,还能通过各种配置实现丰富的功能,是构建高效、安全、可扩展网络应用的得力工具。在实际应用中,可以根据业务需求调整和优化Nginx 配置,以达到最佳...

    1.0版本的nginx源码

    - **反向代理**:Nginx 可以作为反向代理服务器,隐藏后端真实服务器,提高安全性,同时可以通过负载均衡策略分发请求,提升服务可用性。 **源码学习步骤** 1. **环境搭建**:首先需要安装编译工具和依赖库,配置...

    nginx+ffmpeg.rar

    这个"nginx+ffmpeg.rar"压缩包很可能是包含Nginx的配置文件示例、FFmpeg的使用脚本以及其他相关辅助工具的集合,便于研究者或开发者快速搭建一个基本的音视频服务环境。下载并解压后,可以参考其中的配置和脚本,...

Global site tag (gtag.js) - Google Analytics