nginx安装和配置ModSecurity

ModSecurity 是一个开放源代码的 Web 应用防火墙 (WAF),可以帮助保护 Web 服务器免受各种攻击。以下是如何在 Nginx 上安装和配置 ModSecurity 的详细步骤。

一. 安装 ModSecurity
(1). 安装依赖
在安装 ModSecurity 之前,需要先安装一些必要的依赖库。以下是在基于 CentOS 的系统上的命令:

sudo yum update
sudo yum install -y gcc make pcre-devel libxml2 libxml2-devel curl-devel httpd-devel libtool

(2). 查看系统 g++ 版本,是否支持版本 C++17
g++ –version
如果看到版本号大于等于7.3,可以跳过下面 第3步,否则执行第3步: 升级 g++ 到一个支持 C++17 标准的版本。

(3).升级 g++
在CentOS系统中使用 yum 来安装开发工具集:
sudo yum install centos-release-scl
sudo yum install devtoolset-9
启用开发工具集来使用更新版本的 g++:
scl enable devtoolset-9 bash
上面命令会打开一个新的 shell,会将 g++ 的版本设置为 9。如果你想每次启动 shell 都启用开发工具集,可以将上述命令添加到你的 shell 配置文件中,例如 ~/.bashrc。

(4). 下载和编译 ModSecurity
从 GitHub 仓库下载 ModSecurity 源码并编译:

cd /usr/local/src
sudo git clone –depth 1 -b v3/master https://github.com/SpiderLabs/ModSecurity
cd ModSecurity
sudo git submodule init
sudo git submodule update
sudo ./build.sh
sudo ./configure
sudo make
sudo make install

(5). 下载和编译 Nginx 连接器
ModSecurity 需要 Nginx 的连接器来工作。以下是下载和编译连接器的步骤:

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

(6). 安装 Nginx 和编译模块

cd /usr/local/src
sudo wget https://nginx.org/download/nginx-1.xx.tar.gz #下载具体版本
sudo tar -zxvf nginx-1.xx.tar.gz
cd nginx-1.xx

sudo ./configure –with-compat –add-dynamic-module=/usr/local/src/ModSecurity-nginx
sudo make modules
sudo cp objs/ngx_http_modsecurity_module.so /etc/nginx/modules

二. 配置 Nginx 使用 ModSecurity

  1. 加载 ModSecurity 模块
    编辑 Nginx 主配置文件 /etc/nginx/nginx.conf,添加以下内容以加载 ModSecurity 模块:

load_module modules/ngx_http_modsecurity_module.so;

  1. 配置 ModSecurity
    创建并配置 ModSecurity 主配置文件:

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

编辑 /etc/nginx/modsec/modsecurity.conf,将 SecRuleEngine 设置为 On:

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

将 SecRuleEngine 设置为 On

SecRuleEngine On

  1. 配置 Nginx 虚拟主机使用 ModSecurity
    在你的 Nginx 虚拟主机配置文件中启用 ModSecurity,例如 /etc/nginx/conf.d/default.conf:
