学习
实践
活动
工具
TVP
写文章

浅谈Linux系统Nginx安全配置

0x00 Apache应用介绍

Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务器对外进行服务。

0x01 为什么要做安全配置

上期我们讨论了Apache的安全配置,Nginx同样也存在因为安全配置不合适导致的安全问题。Nginx的默认配置中存在一些安全问题,例如版本号信息泄露、未配置使用SSL协议等。因此安全配置Nginx服务器能有效的减少安全威胁,下面将对Nginx的安全配置进行讨论。

0x02 如何进行安全配置

1.配置SSL协议

Nginx web服务器的应配置使用Secure Sockets Layer Protocol (SSL协议)。为了数据传输的安全,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

加固方法:编辑nginx.conf文件和可用站点默认文件包含ssl on

2.限制SSL协议和密码

SSLv2协议不安全,不应使用。较新的TLS协议也应该优于旧的。并使用安全的加密密钥。

加固方法:nginx.conf文件中的ssl_ciphers字段应包含ALL:!EXP:!NULL:!ADH:!LOW:!SSLv2:!MD5:!RC4

3.拦截垃圾信息

HTTP Referrer Spam是垃圾信息发送者用来提高他们正在尝试推广的网站的互联网搜索引擎排名一种技术,如果他们的垃圾信息链接显示在访问日志中,并且这些日志被搜索引擎扫描,则会对网站排名产生不利影响。

加固方法:在nginx.conf文件中添加:

4.禁用WebDAV

Nginx支持webdav,虽然默认情况下不会编译。如果使用webdav,则应该在Nginx策略中禁用此规则。

加固方法:nginx.conf文件中dav_methods应设置为:off

5.禁用Nginx状态模块

当访问一个特制的URL时,如"../nginx.status",stub_status模块提供一个简短的Nginx服务器状态摘要。大多数情况下不应启用此模块。

加固方法:nginx.conf文件中stub_status不应设置为:on

6.关闭默认错误页上的Nginx版本号

如果在浏览器中出现Nginx自动生成的错误消息,默认情况下会包含Nginx的版本号。 这些信息可以被攻击者用来帮助他们发现服务器的潜在漏洞。

加固方法:nginx.conf文件中server_tokens应设置为:off

7.设置client_body_timeout超时

client_body_timeout设置请求体(request body)的读超时时间。仅当在一次readstep中,没有得到请求体,就会设为超时。超时后,Nginx返回HTTP状态码408(Request timed out)。

加固方法:nginx.conf文件中client_body_timeout应设置为:10

8.设置client_header_timeout

client_header_timeout设置等待client发送一个请求头的超时时间(例如:GET / HTTP/1.1)。仅当在一次read中,没有收到请求头,才会设为超时。超时后,Nginx返回HTTP状态码408(Request timed out)。

加固方法:nginx.conf文件中client_header_timeout应设置为:10

9.设置keepalive_timeout超时

keepalive_timeout设置与client的keep-alive连接超时时间。服务器将会在这个时间后关闭连接。

加固方法:nginx.conf文件中keepalive_timeout应设置为:55

10.设置send_timeout超时

send_timeout设置客户端的响应超时时间。这个设置不会用于整个转发器,而是在两次客户端读取操作之间。如果在这段时间内,客户端没有读取任何数据,Nginx就会关闭连接。

加固方法:nginx.conf文件中send_timeout应设置为:10

11.Nginx可用的方法应限制为GET, HEAD, POST

GET和POST是Internet上最常用的方法。Web服务器方法在RFC 2616中定义。Web服务器应禁用不需要实现的可用方法。

加固方法:nginx.conf文件中应存在:

12.控制并发连接limit_zone slimits

limit_zone 配置项限制来自客户端的同时连接数。通过此模块,可以从一个地址限制分配会话的同时连接数量或特殊情况。

加固方法:nginx.conf文件中limit_zone应设置为:slimits $binary_remote_addr 5m

13.控制并发连接limit_conn slimits

limit_conn配置项控制一个会话同时连接的最大数量,即限制来自单个IP地址的连接数量。

加固方法:nginx.conf文件中limit_conn应设置为:slimits 5

0x03 总结

对Nginx进行安全配置可以有效的防范一些常见安全问题,按照基线标准做好安全配置能够减少安全事件的发生。国内常见的基线标准有中国信息安全等级保护、电信网和互联网安全防护基线配置要求及检测要求,不同的企业也可以根据自身企业业务制定符合自己企业的安全基线标准。

0x04 参考链接

国家信息安全等级保护制度要求

电信网和互联网安全防护基线配置要求及检测要求

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180427G1FMYJ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券