学习Nginx(十三):第三方模块ModSecurity的安装与规则配置

简介

ModSecurity是一个开源的、跨平台的Web应用防火墙(WAF),被称为WAF界的“瑞士军刀”。它可以通过检查Web服务接收到的数据,以及发送出去的数据来对网站进行安全防护。

ModSecurity功能介绍:

    • SQL Injection (SQLi):阻止SQL注入
    • Cross Site Scripting (XSS):阻止跨站脚本攻击
    • Local File Inclusion (LFI):阻止利用本地文件包含漏洞进行攻击
    • Remote File Inclusione(RFI):阻止利用远程文件包含漏洞进行攻击
    • Remote Code Execution (RCE):阻止利用远程命令执行漏洞进行攻击
    • PHP Code Injectiod:阻止PHP代码注入
    • HTTP Protocol Violations:阻止违反HTTP协议的恶意访问
    • HTTPoxy:阻止利用远程代理感染漏洞进行攻击
    • Sshllshock:阻止利用Shellshock漏洞进行攻击
    • Session Fixation:阻止利用Session会话ID不变的漏洞进行攻击
    • Scanner Detection:阻止黑客扫描网站
    • Metadata/Error Leakages:阻止源代码/错误信息泄露
    • Project Honey Pot Blacklist:蜜罐项目黑名单
    • GeoIP Country Blocking:根据判断IP地址归属地来进行IP阻断

安装依赖工具

[root@RockyLinux9 ~]# dnf install -y unzip wget epel-release
[root@RockyLinux9 ~]# dnf install -y gcc-c++ flex bison yajl lua curl-devel curl zlib-devel pcre-devel pcre2-devel libxml2-devel ssdeep-devel libtool autoconf automake make libmaxminddb


# 以下组件无法使用工具安装,请注意devel包与系统中对应组件的版本一致
[root@RockyLinux9 ~]# wget https://mirrors.aliyun.com/rockylinux/9/devel/x86_64/kickstart/Packages/l/lua-devel-5.4.4-4.el9.x86_64.rpm
[root@RockyLinux9 ~]# wget https://mirrors.aliyun.com/rockylinux/9/devel/x86_64/kickstart/Packages/y/yajl-devel-2.1.0-22.el9.x86_64.rpm
[root@RockyLinux9 ~]# wget https://mirrors.aliyun.com/rockylinux/9/devel/x86_64/kickstart/Packages/l/lmdb-0.9.29-3.el9.x86_64.rpm
[root@RockyLinux9 ~]# wget https://mirrors.aliyun.com/rockylinux/9/devel/x86_64/kickstart/Packages/l/lmdb-devel-0.9.29-3.el9.x86_64.rpm
[root@RockyLinux9 ~]# wget https://mirrors.aliyun.com/rockylinux/9/devel/x86_64/kickstart/Packages/l/libmaxminddb-devel-1.5.2-3.el9.x86_64.rpm
[root@RockyLinux9 ~]# dnf localinstall -y libmaxminddb-devel-1.5.2-3.el9.x86_64.rpm
[root@RockyLinux9 ~]# dnf localinstall -y yajl-devel-2.1.0-22.el9.x86_64.rpm
[root@RockyLinux9 ~]# dnf localinstall -y lmdb-0.9.29-3.el9.x86_64.rpm
[root@RockyLinux9 ~]# dnf localinstall -y lmdb-devel-0.9.29-3.el9.x86_64.rpm
[root@RockyLinux9 ~]# dnf localinstall -y libmaxminddb-devel-1.5.2-3.el9.x86_64.rpm

安装ModSecurity

[root@RockyLinux9 ~]# cd /usr/local/
[root@RockyLinux9 local]# wget https://github.com/owasp-modsecurity/ModSecurity/releases/download/v3.0.12/modsecurity-v3.0.12.tar.gz
[root@RockyLinux9 local]# tar xf modsecurity-v3.0.12.tar.gz
[root@RockyLinux9 local]# mv modsecurity-v3.0.12 modsecurity
[root@RockyLinux9 local]# cd modsecurity
[root@RockyLinux9 modsecurity]# ./configure
[root@RockyLinux9 modsecurity]# make && make install

配置模块ModSecurity-nginx

  • 停止nginx服务
[root@RockyLinux9 modsecurity]# systemctl stop nginx
[root@RockyLinux9 modsecurity]# ps -ef|grep nginx
  • 下载ModSecurity-nginx
[root@RockyLinux9 ~]# cd /usr/local/
[root@RockyLinux9 local]# wget https://github.com/owasp-modsecurity/ModSecurity-nginx/releases/download/v1.0.3/modsecurity-nginx-v1.0.3.tar.gz
[root@RockyLinux9 local]# tar xf modsecurity-nginx-v1.0.3.tar.gz
[root@RockyLinux9 local]# mv modsecurity-nginx-v1.0.3 modsecurity-nginx
  • 查看依赖并重新编译nginx
