nginx 安全加固1
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