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. CNN_LSTM

    1.keras/examples at master · keras-team/keras · GitHubhttps://github.com/keras-team/keras/tree/maste ...

  2. Sentinel介绍与使用

    https://blog.csdn.net/noaman_wgs/article/details/103328793

  3. C# Nilakantha级数逼近PI算法

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  4. ubuntu16.04+win10双系统安装

    先下载Ubuntu到电脑:http://mirrors.ustc.edu.cn/ubuntu-releases/16.04.6/ubuntu-16.04.6-desktop-amd64.iso 准备个 ...

  5. canal对接阿里云kafka

    一.前提条件 已经有mysql实例 自建或者云上都可以 已经在阿里云的kakfa创建topic 默认不自动创建topic 二.配置要监控的instance 先修改example的配置文件 conf/e ...

  6. 转发:All in one:项目级 monorepo 策略最佳实践

    0. 前言 在最近的项目开发中,出现了一个令我困扰的状况.我正在开发的项目 A,依赖了已经线上发布的项目 B,但是随着项目 A 的不断开发,又需要不时修改项目 B 的代码(这些修改暂时不必发布线上), ...

  7. 【Golang】Demo

    并发控制 package main // demo 参考地址https://studygolang.com/articles/25950 import ( "github.com/siddo ...

  8. 服务器中VirtualBox子网访问

    本人常用的虚拟机软件是VirtualBox,由于笔记本性能,磁盘存储大下限制,以及VirtualBox客户机无法在多个设备间直接方便的使用等原因,我把几个虚拟的系统全部移动到便携式服务器中. 移动之后 ...

  9. Jsp 总结

    JSP中的include的两种用法 1.两种用法 <@inlcude file ="header.jsp"/> 此时引入的是静态的jsp文件,它将引入的jsp中的源代码 ...

  10. 关于jsp页面中的小细节们

    细节一:利用jsp判断文本框的输入格式是否正确 也就是主要利用script标签进行判断,主要用到的是正则表达式(判断是否为整数): 再加上if语句的配合,就能够在文本框的格式不正确时,发出错误警告啦! ...