随着开源 Web 框架和各种建站工具的兴起,搭建网站已经是一件成本非常低的事情,但是网站的安全性很少有人关注,以至于 WAF 这个品类也鲜为人知。

一、WAF 是什么?

WAF 是 Web 应用防火墙(Web Application Firewall)的缩写,也就是我们俗称的网站防火墙。它可以保护网站不被黑客所攻击,通常以 Web 网关的形式存在,作为反向代理接入。WAF 可以识别常见的 Web 攻击并实施阻断,比如:SQL 注入、跨站脚本攻击(XSS)、跨站请求伪造(CSRF)、服务端请求伪造(SSRF)、WebShell 上传与通信等等。

二、雷池

今天 HelloGitHub 给大家带来的是一款开箱即用、功能强大、广受好评的网站防护工具——雷池 WAF,不让黑客越雷池半步。

GitHub 地址:https://github.com/chaitin/safeline

雷池是一款简单易用、广受好评的社区 WAF 项目,它底层基于 Nginx 的 Web 网关,作为反向代理接入网络,清洗来自黑客的恶意流量,保护你的网站不受黑客攻击。雷池拥有友好的 Web 界面,就算你不具备网络安全技术背景,也可以通过它发挥出顶尖的网站防护效果

雷池由国内顶尖的网络信息安全公司长亭科技,在今年 4 月开源的网站防火墙工具。它迭代速度相当惊人,短短四个月的时间共发布了 31 个版本,被 1.8w 的网站站长使用,在 GitHub 收获了 3K+ 的 Star。

下面,就让我们一起上手这款国产开源网站防火墙神器吧!

三、安装部署

雷池采用容器化部署的方式,服务由多个 Docker 容器组成,支持简单方便的一条龙安装脚本。只要服务器能联网,执行安装脚本后,自动拉取镜像、初始化配置文件、启动服务一气呵成。

3.1 一条命令安装

直接使用在线安装脚本。

bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/setup.sh)"

3.2 克隆仓库安装

克隆仓库后,执行 setup.sh 脚本即可安装。

git clone git@github.com:chaitin/safeline.git
cd safeline
bash ./setup.sh

3.3 安装成功

整个安装过程对新手十分友好,提示词为中文、自动安装 Docker 等,只需按照提示一路向下即可。

  ____             __          _       _
