怎样在 Ubuntu 20.04 LTS 上使用 Nginx 部署 Modsecurity

国防部安全 是一个免费的、开源的 Web 应用程序防火墙,由不同的 Web 服务器支持,例如 Apache、IIS 和 Nginx。 它被部署为外部安全层来保护 Web 服务器。

在本教程中,您将学习怎样使用预安装的 Nginx 安装 ModSecurity 防火墙。 我们使用 Ubuntu 20.04 服务器来演示该过程。

先决条件

Ubuntu 20.04 LTS 服务器

安装在 Ubuntu 服务器上的 Nginx

安装指南

如果您的服务器上没有安装 Nginx,请按照本指南满足 Modsecurity 安装要求:

How to Install Nginx on Ubuntu 20.04 LTS Using Source Code

现在您已经安装了 Nginx,让我们开始安装 ModSecurity。

第 1 步:安装 libmodsecurity3

首先,在您的机器上安装 git,以便您可以克隆 ModSecurity git 存储库。 我们可以通过运行以下命令来做到这一点:

sudo apt install git -y

现在安装了 git,通过运行以下命令克隆存储库:

git clone --depth 1 -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity /usr/local/src/ModSecurity/

第 2 步:转到 Modsecurity 目录

现在您已经克隆了 modsecurity git 存储库,请按照以下路径进入 modsecurity 目录:

cd /usr/local/src/ModSecurity/

怎样在 Ubuntu 20.04 LTS 上使用 Nginx 部署 Modsecurity 1

第 3 步:安装 libmodsecurity3 依赖项

现在我们位于 Modsecurity 目录中,我们将在此步骤中安装 libmodsecurity3 依赖项。 运行此命令:

sudo apt install gcc make build-essential autoconf automake libtool libcurl4-openssl-dev liblua5.3-dev libfuzzy-dev ssdeep gettext pkg-config libpcre3 libpcre3-dev libxml2 libxml2-dev libcurl4 libgeoip-dev libyajl-dev doxygen -y

怎样在 Ubuntu 20.04 LTS 上使用 Nginx 部署 Modsecurity 2

第 4 步:安装 Git 模块

现在,借助以下命令安装 git 子模块:

git submodule init

怎样在 Ubuntu 20.04 LTS 上使用 Nginx 部署 Modsecurity 3

接下来,我们将更新子模块:

git submodule update

怎样在 Ubuntu 20.04 LTS 上使用 Nginx 部署 Modsecurity 4

第 5 步:构建 modsecurity 环境

是时候构建 modsecurity 环境了。 为此,请运行以下命令:

./build.sh

怎样在 Ubuntu 20.04 LTS 上使用 Nginx 部署 Modsecurity 5

现在使用以下命令进行配置:

./configure

怎样在 Ubuntu 20.04 LTS 上使用 Nginx 部署 Modsecurity 6

在此之后,您将收到此错误:

怎样在 Ubuntu 20.04 LTS 上使用 Nginx 部署 Modsecurity 7

忽略这一点并继续前进是可以的。

第 6 步:编译 modsecurity 源代码

现在我们将使用以下命令为 libmodsecurity3 编译环境:

make

怎样在 Ubuntu 20.04 LTS 上使用 Nginx 部署 Modsecurity 8

如果要提高编译速度,可以指定-j 。 我有 4 个 CPU,我将使用全部 4 个进行编译,如下所示:

make -j 4

怎样在 Ubuntu 20.04 LTS 上使用 Nginx 部署 Modsecurity 9

接下来,我们将运行安装命令:

sudo make install

怎样在 Ubuntu 20.04 LTS 上使用 Nginx 部署 Modsecurity 10

安装在 /usr/local/modsecurity/.

Step 7: Install modsecurity-nginx connector

在这一步中,我们将安装 Modsecurity-nginx 连接器。 它是 Nginx 和 ModSecurity 之间的连接和通信点。

首先,我们需要克隆连接器存储库。 通过运行以下命令来做到这一点:

sudo git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git
/usr/local/src/ModSecurity-nginx/

怎样在 Ubuntu 20.04 LTS 上使用 Nginx 部署 Modsecurity 11

第 8 步:安装 modsecurity-nginx 依赖项

首先,像这样进入 Nginx 源目录:

cd /usr/local/src/nginx/nginx-1.21.1

怎样在 Ubuntu 20.04 LTS 上使用 Nginx 部署 Modsecurity 12

确保将命令中的 Nginx 版本替换为您当前的 Nginx 版本,否则您将收到错误消息。

要安装必要的依赖项,请运行以下命令:

sudo apt build-dep nginx && sudo apt install uuid-dev -y

怎样在 Ubuntu 20.04 LTS 上使用 Nginx 部署 Modsecurity 13

接下来,我们将通过运行以下命令来编译带有 –with-compat 标志的 Modsecurity-nginx 连接器模块:

