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 ...
随机推荐
- CNN_LSTM
1.keras/examples at master · keras-team/keras · GitHubhttps://github.com/keras-team/keras/tree/maste ...
- Sentinel介绍与使用
https://blog.csdn.net/noaman_wgs/article/details/103328793
- C# Nilakantha级数逼近PI算法
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- ubuntu16.04+win10双系统安装
先下载Ubuntu到电脑:http://mirrors.ustc.edu.cn/ubuntu-releases/16.04.6/ubuntu-16.04.6-desktop-amd64.iso 准备个 ...
- canal对接阿里云kafka
一.前提条件 已经有mysql实例 自建或者云上都可以 已经在阿里云的kakfa创建topic 默认不自动创建topic 二.配置要监控的instance 先修改example的配置文件 conf/e ...
- 转发:All in one:项目级 monorepo 策略最佳实践
0. 前言 在最近的项目开发中,出现了一个令我困扰的状况.我正在开发的项目 A,依赖了已经线上发布的项目 B,但是随着项目 A 的不断开发,又需要不时修改项目 B 的代码(这些修改暂时不必发布线上), ...
- 【Golang】Demo
并发控制 package main // demo 参考地址https://studygolang.com/articles/25950 import ( "github.com/siddo ...
- 服务器中VirtualBox子网访问
本人常用的虚拟机软件是VirtualBox,由于笔记本性能,磁盘存储大下限制,以及VirtualBox客户机无法在多个设备间直接方便的使用等原因,我把几个虚拟的系统全部移动到便携式服务器中. 移动之后 ...
- Jsp 总结
JSP中的include的两种用法 1.两种用法 <@inlcude file ="header.jsp"/> 此时引入的是静态的jsp文件,它将引入的jsp中的源代码 ...
- 关于jsp页面中的小细节们
细节一:利用jsp判断文本框的输入格式是否正确 也就是主要利用script标签进行判断,主要用到的是正则表达式(判断是否为整数): 再加上if语句的配合,就能够在文本框的格式不正确时,发出错误警告啦! ...