/ ___| __ _ / _| ___ | | (_) _ __ ___
\___ \ / _` | | |_ / _ \ | | | | | '_ \ / _ \
___) | | (_| | | _| | __/ | |___ | | | | | | | __/
|____/ \__,_| |_| \___| |_____| |_| |_| |_| \___| [SafeLine] 脚本调用方式确认正常
[SafeLine] 缺少 Docker 环境
[SafeLine] 是否需要自动安装 Docker (Y/n)
# Executing docker install script, commit: xxx
...
[SafeLine] 雷池安装目录 (留空则为 '/data/safeline'):
[SafeLine] 目录 '/data/safeline' 当前剩余存储空间为 47G ,雷池至少需要 5G,是否确定 (Y/n)
[SafeLine] 创建安装目录 '/data/safeline' 成功
...
[SafeLine] 雷池 WAF 社区版安装成功,请访问以下地址访问控制台
[SafeLine] https://0.0.0.0:9443/ # 安装成功

安装完成后,根据提示访问本地的 Web 服务端口即可开始使用。

四、工作原理

下面将通过简单的 WAF 部署架构图,介绍雷池的工作原理。

下图是一个简单的网站拓扑,外部用户发出请求,经过网络最终传递到网站服务器。

此时,若外部用户中存在恶意用户,那么由恶意用户发出的攻击请求也会经过网络最终传递到网站服务器。

雷池以反向代理方式接入,优先于网站服务器接收流量,对流量中的攻击行为进行检测和清洗,将清洗过后的流量转发给网站服务器。

通过以上行为,可以在请求到达网站服务器前过滤掉恶意请求,最终确保外部攻击流量无法触达网站服务器。

五、核心能力

雷池是一款内外兼修的网站防火墙,它不光有好看的界面,还有强大的网站安全防护功能。

5.1 防护 Web 攻击、CC 攻击、爬虫

雷池的 Web 攻击检测能力由语义分析算法驱动,不同于通用的语义分析,雷池的自动机引擎 yanshi 可以支持对片段语法进行分析,对 HTTP 请求参数进行自动化递归解码,提取请求参数中的攻击片段,并通过攻击打分模型对参数中的攻击代码进行识别,最终判定 HTTP 请求是否为恶意攻击,具备对通用攻击的防护能力,也具备泛化识别能力,可以实现无规则检测 0Day 攻击。

雷池集成了基于恶意 IP 情报、客户端指纹、鼠标键盘行为识别、访问频率限制的人机验证算法,可用来对抗爬虫、对抗扫描、对抗 CC 攻击

5.2 Web 流量访问控制

雷池支持通过可视化页面配置网站的访问控制黑白名单,允许匹配源 IP、路径、域名、Header、Body 等条件。

5.3 网站资源识别

雷池基于 HTTP 流量自动识别 Web 资源,从而生成 API 画像持续统计和分析。采用动态基线和预测分析技术分析异常访问行为,精准识别操作正常但请求异常的攻击行为,从正常行为中检测出异常流量。

六、最后

雷池是长亭科技耗时近 10 年打造的开源网站防火墙,具有开箱即用、企业防护能力、高性能等特点。

  • 开箱即用:安装只需要一条命令,界面简单易操作。

  • 功能强大:首创的语义分析驱动的 Web 攻击检测算法,支持 IP 威胁情报、动态限频、智能建模等企业级产品才有的高级防护能力。

  • 高性能:在 Nginx 之上增加了攻击检测能力,轻松支撑 10000+ TPS 流量,攻击检测带来的延迟在 1 毫秒级别。

如果你使用后觉得雷池还不错,就给它点一个 Star 吧!

GitHub 地址:https://github.com/chaitin/safeline

一款国产开源 Web 防火墙神器!的更多相关文章

  1. GitHub 上最热的10款国产开源软件

    衡量一个开源产品好不好,看看产品在 GitHub 的 Star 数量就知道了.由此可见,GitHub 已经沦落为开源产品的“大众点评”了.一个开源产品希望快速的被开发者知道.快速的获取反馈,放到 Gi ...

  2. 几款国产开源的Windows界面库

    上次介绍的几款图形界面库http://blog.okbase.net/vchelp/archive/23.html都是国外的开源项目,今天介绍的几款都是国人的开源项目,大部分是采用DirectUI设计 ...

  3. 6 款国外开源web oa办公系统(转)

    国外的开源产品较多,而且大多提供免费的社区版本,oa办公系统也不例外. 1.eGroupware eGroupware是一个多用户,在以PHP为基础的API上的定制集为基础开发的,以WEB为基础的工作 ...

  4. 【转】10款GitHub上最火爆的国产开源项目

    将开源做到极致,提高效率方便更多用户 接触开源时间虽然比较短但是后续会努力为开源社区贡献自己微薄的力量 衡量一个开源产品好不好,看看产品在 GitHub 的 Star 数量就知道了.由此可见,GitH ...

  5. 点评10款Github上最火爆的国产开源项目

    衡量一个开源产品好不好,看看产品在Github的Star数量就知道了.由此可见,Github已经沦落为开源产品的“大众点评”了. 一个开源产品希望快速的被开发者知道.快速的获取反馈,放到Github上 ...

  6. 10款GitHub上最火爆的国产开源项目

    衡量一个开源产品好不好,看看产品在 GitHub 的 Star 数量就知道了.由此可见,GitHub 已经沦落为开源产品的“大众点评”了.一个开源产品希望快速的被开发者知道.快速的获取反馈,放到 Gi ...

  7. 国产开源JavaWeb应用程序框架——XWAF(1)

    XWAF是一个基于java反射和Servlet 技术的国产开源Web应用程序框架.其英文全称为“eXtensible Web Application Framework”,意即“可扩展的网络应用程序框 ...

  8. 2019年十大开源WEB应用防火墙点评

    2019年十大开源WEB应用防火墙点评 随着WEB应用的爆炸式成长和HTTPS加密的普及,针对网络应用层的攻击,像SQL注入.跨站脚本攻击.参数篡改.应用平台漏洞攻击.拒绝服务攻击等越来越多,传统的防 ...

  9. 教你用免费的hihttps开源WEB应用防火墙阻止暴力破解密码

    教你用免费的hihttps开源WEB应用防火墙阻止暴力破解密码 很多企业都有自己的网站,需要用户登录后才能访问,但有大量的黑客攻击软件可以暴力破解网站密码,即使破解不了也非常恶心.有没有免费的解决办法 ...

  10. JAVA首选五款开源Web开发框架

    Spring Spring是一个开源的Java/Java EE全功能栈应用程序框架,在JavaEE社区中非常受欢迎,以Apache许可证形式发布,也有.NET平台上的移植版本. Struts2 Str ...

随机推荐

  1. 查看svn本地账户和密码

    最近由于抗击疫情需要远程办公,协同就必不可少了,都知道svn一般公司都是走内网,然而目前要连接公司svn就得重新指定地址,今日在重新指定时然我,输入用户名和密码一下子蒙了,平时一旦连接后就不需要再次输 ...

  2. Java中序列化和反序列化解释

    在Java中,序列化(Serialization)是指将对象的状态转换为字节流的过程,以便将其保存到文件.在网络中传输或持久化到数据库中.而反序列化(Deserialization)则是将字节流转换回 ...

  3. SignalR+Hangfire 实现后台任务队列和实时通讯

    SignalR+Hangfire 实现后台任务队列和实时通讯 1.简介: SignalR是一个.NET的开源框架,SignalR可使用Web Socket, Server Sent Events 和 ...

  4. STL-vector(ACM)

    1.长度可变的数组 2.这里不是很懂,v.size() 代码源里说这个v.size()是无符号类型的,使用时要说明类型, 但是我在使用时并没有出现warning,有大佬知道原因吗? 前置板子 3.ve ...

  5. Taro项目引入Tailwindcss

    前情 Tailwind CSS 是一个原子类 CSS 框架,它将基础的 CSS 全部拆分为原子级别,同时还补全各种浏览器模式前缀,兼容性也不错.它的工作原理是扫描所有 HTML 文件.JavaScri ...

  6. 1 大数据实战系列-spark+hadoop集成环境搭建

    1 准备环境 192.168.0.251 shulaibao1 192.168.0.252 shulaibao2 hadoop-2.8.0-bin spark-2.1.1-bin-hadoop2.7  ...

  7. Educational Codeforces Round 150 (Rated for Div. 2) A-E

    比赛链接 A 代码 #include <bits/stdc++.h> using namespace std; using ll = long long; bool solve() { i ...

  8. 简约版八股文(day1)

    Java基础 面向对象的三大基本特征 封装:将一些数据和对这些数据的操作封装在一起,形成一个独立的实体.隐藏内部的操作细节,并向外提供一些接口,来暴露对象的功能. 继承:继承是指子类继承父类,子类获得 ...

  9. Web网页音视频通话之基于sipjs功能扩展

    在上一篇开发基础上,已经实现了音视频通话.本文是在此基础上继续完成以下内容 关闭/开启音频 开启/关闭视频 屏幕共享 开启/关闭音频 javaScript /** * 静音 */ mute() { i ...

  10. EaselJS 源码分析系列--第二篇

    在 第一篇 中我们大致分析了从: 创建舞台 -> 添加显示对象-> 更新显示对象 的源码实现 这一篇将主要分析几个常用显示对象自各 draw 方法的实现 让我们看向例子 examples/ ...