如何在Nginx上安装和配置ModSecurity
Nginx web server is used on more than 30% of website worldwide and growing.
考虑到在线网络威胁的增加,网络工程师面临的挑战之一是对 hardening and securing Nginx 有充分的了解。
Nginx以其性能和轻量级的Web服务器/代理而闻名,并在许多最繁忙的网站上使用。
- Pinterest.com
- Reddit.com
- Wordpress.com
- Stackoverflow.com
- Mail.ru
如果您将Web应用程序托管在Nginx上并且关注安全性,那么您可能想要实施的第一件事就是 Web Application Firewall(WAF)。
Mod Security是由Trustwave SpiderLabs开发的开源WAF,于2012年为Nginx提供支持。
在本指南中,我将解释如何通过Nginx下载、安装和配置Mod Security。
以下演示是在托管了 DigitalOcean 的CentOS上进行的。
如果您是Nginx的新手,我建议您参考这个 fundamental course。
下载Nginx和ModSecurity
您可以直接在服务器上下载Nginx,或者在本地PC上下载后传输到服务器上。
- 从以下链接下载最新版本
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://github.com/SpiderLabs/ModSecurity
- 您可以直接从服务器上使用以下命令
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 security源代码。
- 登录到服务器并确保您拥有root权限。
注意:如果您在全新的服务器上进行操作,则可能需要安装以下库。
yum install gcc make automake autoconf libtool pcre pcre-devel libxml2 libxml2-devel curl curl-devel httpd-devel
首先,编译mod security。进入modsecurity-2.9.1文件夹并使用以下命令。
./configure --enable-standalone-module make
接下来,安装带有mod security的Nginx
./configure --add-module=../modsecurity-2.9.1/nginx/modsecurity make make install
这样就完成了Nginx与Mod Security的安装,现在是时候配置它了。
配置Nginx的Mod Security
从上述下载的ModSecurity源代码的提取文件夹中复制modsecurity.conf-recommended和unicode.mapping文件到nginx的conf文件夹中。您也可以使用 find 命令。
find / -name modsecurity.conf-recommended find / -name unicode.mapping
[root@GeekFlare-Lab conf]# cp /opt/nginx/binary/modsecurity-2.9.1/modsecurity.conf-recommended /usr/local/nginx/conf/ [root@GeekFlare-Lab conf]# cp /opt/nginx/binary/modsecurity-2.9.1/ unicode.mapping /usr/local/nginx/conf/ [root@GeekFlare-Lab conf]#
让我们将 modsecurity.conf-recommended 重命名为 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。
第一种方法…
使用带有nginx可执行文件的-V列出编译的模块。
[root@GeekFlare-Lab sbin]# ./nginx -V nginx版本:nginx/1.9.15 由gcc 4.4.7 20120313(Red Hat 4.4.7-16)(GCC)构建 配置参数:--add-module=../modsecurity-2.9.1/nginx/modsecurity [root@GeekFlare-Lab sbin]#
第二种方法…
转到日志文件夹并查看错误文件,您应该看到以下内容
2016/05/21 21:54:51 [notice] 25352#0: 用于nginx的ModSecurity(稳定版)/2.9.1(http://www.modsecurity.org/)已配置。 2016/05/21 21:54:51 [notice] 25352#0: ModSecurity: APR编译版本="1.3.9";加载版本="1.3.9" 2016/05/21 21:54:51 [notice] 25352#0: ModSecurity: PCRE编译版本="7.8 ";加载版本="7.8 2008-09-05" 2016/05/21 21:54:51 [notice] 25352#0: ModSecurity: LIBXML编译版本="2.7.6"
这表明您已成功配置了ModSecurity与Nginx。
默认配置仅处于检测模式,这意味着它不会执行任何动作和protect your web applications。
在我的下一篇文章中,我已经解释了如何配置OWASP rule set and enable Mod Security以防止Web安全漏洞。