[root@RockyLinux9 modsecurity]# cd /root/nginx-1.26.0
[root@RockyLinux9 nginx-1.26.0]# nginx -V
# 添加--add-module=ModSecurity-nginx的路径
[root@RockyLinux9 nginx-1.26.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module --add-module=/usr/local/modsecurity-nginx
[root@RockyLinux9 nginx-1.26.0]# make && make instal
  • 启动nginx
[root@RockyLinux9 nginx-1.26.0]# systemctl start nginx

模拟XSS攻击

  • 模拟测试未启动ModSecurity时的访问效果
    • URL:http://linuxjsz.com/?param="<script>alert(1);</script>

修改配置文件

  • 创建相关配置文件夹
[root@RockyLinux9 nginx-1.26.0]# cd /usr/local
[root@RockyLinux9 local]# mkdir /usr/local/nginx/conf/modsecurity
# 下载规则文件
[root@RockyLinux9 local]# wget http://www.modsecurity.cn/download/corerule/owasp-modsecurity-crs-3.3-dev.zip
[root@RockyLinux9 local]# unzip owasp-modsecurity-crs-3.3-dev.zip
# 拷贝相关文件
[root@RockyLinux9 local]# cp -r /usr/local/owasp-modsecurity-crs-3.3-dev/rules/ /usr/local/nginx/conf/modsecurity/
[root@RockyLinux9 local]# cp /usr/local/owasp-modsecurity-crs-3.3-dev/crs-setup.conf.example /usr/local/nginx/conf/modsecurity/crs-setup.conf
[root@RockyLinux9 local]# cp /usr/local/modsecurity/modsecurity.conf-recommended /usr/local/nginx/conf/modsecurity/modsecurity.conf
[root@RockyLinux9 local]# cp /usr/local/modsecurity/unicode.mapping /usr/local/nginx/conf/modsecurity/
  • 修改nginx
    • 在http或server段中添加如下内容(http段添加表示全局配置,server段添加表示执行对应网站地址配置)
[root@RockyLinux9 local]# vim /usr/local/nginx/conf/nginx.conf
http {
    ...
    modsecurity on;
    modsecurity_rules_file /usr/local/nginx/conf/modsecurity/modsecurity.conf;
    ...
}
  • 修改modsecurity.conf
[root@RockyLinux9 local]# vim /usr/local/nginx/conf/modsecurity/modsecurity.conf
# 修改参数
  7 #SecRuleEngine DetectionOnly
  8 SecRuleEngine On
  9
# 添加如下内容,加载相关规则及配置  
 10 Include /usr/local/nginx/conf/modsecurity/crs-setup.conf
 11 Include /usr/local/nginx/conf/modsecurity/rules/*.conf
  • 重载nginx
[root@RockyLinux9 local]# nginx -s reload

测试结果

  • 查看浏览器,刷新

分享、在看与点赞
👇只要你点,我们就是胖友👇

来自: 学习Nginx(十三):第三方模块ModSecurity的安装与规则配置icon-default.png?t=N7T8https://mp.weixin.qq.com/s/o1UXCeFF_Xcc4C1fQlmvRg

  • 32
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在 macOS 上安装 nginx第三方模块可以使用 Homebrew 包管理器来简化过程。以下是安装第三方模块的步骤: 1. 首先,确保您已经安装了 Homebrew。如果您还没有安装,可以在终端中运行以下命令来安装 Homebrew: ``` /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" ``` 2. 安装 nginx。在终端中运行以下命令来使用 Homebrew 安装 nginx: ``` brew install nginx ``` 3. 找到您想要安装第三方 nginx 模块。您可以通过在搜索引擎上搜索或访问模块的官方网站来找到合适的模块。 4. 下载并解压第三方模块的源代码。将源代码解压到一个您可以方便访问的位置。 5. 进入解压后的模块源代码目录,并使用 `./configure` 命令配置编译选项。在这个命令中,您可以通过添加 `--add-dynamic-module=/path/to/module` 来指定要安装模块。例如: ``` ./configure --add-dynamic-module=/path/to/module ``` 请将 `/path/to/module` 替换为您要安装模块的实际路径。 6. 完成配置后,运行 `make` 命令编译 nginx。 7. 编译完成后,在终端中运行以下命令将编译好的模块复制到 nginx模块目录: ``` cp objs/*.so /usr/local/Cellar/nginx/{version}/libexec/modules/ ``` 请将 `{version}` 替换为您当前安装nginx 版本号。 8. 在终端中运行以下命令启动 nginx: ``` brew services start nginx ``` 现在,您已经成功安装第三方模块,并且可以在 nginx配置文件中启用和配置它们。 请注意,安装第三方模块可能需要一些编译工具和依赖项。如果出现任何错误或依赖项缺失,您可能需要安装相应的工具和库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Linux技术宅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值