如何在Nginx上安装和配置ModSecurity

本文概述

Nginx Web服务器在全球30%以上的网站中使用, 并且还在不断增长。

考虑到在线Web威胁的增加, Web工程师面临的挑战之一是充分认识到加强和保护Nginx的安全。

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安全漏洞。

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?