第1章 概述
1.1 目标
Nginx(发音同engine x)是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,由俄罗斯的程序设计师Igor Sysoev所开发,可以稳定地运行在Linux、Windows等操作系统上,其特点是占用内存少,并发能力强。
同其他软件一样,Nginx也出现过一些安全漏洞,利用这些漏洞可以对Web服务器进行渗透攻击。本文主要描述互联网架构中常用产品Nginx 的配置和安全加固工作,最终用以指导系统实施。
1.2 预期读者
本文档用于指导系统工程师进行系统实施工作,架构师和系统工程师应该通读本文档,选择适当方式用于自己的系统。
第2章 产品介绍
Nginx是一个轻量级,高性能的Web服务器/反向代理和电子邮件代理(IMAP/POP3),它可以运行在UNIX,GNU/Linux,BSD变种,MACOS X,Solaris和Microsoft Windows上。根据Netcraft的调查数据显示,互联网上11%的域名都使用了Nginx Web服务器。Nginx是解决C10K问题的服务器之一,与传统服务器不一样,Nginx不依赖于线程处理请求,相反,它使用了一个更具扩展性的事件驱动(异步)架构。Nginx在很多高流量网站上得到了应用,如WordPress,Hulu,Github和SourceForge。
第3章 Nginx的安全加固配置
3.1 Nginx版本统一
查看当前系统中部署的Nginx版本。
1 2 |
|
3.2 禁用autoindex
确保nginx.conf配置文件上禁用autoindex模块,即没有autoindex的配置。
加固检查:
确保nginx.conf配置文件上禁用autoindex,即autoindex off或者没有配置autoindex。
3.3 关闭服务器标记
如果开启的话(默认情况下)所有的错误页面都会显示服务器的版本和信息。nginx.conf配置如下:
1 2 3 4 5 6 7 |
|
加固检查:
1 2 3 4 5 6 7 8 9 |
|
其中,http://localhost/wavsep表示一个应用URL
3.4 自定义缓存
设置自定义缓存以限制缓冲区溢出攻击。nginx.conf配置如下:
1 2 3 4 5 6 7 8 9 |
|
注:上述的参数不是最优参数,仅供参考。
加固检查:
确保server模块中配置了上述标红的配置。
3.5 设置timeout
设置timeout设低来防御DOS攻击,nginx.conf配置如下:
1 2 3 4 5 6 |
|
加固检查:
1 2 3 4 5 6 7 8 9 |
|
其中,http://localhost/wavsep表示一个应用URL
3.6 配置日志
鉴于日志的输出格式还未确定,目前暂时先使用Nginx默认的日志格式。nginx.conf配置如下:
http {
......
log_format main '$remote_addr - $remote_user [$time_local]"$request" ''$status $body_bytes_sent "$http_referer"''"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/ access.log main;
... ...
加固检查:
查看Nginx的日志文件是否存在,并且访问应用时,有日志输出。
[root@srv-dfh526~]# tail -3f /usr/local/nginx/logs/dfh.smartcity.com.log
Client_IP:10.5.220.27 Client_IP_For:- - - [10/Jan/2014:10:42:20+