sudo ./configure --with-compat --add-dynamic-module=/usr/local/src/ModSecurity-nginx

怎样在 Ubuntu 20.04 LTS 上使用 Nginx 部署 Modsecurity 14

现在运行这个命令来创建动态模块:

sudo make modules

怎样在 Ubuntu 20.04 LTS 上使用 Nginx 部署 Modsecurity 15

现在,借助以下命令将您刚刚在 objs/ngx_http_modsecurity_module.so 中创建的动态模块复制到 /usr/share/nginx/modules:

sudo cp objs/ngx_http_modsecurity_module.so /usr/share/nginx/modules/

怎样在 Ubuntu 20.04 LTS 上使用 Nginx 部署 Modsecurity 16

第 9 步:在 Nginx 配置文件中启用 Modsecurity

要在 Nginx 中启用 Modsecurity,您需要首先在配置中指定您的 modsecurity 模块的加载模块和路径。

使用 nano 编辑器打开 Nginx 配置文件,如下所示:

sudo nano /etc/nginx/nginx.conf

怎样在 Ubuntu 20.04 LTS 上使用 Nginx 部署 Modsecurity 17

在文件中,在顶部添加这一行:

load_module modules/ngx_http_modsecurity_module.so;

怎样在 Ubuntu 20.04 LTS 上使用 Nginx 部署 Modsecurity 18

在 HTTP {} 部分下,添加以下代码行:

modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/modsec-config.conf;

怎样在 Ubuntu 20.04 LTS 上使用 Nginx 部署 Modsecurity 19

第 10 步:为 modsecurity 配置目录和文件

创建一个名为 modsec 的目录。 命令中提到了目录的路径:

sudo mkdir /etc/nginx/modsec/

怎样在 Ubuntu 20.04 LTS 上使用 Nginx 部署 Modsecurity 20

将来您将需要此目录来存储配置文件和规则。

现在,使用以下命令从克隆的 git 目录复制示例 Modsecurity 配置文件:

sudo cp /usr/local/src/ModSecurity/modsecurity.conf-recommended /etc/nginx/modsec/modsecurity.conf

怎样在 Ubuntu 20.04 LTS 上使用 Nginx 部署 Modsecurity 21

现在打开 modsecurity 配置文件:

sudo nano /etc/nginx/modsec/modsecurity.conf

怎样在 Ubuntu 20.04 LTS 上使用 Nginx 部署 Modsecurity 22

在第 7 行的文件中找到 SecRuleEngine 指令并将其更改为 DetectionOnly,如下所示:

secruleEngine 仅检测

怎样在 Ubuntu 20.04 LTS 上使用 Nginx 部署 Modsecurity 23

要启用 Modsecurity,请找到将以下指令更改为 On ,如下所示:

secRuleEngine on

怎样在 Ubuntu 20.04 LTS 上使用 Nginx 部署 Modsecurity 24

现在在第 224 行找到以下指令:

secAuditLogParts ABIJDEFHZ

怎样在 Ubuntu 20.04 LTS 上使用 Nginx 部署 Modsecurity 25

将其更改为:

secAuditLogParts ABCDEFHJKZ

怎样在 Ubuntu 20.04 LTS 上使用 Nginx 部署 Modsecurity 26

现在创建 modsec-config.conf 文件。 在这里,您将为 modsecurity 添加 modsecurity.conf 和其他规则:

sudo nano /etc/nginx/modsec/modsec-config.conf

怎样在 Ubuntu 20.04 LTS 上使用 Nginx 部署 Modsecurity 27

在您刚刚创建的文件中,添加以下行:

Include /etc/nginx/modsec/modsecurity.conf

怎样在 Ubuntu 20.04 LTS 上使用 Nginx 部署 Modsecurity 28

Save 文件并退出。

第 11 步:复制 unicode.mapping 文件

最后,像这样复制 Modsecurity 的 unicode.mapping 文件:

sudo cp /usr/local/src/ModSecurity/unicode.mapping /etc/nginx/modsec/

怎样在 Ubuntu 20.04 LTS 上使用 Nginx 部署 Modsecurity 29

第 12 步:检查 Nginx 配置

在重新启动 Nginx 之前,通过运行以下命令检查配置是否正常:

sudo nginx -t

怎样在 Ubuntu 20.04 LTS 上使用 Nginx 部署 Modsecurity 30

如果你得到以下输出,你就可以开始了:

怎样在 Ubuntu 20.04 LTS 上使用 Nginx 部署 Modsecurity 31

第 13 步:重新加载 Nginx

现在使用以下命令重新启动 Nginx:

sudo systemctl restart nginx

怎样在 Ubuntu 20.04 LTS 上使用 Nginx 部署 Modsecurity 32

在本指南中,我们看到了怎样在已经预装了 Nginx 的 ubuntu 服务器上安装 Modsecurity。 我们还看到了怎样配置 ModSecurity 和 Nginx 以借助一些易于遵循的命令来连接它们。