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,一共有四个规则等级

  1. PL1:默认值,大多数规则都是处于启用状态,具备标准的安全等级,适用多数网站,非常少/无的等误报。
  2. PL2:含少许多额外的规则,合适有经验的工程师,会有少量误报。
  3. PL3:支持更多规则和关键字列表,涵盖不太常见的攻击。需要专职工程师,定期处理误报,增加规则。
  4. PL4:最高安全规则,进一步限制特殊字符,会产生非常多的误报,适用于特殊的场景。

基本WAF防火墙就搭建完毕了。

docker上面部署nginx-waf 防火墙“modsecurity”,使用CRS规则,搭建WEB应用防火墙的更多相关文章

  1. 在Docker下部署Nginx

    在Docker下部署Nginx 在Docker下部署Nginx,包括: 部署一个最简单的Nginx,可以通过80端口访问默认的网站 设置记录访问和错误日志的路径 设置静态网站的路径 通过proxy_p ...

  2. Docker Compose部署 nginx代理Tomcat集群

    一.简介 使用Docker镜像部署Nginx代理的多个Tomcat集群: 使用Dockerfile构建nginx镜像 使用Dockerfile构建tomcat镜像 mysql镜像使用docker hu ...

  3. 庐山真面目之十微服务架构 Net Core 基于 Docker 容器部署 Nginx 集群

    庐山真面目之十微服务架构 Net Core 基于 Docker 容器部署 Nginx 集群 一.简介      前面的两篇文章,我们已经介绍了Net Core项目基于Docker容器部署在Linux服 ...

  4. 阿里云服务器安装Docker并部署nginx、jdk、redis、mysql

    阿里云服务器安装Docker并部署nginx.jdk.redis.mysql 一.安装Docker 1.安装Docker的依赖库 yum install -y yum-utils device-map ...

  5. Linux运维之docker虚拟化部署nginx

    一.Docker的概念 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱 ...

  6. docker stack 部署nginx

    =============================================== 2018/7/29_第1次修改                       ccb_warlock == ...

  7. Docker(二)-在Docker中部署Nginx实现负载均衡(视频教程)

    本教程介绍利用Docker部署Nginx服务实现负载均衡. (双击全屏播放)

  8. docker - compose 部署 Nginx

    主要介绍 docker 中 Nginx 的部署及项目目录挂载券的方法.docker 中部署一个服务,有三种方法,分别是 docker run.Dockerfile.docker-compose . 下 ...

  9. Docker 06 部署Nginx

    参考源 https://www.bilibili.com/video/BV1og4y1q7M4?spm_id_from=333.999.0.0 https://www.bilibili.com/vid ...

  10. docker上部署nginx容器80端口自动转443端口

    拉去nginx镜像 # docker pull nginx 运行nginx容器config用于拷贝nginx配置文件 # docker run --name nginxconfig -d docker ...

随机推荐

  1. 语法分析~LL1的实现

    语法分析之 LL1分析法实现 一.设计目的 根据某一文法编制调试LL(1)分析程序,以便对任意输入的符号串进行分析.本次实验的目的主要是加深对预测分析LL(1)分析法的理解. 二.设计要求 程序输入/ ...

  2. spring-boot项目布到tomcat容器下部署

    一.修改打包形式 在pom.xml里设置 `war` <packaging>war</packaging> 二.移除嵌入式tomcat插件 在pom.xml里找到spring- ...

  3. springboot中redis使用和工具

    application.properties #Redis相关配置 spring.data.redis.host=localhost #端口 spring.data.redis.port=6379 # ...

  4. 日志注解,基于ruoyi的后置切面改进而来

    有次接口响应时间太长,想知道具体接口执行的时间是多少,于是决定通过注解来实现这个想法,刚好ruoyi本身就提供了完善的日志注解,虽然是采用后置通知,但是完全不影响我们改造它. 想要实现接口耗时的功能, ...

  5. P2345 [USACO04OPEN] MooFest G

    简单的一个分块处理:优雅的暴力枚举 #include<bits/stdc++.h>using namespace std; typedef long long ll;const int N ...

  6. Net异步委托-泛型委托Action<T>与Func<T,TResult>及 异步调用AsyncCallback

    1.相同点 Func<ReqMode,ResultModel> 与 Action<ReqMode> 1).都是Net3.5 之后内置的委托方法,作用几乎一致 2).都支持lam ...

  7. bug单建单规范

      bug提单保证,清晰.简单.明了. 标题: [版本][服务器][模块][必现/偶现]bug标题(最短的话描述bug) 例:[0.9.0][dev][系统][必现]点击商店,跳转到仓库页面 bug模 ...

  8. 记录一次mybatis pagehelper count order by 不生效

    https://sample.blog.csdn.net/article/details/119216433?spm=1001.2101.3001.6650.5&utm_medium=dist ...

  9. zip文件自动打包

    简单的文件打包 首先是问题 我们有一个文件的文件过大,我需要删除或者压缩,当然我们就是选择压缩 如果是单个我们可以直接使用压缩功能 但是多个呢? 首先获取当前目录下的文件,使用 a=`ls` | te ...

  10. webpack之性能优化(webpack4)

    在讲解性能优化的方案之前,我们需要了解一下webpack的整个工作流程, 方案一:减少模块解析 也就是省略了构建chunk依赖模块的这几个步骤 如果没有loader对该模块进行处理,该模块的源码就是最 ...