1. 安装依赖
首先,安装所需的依赖库:
sudo apt-get update |
2. 安装 libModSecurity
接下来,我们需要从 GitHub 获取 ModSecurity 的源代码,并进行编译安装:
克隆
libModSecurity仓库:git clone https://github.com/owasp-modsecurity/ModSecurity.git
cd ModSecurity初始化子模块:
git submodule init
git submodule update**编译和安装
libModSecurity**:./build.sh
./configure
make -j$(nproc)
sudo make install验证安装: 确保 ModSecurity 安装成功,可以通过查看版本来验证:
modsec-version
3. 安装 modsecurity-nginx 模块
现在我们安装 modsecurity-nginx 模块,它是用于将 ModSecurity 与 Nginx 集成的组件。
克隆
modsecurity-nginx仓库:git clone https://github.com/owasp-modsecurity/ModSecurity-nginx.git
下载和解压 Nginx 源代码(如果你还没有下载):
NGINX_VERSION=$(nginx -v 2>&1 | awk -F'/' '{print $2}')
wget http://nginx.org/download/nginx-$NGINX_VERSION.tar.gz
tar -xvzf nginx-$NGINX_VERSION.tar.gz
cd nginx-$NGINX_VERSION编译
modsecurity-nginx模块到 Nginx:静态编译(将模块嵌入到 Nginx 中):
./configure --add-module=../ModSecurity-nginx
make -j$(nproc)
sudo make install动态编译(推荐使用动态模块):
./configure --add-dynamic-module=../ModSecurity-nginx --with-compat
make modules
sudo cp objs/ngx_http_modsecurity_module.so /etc/nginx/modules/
4. 配置 Nginx 使用 ModSecurity
编辑 Nginx 的主配置文件 /etc/nginx/nginx.conf,使 Nginx 加载 ModSecurity 模块并启用其功能。
1. 加载动态模块: 在 nginx.conf 文件的顶部,加载 modsecurity 模块:
load_module modules/ngx_http_modsecurity_module.so;
2. 启用 ModSecurity: 在 http 或 server 块中启用 ModSecurity,并指定规则文件路径:
modsecurity on;
modsecurity_rules_file /etc/nginx/modsecurity/modsecurity.conf;
load_module modules/ngx_http_modsecurity_module.so; |
modsecurity on; |
5. 配置 ModSecurity 与 Core Rule Set (CRS)
为了增强 ModSecurity 的防护能力,可以使用 Core Rule Set (CRS) 规则集。
克隆 CRS 仓库并安装规则:
cd /etc/nginx/modsecurity
git clone --depth 1 https://github.com/coreruleset/coreruleset.git
mv coreruleset rules
cp rules/crs-setup.conf.example rules/crs-setup.conf编辑
modsecurity.conf文件,启用 CRS 规则:sudo nano /etc/nginx/modsecurity/modsecurity.conf
确保文件中包含以下内容:
SecRuleEngine On
SecUnicodeMapFile /etc/nginx/modsecurity/unicode.mapping
Include /etc/nginx/modsecurity/rules/*.conf配置 CRS 设置:
sudo nano /etc/nginx/modsecurity/coreruleset/crs-setup.conf
根据需要修改配置,以适应特定需求。
6. 测试和重启 Nginx
测试 Nginx 配置是否正确:
sudo nginx -t
重启 Nginx 使更改生效:
sudo systemctl restart nginx
7. 验证 ModSecurity 是否生效
使用 curl 测试是否成功启用了 ModSecurity 防护规则:
curl -A "Nikto" http://your-server-ip
如果 ModSecurity 配置正确,你应该会看到 403 Forbidden 错误响应。
curl -A "Nikto" http://your-server-ip |
总结
通过以上步骤,你已经成功在 Ubuntu 22.10 上安装并配置了 ModSecurity 和 CRS 规则集。此配置将增强 Nginx 服务器的安全性,保护 Web 应用免受各种常见的攻击。
- 安装依赖:确保安装所需的库和工具。
- **安装 libModSecurity**:从 GitHub 获取并编译 libModSecurity。
- **安装 modsecurity-nginx**:将 ModSecurity 集成到 Nginx 中,支持静态或动态模块。
- 启用和配置 ModSecurity:在 Nginx 中启用 ModSecurity,加载 CRS 规则集,增强防护能力。
按照此指导文章操作,你的 Nginx 服务器将具备强大的 Web 应用防护能力。
希望这篇文章对你有所帮助!如有任何问题,随时欢迎询问。