> 文章列表 > nginx modsecurity

nginx modsecurity

nginx modsecurity

介绍

Nginx是一个高性能的HTTP和反向代理服务器,它可以帮我们快速构建高性能和高并发的Web应用程序。而Modsecurity则是一种开源的Web应用程序防火墙(WAF),为Web应用程序提供一层保护,防止来自互联网的攻击和恶意行为。Nginx与Modsecurity的结合称为Nginx Modsecurity,能够在应用程序级别上提供安全性,保护Web应用程序免受SQL注入、跨站点脚本(XSS)等攻击。

安装

要将Modsecurity与Nginx一起使用,需要先安装OpenResty或Nginx的源码。 OpenResty是依赖于Nginx的所谓“软件应用平台”。由于其 可以使用Nginx自己的模块,因此它是使用Nginx的首选方法。 安装Nginx与Modsecurity的步骤如下:

  1. 安装Nginx或OpenResty。
  2. 从Modsecurity GitHub存储库下载最新版本。
  3. 从Openresty的Luajit存储库下载Luajit 2.1。
  4. 安装Libmodsecurity与LJ2。
  5. 从OWASP GitHub存储库下载最新的核心规则集合。
  6. 为Nginx编译Modsecurity。
  7. 为Modsecurity编译核心规则。

配置

要在Nginx中启用Modsecurity,需要在Nginx配置文件中设置以下内容:安装完Modsecurity后,需要将Modsecurity与Nginx集成,需要在Nginx的配置文件中引入Modsecurity,并为其配置路径。打开Nginx配置文件(nginx.conf),在http段内添加以下内容:

http {  ...  lua_shared_dict modsec 10M;  init_by_lua_block {    local ModSec = require "resty.modsecurity"    ModSec:init()    ModSec:rules_file("/path/to/modsec_includes.conf")    }  access_by_lua_block {    local ModSec = require "resty.modsecurity"    ModSec:read_request_body()    ModSec:exec()  }}

当Nginx接收请求时,access_by_lua_block会执行,将请求的请求正文放置在内存中。运行其他的Modsecurity规则与检查,以利用这些规则保护Web应用程序免受攻击。

Modsecurity规则

Modsecurity规则是指示Modsecurity如何检测和处理请求的集合。 在安装完Modsecurity之后,您还需要为其定义规则,以允许其检测和处理请求。规则是存储为CRS文件夹中的文件,每个文件都是一组规则有许多第三方规则集可用,其中一些是开源的,如OWASP规则集,而其他规则集可能是专有的。 Modsecurity还提供了一个规则引擎,允许您使用Lua脚本编写自己的规则和计算逻辑。

性能

Nginx和Modsecurity结合的核心优点之一是性能。 Nginx是业界公认的高性能Web服务器之一,而Modsecurity已经优化为需要使用最少的资源来执行请求检查。 在深入使用Nginx Modsecurity之前,请确保服务器已经完成了足够的负载测试。 在负载测试之前,请确保Modsecurity已正常配置。