server {listen 80;server_name test.com;modsecurity on;modsecurity_rules_file /etc/nginx/modsec/modsecurity.conf;location / {proxy_pass http://localhost:8080;}}
  1. 测试和重启 Nginx
    检查 Nginx 配置是否正确,并重启 Nginx:

sudo nginx -t
sudo systemctl restart nginx

三. 配置 ModSecurity 规则
ModSecurity 的强大功能来自于其规则集。OWASP 提供了一组常用的 ModSecurity 核心规则 (CRS),可以有效地防御许多常见的 Web 攻击。

下载和配置 OWASP CRS

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

在 Nginx 配置文件中包含 CRS 规则:

server {...modsecurity on;modsecurity_rules_file /etc/nginx/modsec/modsecurity.conf;# 加载 OWASP CRS 规则include /etc/nginx/modsec/coreruleset/crs-setup.conf;include /etc/nginx/modsec/coreruleset/rules/*.conf;location / {proxy_pass http://localhost:8080;}
}

四. 创建自定义规则
比如我添加了自定义规则文件custom_rules.conf:
sudo nano /www/server/nginx/modsec/custom_rules.conf
我们添加一条规则阻止对 /tmp 目录的访问
SecRule REQUEST_URI “^/tmp[a-zA-Z0-9]*$” “id:1001,phase:2,pass,nolog”
SecRule REQUEST_URI “^/tmp” “id:1002,phase:2,deny,status:403,msg:’Access to /tmp directory is forbidden'”
规则解释:
这里我禁止了对/tmp目录的访问,但允许/tmp后面加字母和数字的目录,比如/tmpabc,是允许的,主要是防止误杀。
“id:1001″:每条规则需要一个唯一的 ID。
“phase:2″:这条规则将在请求处理的第二阶段执行(即在请求头被解析之后,通常适用于 URI 检查)。
“deny,status:403″:如果规则匹配,请求将被拒绝,并返回 403 禁止访问的状态码。
“msg:’Access to /tmp directory is forbidden'”:如果规则匹配,将在日志中记录这条消息。
然后修改modsecurity.conf包含自定义规则文件。
include /www/server/nginx/modsec/custom_rules.conf
重启 Nginx 使配置生效。

五. 日志和监控
ModSecurity 的日志对于监控和调试非常重要。确保在 modsecurity.conf 中正确配置日志:
SecAuditLog /var/log/modsec_audit.log
SecDebugLog /var/log/modsec_debug.log

通过以上步骤,我们在 Nginx 上安装和配置 ModSecurity,可以增强Web 服务器的安全性。ModSecurity 强大的规则集和灵活的配置选项,对安全防护最重要的就是规则,所以一定要定期审查日志,根据需要调整配置,适时更新规则集,以保持最佳的安全状态。

文章地址 nginx安装和配置ModSecurity – AI小站

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/26254.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

半导体光电子学最后总结(3)光子晶体

Matrix theory 波传输矩阵 (Wave-Transfer Matrix) 散射矩阵 (Scattering Matrix) 光在均匀介质中的传播公式矩阵化 Relation between Scattering Matrix and Wave-Transfer Matrix 级联系统的投射/反射系数:艾里公式 (Airy Formulas) 无损对称系统 斜入射波的传输…

❤vue2项目webpack打包的优化策略

❤ vue2项目webpack打包的优化策略 (优化前) 现在我们的打包时间为: >打包体积大小为: 1、去除开发环境和生产环境提示以及日志 开发环境和生产环境的打印处理 生产环境去除console.log打印的两种方式 通过环境变量控制co…

终成大流:CDM+AI彻底重塑数据备份市场

进入2024年,CDM市场又迎来高光时刻。 先有Cohesity上演“蛇吞象”并购Veritas数据备份与数据管理业务,并在新一轮融资中获得IBM、NVIDIA两大巨头的战略投资;后有Rubrik获得资本市场认可,以64亿美元市值成功登陆纽交所。两大CDM明…

[Unity学习] 背景视差因子计算,远近背景移动距离差

public Camera cam;public Transform trans;Vector2 startPosiotion;float startZ;//此物距离trans的z距离private float zDistance > transform.position.z - trans.transform.position.z;void Start(){startPosiotion transform.position;startZ transform.position.z;}…

免费!快速!干货!手把手教你如何在个人电脑上搭建你自己的大模型服务!

大模型发展如火如荼,虽然大模型的能力强大,但是大模型也是非常昂贵的!不管是训练还是推理,都需要耗费大量的机器,而且机器的硬件资源,比如GPU、TPU等都有一定的要求。 因此,业界的同行们&#x…

docker——环境搭建

准备知识 一、Docker官方架构 ​ docker使用C/S架构模式; ​ Docker 仓库(Registry) ​ Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。Docker Hub 供了庞大的镜像集合供使用。 ​ Docker daemon ​ Docker daemon 是服务器组件&#…

Lua搭建网站后台教程

本文讲解如何使用二进制发布包和FastWeb网站管理工具搭建站点 FastWeb网站管理工具 使用该工具可快速在Windows平台部署。支持官方或三方模块的自动安装、日志调试、版本更新等。 1、下载最新版本压缩包 2、解压到任意目录(建议英文) 3、运行 ①点击 [设置]->[安装] 部…

DEV-C++小游戏吃星星(1.5)

吃星星1.5版导航 ★★★★★ 吃星星(1.5)★★★★★ ★★★★该版本简介更新说明★★★★ ★★★分部代码★★★ ★头文件命名空间变量★ ★★结构体★★ ★辅助结构体★ ★角色结构体★ ★星星结构体★ ★打印结构体★ ★加载中结构体★ ★游…

macOS 15 beta (24A5264n) Boot ISO 原版可引导镜像下载

macOS 15 beta (24A5264n) Boot ISO 原版可引导镜像下载 iPhone 镜像、Safari 浏览器重大更新、备受瞩目的游戏和 Apple Intelligence 等众多全新功能令 Mac 使用体验再升级 请访问原文链接:https://sysin.org/blog/macOS-Sequoia-boot-iso/,查看最新版…

[手游] 三色绘恋S Mobile Link

语音合成TTS: 文字转成语音的工具 WPS免登录一键修改器: 去除烦人的登录且能正常使用 故事简介: 深秋的雨季即将到来,正值那个为人所熟知的故事发生的前一年—— 地点:湖北省的重点高中,武汉师贰高校。 新学年开始,各…

LeetCode | 2879.显示前三行

在 pandas 中,可以使用 head() 方法来读取 DataFrame 的前几行数据。如果想读取指定数量的行,可以在 head() 方法中传入一个参数 n,读取前 n 行 import pandas as pddef selectFirstRows(employees: pd.DataFrame) -> pd.DataFrame:retur…

前沿重器[49] | 聊聊搜索系统2:常见架构

前沿重器 栏目主要给大家分享各种大厂、顶会的论文和分享,从中抽取关键精华的部分和大家分享,和大家一起把握前沿技术。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有。(算起来,专项启动已经…

分布式高性能计算 (HPC)的工作负载管理平台和作业调度程序—— IBM Spectrum® LSF® Suites

IBM Spectrum LSF Suites 是面向分布式高性能计算 (HPC) 的工作负载管理平台和作业调度程序。基于 Terraform 的自动化现已可用,该功能可在 IBM Cloud 上为基于 IBM Spectrum LSF 的集群供应和配置资源。 借助我们针对任务关键型 HPC 环境的集成解决方案&#xff0…

弘君资本股市资讯:增逾20倍!百亿细分龙头利好来了

5月以来,A股进入了时间短的成绩发表空档期,而百亿化工细分龙头齐翔腾达,则以一份高增的成绩预告,摆开半年报成绩预告发表序幕。 6月10日晚间,齐翔腾达发表的成绩预告显现,上半年估计完成归母净赢利1.3亿元…

神经网络 torch.nn---Pooling layers(nn.MaxPool2d)

torch.nn — PyTorch 2.3 documentation torch.nn - PyTorch中文文档 (pytorch-cn.readthedocs.io) nn.MaxPool2d class torch.nn.MaxPool2d(kernel_size, strideNone, padding0, dilation1, return_indicesFalse, ceil_modeFalse) 参数介绍 kernel_size(int or tuple) - …

AI机器人公众号小程序h5源码开源交付支持二开黑色风格版本

AI机器人系统对接OPENAI:开启智能新纪元 更新全新UI、新增全家桶模块、新增热榜板块、支持语音朗读、支持快速回答、支持AI绘图、支持文字一键生成图、支持导出pdf、支持导出word、支持导出文字、支持快速响应、支持中英翻译、支持markdown 🚀一、引言…

还在为复制粘贴烦恼吗?这5个工具帮你轻松搞定

在日常工作中,CtrlC和CtrlV无疑是我们使用最为频繁的快捷键组合。 复制粘贴,轻松快捷。 但是在使用中,也会有一点不便,那就是无法保存剪贴历史内容。 比如我说复制之后,我想要想要找回这一次复制之前的内容&#xf…

不要使用业务键作为数据库主键

Mark Seemann这篇博客文章反对使用自然键作为数据库表中的主键,而是建议始终使用合成(人工)键。 什么是自然键 自然键(也称为业务键或领域键 )是数据库中一种唯一键,由存在并在数据库外部世界(…

调用华为云实现人证核身证件版(二要素)

目录 1.作者介绍2.华为云人证核身2.1什么是人证核身2.2应用场景2.3限制要求 3.流程介绍3.1调用API实现3.2调用SDK实现 1.作者介绍 高凡平,男,西安工程大学电子信息学院,2023级研究生 研究方向:数码印花缺陷检测 电子邮件&#xf…

下载NVIDIA官网的培训视频,生成中文字幕和PPT

下载NVIDIA官网的培训视频,生成中文字幕和PPT 一.[视频网站](https://www.nvidia.cn/on-demand/session/gtc24-s62129/)二.如何获取视频的原始链接三.下载视频的脚本【生成output.mp4】四.安装whisper环境【语音识别生成英文字幕】五.下载whisper模型六.生成英文字幕【输出merg…