docker上面部署nginx-waf 防火墙“modsecurity”,使用CRS规则,搭建WEB应用防火墙
web防火墙(waf)免费开源的比较少,并且真正可以商用的WAF少之又少,modsecurity 是开源防火墙鼻祖并且有正规公司在维护着,目前是https://www.trustwave.com在维护,不幸的是2024 年 7 月将不再维护交还开源社区管理,Trustwave目前打造自己的web防火墙,至于是否免费开源就不得而知了。ModSecurity目前依然是开源,免费的WAF一哥,我们就先用着吧,商业WAF费用太贵。
Docker 安装
Docker的地址是:owasp/modsecurity - Docker Image | Docker Hub
docker pull owasp/modsecurity
modsecurity只是WAF防火墙,仅仅安装modsecurity并不会起作用,因为它需要规则才会生效,你可以选择第三方支持modsecurity的规则例如:“OWASP ModSecurity Core Rule Set”,简称“CRS”,OWASP 是国际上一个非营利的Web应用程序安全项目,不附属于任何企业或财团。不过很多大公司的财团都在支持OWASP,包括微软,VMware,谷歌,nginx 等,著名的“OWASP TOP 10”功击手法就是该组织提出来,在WEB安全领域很有名气。
关于WAF防火墙规则,建议采用OWASP的CRS,官网地址是:OWASP ModSecurity Core Rule Set – The 1st Line of Defense Against Web Application Attacks,幸运的是,OWASP己经在docker上面集成了modsecurity打包成镜像供我们使用,docker地址是:owasp/modsecurity-crs - Docker Image | Docker Hub
docker pull owasp/modsecurity-crs
也就是说,使用这个镜像默认modsecurity己经安装好了,规则也配置好了,非常方便,这就是docker的好处,默认支持nginx,apache。它的dockerfile在github上面:https://github.com/coreruleset/modsecurity-crs-docker/blob/master/nginx/Dockerfile
镜像中的配置文件在:
/etc/nginx/templates/nginx.conf.template
配置就是典型nginx的配置文件,了解nginx的很轻松就可以配置,当我们运行docker只需要配置好的文件替换镜像中的文件就可以了,下面贴出最简代码,当时实际运作docker还需要增加什么参数,自己添加就行,例如端口映射等
docker run --name Nginx-WAFProxy -v /web/NginxProxy/nginx.conf.template:/etc/nginx/templates/nginx.conf.template:rw -d owasp/modsecurity-crs:nginx
就这样一个开源,可靠,免费WAF就搭建起来了,又省一大笔钱,我们需要注意的地址就是“paranoia level ”,规则等级,默认docker 镜像是PL1,一共有四个规则等级
- PL1:默认值,大多数规则都是处于启用状态,具备标准的安全等级,适用多数网站,非常少/无的等误报。
- PL2:含少许多额外的规则,合适有经验的工程师,会有少量误报。
- PL3:支持更多规则和关键字列表,涵盖不太常见的攻击。需要专职工程师,定期处理误报,增加规则。
- PL4:最高安全规则,进一步限制特殊字符,会产生非常多的误报,适用于特殊的场景。
基本WAF防火墙就搭建完毕了。
docker上面部署nginx-waf 防火墙“modsecurity”,使用CRS规则,搭建WEB应用防火墙的更多相关文章
- 在Docker下部署Nginx
在Docker下部署Nginx 在Docker下部署Nginx,包括: 部署一个最简单的Nginx,可以通过80端口访问默认的网站 设置记录访问和错误日志的路径 设置静态网站的路径 通过proxy_p ...
- Docker Compose部署 nginx代理Tomcat集群
一.简介 使用Docker镜像部署Nginx代理的多个Tomcat集群: 使用Dockerfile构建nginx镜像 使用Dockerfile构建tomcat镜像 mysql镜像使用docker hu ...
- 庐山真面目之十微服务架构 Net Core 基于 Docker 容器部署 Nginx 集群
庐山真面目之十微服务架构 Net Core 基于 Docker 容器部署 Nginx 集群 一.简介 前面的两篇文章,我们已经介绍了Net Core项目基于Docker容器部署在Linux服 ...
- 阿里云服务器安装Docker并部署nginx、jdk、redis、mysql
阿里云服务器安装Docker并部署nginx.jdk.redis.mysql 一.安装Docker 1.安装Docker的依赖库 yum install -y yum-utils device-map ...
- Linux运维之docker虚拟化部署nginx
一.Docker的概念 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱 ...
- docker stack 部署nginx
=============================================== 2018/7/29_第1次修改 ccb_warlock == ...
- Docker(二)-在Docker中部署Nginx实现负载均衡(视频教程)
本教程介绍利用Docker部署Nginx服务实现负载均衡. (双击全屏播放)
- docker - compose 部署 Nginx
主要介绍 docker 中 Nginx 的部署及项目目录挂载券的方法.docker 中部署一个服务,有三种方法,分别是 docker run.Dockerfile.docker-compose . 下 ...
- Docker 06 部署Nginx
参考源 https://www.bilibili.com/video/BV1og4y1q7M4?spm_id_from=333.999.0.0 https://www.bilibili.com/vid ...
- docker上部署nginx容器80端口自动转443端口
拉去nginx镜像 # docker pull nginx 运行nginx容器config用于拷贝nginx配置文件 # docker run --name nginxconfig -d docker ...
随机推荐
- 语法分析~LL1的实现
语法分析之 LL1分析法实现 一.设计目的 根据某一文法编制调试LL(1)分析程序,以便对任意输入的符号串进行分析.本次实验的目的主要是加深对预测分析LL(1)分析法的理解. 二.设计要求 程序输入/ ...
- spring-boot项目布到tomcat容器下部署
一.修改打包形式 在pom.xml里设置 `war` <packaging>war</packaging> 二.移除嵌入式tomcat插件 在pom.xml里找到spring- ...
- springboot中redis使用和工具
application.properties #Redis相关配置 spring.data.redis.host=localhost #端口 spring.data.redis.port=6379 # ...
- 日志注解,基于ruoyi的后置切面改进而来
有次接口响应时间太长,想知道具体接口执行的时间是多少,于是决定通过注解来实现这个想法,刚好ruoyi本身就提供了完善的日志注解,虽然是采用后置通知,但是完全不影响我们改造它. 想要实现接口耗时的功能, ...
- P2345 [USACO04OPEN] MooFest G
简单的一个分块处理:优雅的暴力枚举 #include<bits/stdc++.h>using namespace std; typedef long long ll;const int N ...
- Net异步委托-泛型委托Action<T>与Func<T,TResult>及 异步调用AsyncCallback
1.相同点 Func<ReqMode,ResultModel> 与 Action<ReqMode> 1).都是Net3.5 之后内置的委托方法,作用几乎一致 2).都支持lam ...
- bug单建单规范
bug提单保证,清晰.简单.明了. 标题: [版本][服务器][模块][必现/偶现]bug标题(最短的话描述bug) 例:[0.9.0][dev][系统][必现]点击商店,跳转到仓库页面 bug模 ...
- 记录一次mybatis pagehelper count order by 不生效
https://sample.blog.csdn.net/article/details/119216433?spm=1001.2101.3001.6650.5&utm_medium=dist ...
- zip文件自动打包
简单的文件打包 首先是问题 我们有一个文件的文件过大,我需要删除或者压缩,当然我们就是选择压缩 如果是单个我们可以直接使用压缩功能 但是多个呢? 首先获取当前目录下的文件,使用 a=`ls` | te ...
- webpack之性能优化(webpack4)
在讲解性能优化的方案之前,我们需要了解一下webpack的整个工作流程, 方案一:减少模块解析 也就是省略了构建chunk依赖模块的这几个步骤 如果没有loader对该模块进行处理,该模块的源码就是最 ...