购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.3.2 Nginx中间件安全加固

Nginx是一款轻量级的Web服务器/反向代理服务器,具有占有内存少、并发能力强等特点。Nginx可以作为静态页面的Web服务器,同时还支持CGI协议的动态语言,如perl、PHP等。当使用Nginx作为Web服务中间件时,如果不正确配置可能会存在很多安全隐患,如解析漏洞、目录遍历漏洞、缓冲区溢出漏洞等。

通过访问目标网站,查看是否存在目录遍历安全问题,攻击者可利用该漏洞,下载及查看目标网站敏感数据、了解网站目录结构等信息,如图3-56a所示。对于使用Nginx中间件的网站,Ubuntu和Debian系统可以修改/etc/nginx目录下的nginx.conf配置文件,CentOS系统可以修改/usr/local/nginx/conf目录下的nginx.conf配置文件,在配置文件中将sutoindex on修改为autoindex off,便可以修复目录遍历安全问题,通过修改nginx.conf实现修复目录遍历安全问题后,结果如图3-56b所示。

图3-56 修复目录遍历安全问题

由图3-57a可知,此时使用的是nginx/1.18.0(Ubuntu)版本,为了避免泄露使用的Nginx版本信息,Ubuntu及Debian系统可以修改nginx.conf配置文件,CentOS系统可以修改nginx.conf配置文件,在配置文件中将server_tokens on修改为server_tokens off。图3-57a所示为泄露Nginx版本信息的页面,图3-57b所示为隐藏Nginx版本信息后的效果。

Nginx存在解析漏洞是由于开发人员对Nginx配置不当造成的一种安全问题,如图3-58所示。当PHP遇到文件路径info.jpg/x.php,如果在php.ini配置文件中将cgi.fix_pathinfo参数设置为1,该参数用于修复路径,当前路径不存在,则采用上层路径,去掉最后的/x.php,然后系统会继续判断info.jpg是否存在,如果此时将fpm/pool.d/www.conf中的security.limit_extensions参数配置为空时,则会导致允许fastcgi将png、jpg等文件当做PHP代码解析。当目标网站存在文件上传点时,白名单限制只能上传图片文件,则攻击者可将info.jpg图片文件上传到目标系统,如果此时目标系统存在Nginx解析安全问题,则会将info.jpg文件解析为PHP脚本语言运行,进而给系统造成一定程度的安全隐患。

图3-57 修复Nginx信息泄露问题

图3-58 Nginx解析漏洞

为修复Nginx解析安全问题,可以在php.ini配置文件中注释cgi.fix_pathinfo=0所在行,用来关闭cgi.fix_pathinfo的修复路径功能。在fpm/pool.d目录下的www.conf文件中的security.limit_extensions参数后面添加.php,仅允许fastcgi解析PHP文件类型,这样即使攻击者上传了类似info.jpg/x.php格式的文件,Nginx也不会将它解析为PHP文件了,如图3-59所示。

图3-59 修复Nginx解析漏洞

Nginx与Apache一样,都具备详尽的日志记录功能,协助安全人员对事故进行排查和应急溯源。Nginx默认开启了访问日志和错误日志。错误日志主要用于记录服务器和请求处理过程中的错误信息,如图3-60所示;访问日志用于记录服务器所处理访问活动,如客户端IP、浏览器信息、请求处理时间、请求URL等,如图3-61所示。

Nginx的error.log日志级别可以分为debug、info、notice、warn、error和crit,可以通过修改配置文件内容定义日志级别,Ubuntu及Debian系统可以修改nginx.conf配置文件,CentOS系统可以修改nginx.conf配置文件,在配置文件中将“error_log /var/log/nginx/error.log ;”修改为“error_log /var/log/nginx/error.log notice;”,就可以将error.log日志级别设置为notice。

图3-60 查看错误日志信息

图3-61 查看访问日志信息 kiFi0gBjU/RiQQPF7udDFtEamraHyrVRjnfK8GVaynE5UjtP0jELfs7IVHFN0Et4

点击中间区域
呼出菜单
上一章
目录
下一章
×