阅读视图

发现新文章,点击刷新页面。

Nginx 集成 ModSecurity 实现 Web 应用防火墙功能

作者 Teacher Du

要在Nginx中集成ModSecurity以实现Web应用防火墙(WAF)功能,你可以按照以下步骤操作:

安装依赖包

首先,你需要安装一些必要的依赖包,例如libxml2、libpcre3、libapr1等。这可以通过包管理器完成,例如在Debian或Ubuntu系统上使用apt-get

1
2
sudo apt-get update
sudo apt-get install libxml2 libxml2-dev libpcre3 libpcre3-dev libapr1 libapr1-dev libaprutil1 libaprutil1-dev

下载并编译ModSecurity

接着,从GitHub克隆ModSecurity的源代码,编译并安装:

1
2
3
4
5
6
git clone https://github.com/SpiderLabs/ModSecurity
cd ModSecurity
./build.sh
./configure
make
sudo make install

下载并编译Nginx ModSecurity模块

然后,下载Nginx ModSecurity模块并编译Nginx以包含该模块:

1
2
3
4
5
git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git
cd /path/to/nginx/source
./configure --add-module=/path/to/ModSecurity-nginx
make
sudo make install

配置ModSecurity

在Nginx的配置文件中启用ModSecurity并指定规则文件。例如,在nginx.conf中添加:

1
2
3
4
5
6
7
8
9
10
11
load_module modules/ngx_http_modsecurity_module.so;
http {
modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/main.conf;
server {
location / {
proxy_pass http://backend;
modsecurity on;
}
}
}

使用OWASP核心规则集

你可以使用默认的OWASP核心规则集(CRS),这是一个广泛认可的标准规则集,专门用于检测和阻止Web应用程序攻击。克隆CRS并将其配置到ModSecurity中:

1
2
git clone https://github.com/coreruleset/coreruleset /etc/nginx/modsec/coreruleset
cp /etc/nginx/modsec/coreruleset/crs-setup.conf.example /etc/nginx/modsec/coreruleset/crs-setup.conf

修改/etc/nginx/modsec/main.conf来包含CRS配置:

1
2
Include /etc/nginx/modsec/coreruleset/crs-setup.conf
Include /etc/nginx/modsec/coreruleset/rules/*.conf

重启Nginx

最后,重启Nginx以应用更改:

1
sudo service nginx reload

以上步骤概述了如何在Nginx中集成ModSecurity以实现WAF功能。确保在实际部署前在测试环境中验证配置的有效性,并根据需要调整规则以避免误报。引用自 。

❌