本文概述
Nginx Web服务器在全球30%以上的网站中使用, 并且还在不断增长。
考虑到在线Web威胁的增加, Web工程师面临的挑战之一是充分认识到加强和保护Nginx的安全。
Nginx以其性能和轻量级的Web服务器/代理而闻名, 并在许多最繁忙的站点上使用。
- Pinterest.com
- Reddit.com
- WordPress.com
- Stackoverflow.com
- Mail.ru
如果你要在Nginx上托管Web应用程序并且担心安全性, 那么你要实现的第一件事就是Web应用程序防火墙(WAF)。
Mod Security是Trustwave SpiderLabs提供的开源WAF, 并于2012年提供给Nginx。
在本指南中, 我将说明如何使用Nginx下载, 安装和配置Mod Security。
以下演示是在DigitalOcean托管的CentOS上完成的。
如果你是Nginx的新手, 那么我建议你学习此基础课程。
下载Nginx和ModSecurity
你可以直接在服务器上或本地PC上下载nginx, 然后进行传输。
- 从下面的链接下载最新版本
http://nginx.org/en/download.html
- 如果直接在服务器上下载, 则可以使用以下wget
wget http://nginx.org/download/nginx-1.9.15.tar.gz
- 使用gunzip命令提取它们
gunzip -c nginx-1.9.15.tar.gz | tar xvf –
- 你将看到创建的新文件夹
drwxr-xr-x 8 1001 1001 4096 Apr 19 12:02 nginx-1.9.15
- 从下面的链接下载最新版本的Mod Security
https://www.modsecurity.org/download.html
- 你可以直接从服务器使用以下命令
wget https://www.modsecurity.org/tarball/2.9.1/modsecurity-2.9.1.tar.gz
gunzip -c modsecurity-2.9.1.tar.gz | tar xvf –
让我们安装它们
使用Mod Security安装Nginx
编译Nginx和mod安全源代码很重要。
- 登录到服务器并确保你具有root权限。
注意:如果你使用的是全新服务器, 则可能需要安装以下库。
yum install gcc make automake autoconf libtool pcre pcre-devel libxml2 libxml2-devel curl curl-devel httpd-devel
首先, 让我们编译mod安全性。转到modsecurity-2.9.1文件夹并使用以下命令。
./configure --enable-standalone-module
make
接下来, 安装具有mod安全性的Nginx
./configure --add-module=../modsecurity-2.9.1/nginx/modsecurity
make
make install
可以得出结论, Nginx已安装了Mod Security, 现在该进行配置了。
使用Nginx配置Mod安全性
将modsecurity.conf推荐的unicode.mapping文件从上面下载的ModSecurity源代码的提取文件夹中复制到nginx conf文件夹中。你也可以使用find命令。
find / -name modsecurity.conf-recommended
find / -name unicode.mapping
[[email protected] conf]# cp /opt/nginx/binary/modsecurity-2.9.1/modsecurity.conf-recommended /usr/local/nginx/conf/
[[email protected] conf]# cp /opt/nginx/binary/modsecurity-2.9.1/ unicode.mapping /usr/local/nginx/conf/
[[email protected] conf]#
让我们将modsecurity.conf-重命名为modsecurity.conf
mv modsecurity.conf-recommended modsecurity.conf
- 备份nginx.conf文件
- 打开nginx.conf文件, 并在” location /”指令下添加以下内容
ModSecurityEnabled on;
ModSecurityConfig modsecurity.conf;
所以它应该看起来像这样
location / {
ModSecurityEnabled on;
ModSecurityConfig modsecurity.conf;
}
现在, Mod Security已与Nginx集成。重新启动Nginx以确保其正常运行。
让我们验证一下…
有两种方法可以确认Nginx是使用Mod Security编译的。
第一…
结合使用-V和nginx可执行文件, 列出已编译的模块。
[[email protected] sbin]# ./nginx -V
nginx version: nginx/1.9.15
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC)
configure arguments: --add-module=../modsecurity-2.9.1/nginx/modsecurity
[[email protected] sbin]#
第二…
转到日志文件夹并查看错误文件, 你应该看到以下内容
2016/05/21 21:54:51 [notice] 25352#0: ModSecurity for nginx (STABLE)/2.9.1 (http://www.modsecurity.org/) configured.
2016/05/21 21:54:51 [notice] 25352#0: ModSecurity: APR compiled version="1.3.9"; loaded version="1.3.9"
2016/05/21 21:54:51 [notice] 25352#0: ModSecurity: PCRE compiled version="7.8 "; loaded version="7.8 2008-09-05"
2016/05/21 21:54:51 [notice] 25352#0: ModSecurity: LIBXML compiled version="2.7.6"
得出结论, 你已成功使用Nginx配置了ModSecurity。
默认情况下, 配置仅处于检测模式, 这意味着它将不执行任何操作并保护你的Web应用程序。
在我的下一篇文章中, 我解释了如何配置OWASP规则集并启用Mod Security来防止Web安全漏洞。