From 19fc4f012c8f7ecba5dd0c58d3764f6335abbaca Mon Sep 17 00:00:00 2001 From: "delong.wang" Date: Fri, 24 Nov 2023 11:15:12 +0800 Subject: [PATCH] feat(doc): format markdown docs --- documents/docs/01-introduction.md | 5 +- documents/docs/02-guide/01-install.md | 14 +-- documents/docs/02-guide/02-login.md | 7 +- documents/docs/02-guide/03-config.md | 31 ++---- documents/docs/02-guide/04-test.md | 3 +- documents/docs/02-guide/05-other_config.md | 38 +++---- documents/docs/02-guide/06-upgrade.md | 3 +- documents/docs/03-faq/01-install.md | 35 +++--- documents/docs/03-faq/02-login.md | 4 +- documents/docs/03-faq/03-config.md | 69 ++++++------ documents/docs/03-faq/04-test.md | 9 +- documents/docs/03-faq/05-upgrade.md | 15 +-- documents/docs/03-faq/06-other.md | 6 +- documents/docs/04-practice/00-monitor.md | 3 +- documents/docs/04-practice/01-effect.md | 4 +- documents/docs/05-about/00-changelog.md | 2 +- documents/docs/05-about/03-framework.md | 118 +++++++++++---------- 17 files changed, 170 insertions(+), 196 deletions(-) diff --git a/documents/docs/01-introduction.md b/documents/docs/01-introduction.md index 0d34cb4..00191e9 100644 --- a/documents/docs/01-introduction.md +++ b/documents/docs/01-introduction.md @@ -17,7 +17,6 @@ WAF 是 Web Application Firewall 的缩写,也被称为 Web 应用防火墙。 区别于传统防火墙,WAF 工作在应用层,对基于 HTTP/HTTPS 协议的 Web 系统有着更好的防护效果,使其免于受到黑客的攻击。 - ## 为什么是雷池 #### 便捷性 @@ -48,8 +47,6 @@ WAF 是 Web Application Firewall 的缩写,也被称为 Web 应用防火墙。 下图是一个简单的网站流量拓扑,外部用户发出请求,经过网络最终传递到网站服务器。 - - 此时,若外部用户中存在恶意用户,那么由恶意用户发出的攻击请求也会经过网络最终传递到网站服务器。 ![](/images/docs/guide_introduction/website_without_safeline.svg) @@ -60,4 +57,4 @@ WAF 是 Web Application Firewall 的缩写,也被称为 Web 应用防火墙。 ![](/images/docs/guide_introduction/website_with_safeline.svg) -详情查看 **[雷池技术架构](/about/framework)** \ No newline at end of file +详情查看 **[雷池技术架构](/about/framework)** diff --git a/documents/docs/02-guide/01-install.md b/documents/docs/02-guide/01-install.md index 08a89be..5b4d47d 100644 --- a/documents/docs/02-guide/01-install.md +++ b/documents/docs/02-guide/01-install.md @@ -1,7 +1,9 @@ --- title: "安装雷池" --- + # 安装雷池 + 根据实际情况选择安装方式,支持一键安装 - [环境检测](#环境检测) : 查看环境是否符合安装要求 @@ -28,12 +30,11 @@ style={{ width: '100%', height: '350px' }} > - ## 离线安装 **_如果服务器不可以访问互联网环境,推荐使用该方式_** -> 离线安装前需完成[环境检测](#环境检测),默认已完成docker环境准备 +> 离线安装前需完成[环境检测](#环境检测),默认已完成 docker 环境准备 首先,下载 [雷池社区版镜像包](https://demo.waf-ce.chaitin.cn/image.tar.gz) 并传输到需要安装雷池的服务器上,执行以下命令加载镜像 @@ -76,7 +77,6 @@ style={{ width: '100%', height: '350px' }} > - ## 使用牧云助手安装 使用 [牧云主机管理助手](https://collie.chaitin.cn/) 进行一键安装 @@ -85,17 +85,16 @@ style={{ width: '100%', height: '350px' }} ![](/images/docs/guide_install/collie_apps.png) - ### 助手安装演示 - ## 环境检测 最低配置需求 + - 操作系统:Linux - 指令架构:x86_64 - 软件依赖:Docker 20.10.14 版本以上 @@ -115,17 +114,14 @@ df -h # 查看磁盘信息 lscpu | grep ssse3 # 确认CPU是否支持 ssse3 指令集 ``` - - ### 配置检测演示 - ## 常见安装问题 请参考 [安装问题](/faq/install) -下一步请参考 [登录雷池](/guide/login) \ No newline at end of file +下一步请参考 [登录雷池](/guide/login) diff --git a/documents/docs/02-guide/02-login.md b/documents/docs/02-guide/02-login.md index 5b452c5..d275ee5 100644 --- a/documents/docs/02-guide/02-login.md +++ b/documents/docs/02-guide/02-login.md @@ -1,11 +1,13 @@ --- title: "登录雷池" --- + # 登录雷池 > TOTP (Time-based One-Time Password algorithm) 将密钥与当前时间进行组合,通过哈希算法产生一次性密码,已被采纳为 RFC 6238,被用于许多双因素身份验证系统。 ## 登录演示 + 浏览器打开后台管理页面 `https://:9443`。 根据界面提示,使用 **支持 TOTP 的认证软件或者小程序** 扫描二维码,然后输入动态口令登录: @@ -14,15 +16,12 @@ title: "登录雷池" style={{ width: '100%', height: '350px' }} > - ### 注意事项: -1.服务器和totp应用的**时间必须保持一致**,否则无法验证通过 +1.服务器和 totp 应用的**时间必须保持一致**,否则无法验证通过 2.跳转到登录页后,**无法回退查看二维码**,需使用页面提供的方法重置 - ## 常见登录问题 请参考 [登录问题](/faq/login) - diff --git a/documents/docs/02-guide/03-config.md b/documents/docs/02-guide/03-config.md index db117ec..e9a444a 100644 --- a/documents/docs/02-guide/03-config.md +++ b/documents/docs/02-guide/03-config.md @@ -3,24 +3,25 @@ title: "配置站点" --- # 配置站点 + 根据指导,完成站点配置 ## 工作原理 雷池社区版主要以 **反向代理** 的方式工作,类似于一台 nginx 服务。 -**部署时,需要让网站流量先抵达雷池,经过雷池检测和过滤后,再转给原来的网站业务。** +**部署时,需要让网站流量先抵达雷池,经过雷池检测和过滤后,再转给原来的网站业务。** 建议优先熟悉反向代理概念再继续配置 ## 配置界面 -![config_site.gif](https://waf-ce.chaitin.cn/images/gif/config_site.gif) - +![config_site.gif](/images/gif/config_site.gif) ## 在单独的服务器部署雷池时配置(推荐) ### 开始配置 + ```shell 环境信息: 网站服务器:IPA,对外端口80,域名‘example.com’ @@ -32,11 +33,9 @@ title: "配置站点" 2. 具体配置参考下图 3. 禁止网站服务器(IPA)上,所有除了雷池之外的访问。例如配置防火墙 ``` + ![Alt text](/images/docs/guide_config/config_site2.png) - - - ### 配置完成 浏览器访问`example.com:80`,若能获取到业务网站的响应,并且站点上 “今日访问量” 增加,则代表配置成功。 @@ -45,7 +44,6 @@ title: "配置站点" ![Alt text](/images/docs/guide_config/deploy_on_separate_server.svg) - ## 在网站服务器上部署雷池时配置 提示:不建议,因为这样单机的负载更高、设备宕机的概率更大。非纯净的环境还会提高升级失败的概率,故障排查更困难。 @@ -61,15 +59,14 @@ title: "配置站点" 1.需要原网站的监听修改为端口A,使80端口变成未使用状态,再进行配置 2.具体配置参考下图 ``` -![Alt text](/images/docs/guide_config/config_site1.png) +![Alt text](/images/docs/guide_config/config_site1.png) + --> ### 配置完成 @@ -79,17 +76,14 @@ title: "配置站点" ![Alt text](/images/docs/guide_config/deploy_on_web_server.svg) - - ## 和其他反代设备一起部署时配置 雷池作为反代设备,可以在任意位置接入主链路。 将接入位置的流量指向雷池,并在雷池的 “上游服务器” 处填写请求的下一跳服务器地址即可。 - - ### 开始配置 + ```shell 环境信息: 网站服务器:IPA,对外端口80,域名‘example.com’ @@ -103,8 +97,8 @@ title: "配置站点" 1. 将下游nginx的流量指向雷池的IPB,访问端口指向80。 2. 具体配置参考下图 ``` -![Alt text](/images/docs/guide_config/config_site3.png) +![Alt text](/images/docs/guide_config/config_site3.png) ### 配置完成 @@ -114,13 +108,6 @@ title: "配置站点" ![Alt text](/images/docs/guide_config/deploy_with_other_server.svg) - ## 常见配置问题 请参考 [配置问题](/faq/config) - - - - - - diff --git a/documents/docs/02-guide/04-test.md b/documents/docs/02-guide/04-test.md index ac3f4bc..88e28c3 100644 --- a/documents/docs/02-guide/04-test.md +++ b/documents/docs/02-guide/04-test.md @@ -1,7 +1,9 @@ --- title: "测试防护" --- + # 测试防护 + 使用手工或者自动的方式测试防护效果 ## 确认网站可以正常访问 @@ -59,7 +61,6 @@ title: "测试防护" ### 测试效果展示 - ```sh # 测试请求 .//blazehttp -t http://127.0.0.1:8008 diff --git a/documents/docs/02-guide/05-other_config.md b/documents/docs/02-guide/05-other_config.md index c44d199..6046e49 100644 --- a/documents/docs/02-guide/05-other_config.md +++ b/documents/docs/02-guide/05-other_config.md @@ -1,39 +1,42 @@ --- title: "配置其他" --- + # 配置其他 + 其他配置项介绍 ### 黑白名单 + 黑名单:拦截 白名单:放通 -注意:条件AND是指同时符合,如果希望多个匹配条件需要增加多条黑名单或者白名单 +注意:条件 AND 是指同时符合,如果希望多个匹配条件需要增加多条黑名单或者白名单 ![Alt text](/images/docs/guide_config/other_config1.png) ### 频率限制 -通过开启频率限制功能封锁恶意IP +通过开启频率限制功能封锁恶意 IP ![Alt text](/images/docs/guide_config/other_config2.png) ### 人机验证 -详情查看 [人机验证2.0](/about/challenge) +详情查看 [人机验证 2.0](/about/challenge) ### 语义分析 + 详情查看 [语义分析检测算法](/about/syntaxanalysis) ## 通用配置 +### IP 组配置 -### IP组配置 +1.支持自定义 IP 组 -1.支持自定义IP组 - -2.长亭社区恶意IP情报,需要加入IP情报共享计划才可以使用 +2.长亭社区恶意 IP 情报,需要加入 IP 情报共享计划才可以使用 ### 证书管理 @@ -41,23 +44,22 @@ title: "配置其他" ### 其他 -#### 源ip获取方式 +#### 源 ip 获取方式 -1.使用默认的方式获取源IP - -2.自定义获取源IP的header +1.使用默认的方式获取源 IP +2.自定义获取源 IP 的 header #### 站点通用配置 -1.如果配置站点需要http自动转为https功能时,需要手动开启 -2.支持使用hhtp/2 +1.如果配置站点需要 http 自动转为 https 功能时,需要手动开启 -3.雷池支持开启IPv6的访问 +2.支持使用 HTTP2 + +3.雷池支持开启 IPv6 的访问 4.代理增加信息,方便数据分析 - #### 拦截页面附加说明 自定义拦截页面的提示信息 @@ -66,10 +68,10 @@ title: "配置其他" 存放默认证书,可以自定义证书 -#### IP情报共享计划 -默认加入共享计划,加入后将共享攻击 IP 信息到社区,并可使用 IP 组 “长亭社区恶意 IP 情报” +#### IP 情报共享计划 +默认加入共享计划,加入后将共享攻击 IP 信息到社区,并可使用 IP 组 “长亭社区恶意 IP 情报” ## 常见配置问题 -请参考 [其他问题](/faq/other) \ No newline at end of file +请参考 [其他问题](/faq/other) diff --git a/documents/docs/02-guide/06-upgrade.md b/documents/docs/02-guide/06-upgrade.md index 05267dc..34aaeb7 100644 --- a/documents/docs/02-guide/06-upgrade.md +++ b/documents/docs/02-guide/06-upgrade.md @@ -59,7 +59,6 @@ docker compose down docker compose up -d ``` - ## 常见升级问题 -请参考 [升级问题](/faq/upgrade) \ No newline at end of file +请参考 [升级问题](/faq/upgrade) diff --git a/documents/docs/03-faq/01-install.md b/documents/docs/03-faq/01-install.md index 60a731c..2a31bf5 100644 --- a/documents/docs/03-faq/01-install.md +++ b/documents/docs/03-faq/01-install.md @@ -6,7 +6,6 @@ title: "安装问题" 记录常见的安装问题 - ## 在线安装失败 1. 检查是否手动关闭防火墙 @@ -17,17 +16,15 @@ title: "安装问题" 3. 如果连接 Docker Hub 网络不稳,导致镜像下载失败(超时): ->docker hub 默认使用国外节点拉取镜像,可以自行搜索配置国内镜像加速源 - ->采用 [离线安装](/guide/install#离线安装) 方式 +> docker hub 默认使用国外节点拉取镜像,可以自行搜索配置国内镜像加速源 +> 采用 [离线安装](/guide/install#离线安装) 方式 ## 安装时遇到报错处理方法 #### 报错:ERROR: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? -需要安装 docker。尝试 `curl -fLsS https://get.docker.com/ | sh` 或者 [Install Docker Engine](https://docs.docker.com/engine/install/)。 - +需要安装 docker。尝试 `curl -fLsS https://get.docker.com/ | sh` 或者 [Install Docker Engine](https://docs.docker.com/engine/install/)。 #### 报错:docker not found, unable to deploy @@ -40,7 +37,7 @@ safeline-ce 是雷池部署时候创建的 network,出现类似报错,先重 需要安装 `docker compose v2`。尝试 `[Install Docker Compose](https://docs.docker.com/compose/install/)`。 -#### 报错: `failed to create network safeline-ce` +#### 报错: `failed to create network safeline-ce` safeline-ce 是雷池部署时候创建的 network,出现类似报错,先重启下 dockerd 之后重试。 @@ -51,15 +48,17 @@ safeline-ce 是雷池部署时候创建的 network,出现类似报错,先重 端口冲突,根据报错信息中的端口号,排查是哪个服务占用了,手动处理冲突。 #### 报错:safelint-mgt-api 出现 Operation not permitted + `docker logs -f safelint-mgt-api` 容器日志中看到 `runtime/cgo: pthread_create failed: Operation not permitted` 报错,这个错误一般会在 docker 20.10.9 及以下发生。 - 最推荐的方式是升级 docker 到最新版本尝试解决这个问题。 - 或您的系统支持配置 seccomp (执行 `grep CONFIG_SECCOMP= /boot/config-$(uname -r)` 输出 `CONFIG_SECCOMP=y` 则为支持), -则可以在雷池工作目录下载 [seccomp](https://waf-ce.chaitin.cn/release/latest/seccomp.json) 并且编辑 compose.yaml 文件, -在 management 下加入如下配置项,然后执行 `docker compose down && docker compose up -d` 来尝试解决这个问题: + 则可以在雷池工作目录下载 [seccomp](https://waf-ce.chaitin.cn/release/latest/seccomp.json) 并且编辑 compose.yaml 文件, + 在 management 下加入如下配置项,然后执行 `docker compose down && docker compose up -d` 来尝试解决这个问题: + ```yaml -security_opt: -- seccomp=./seccomp.json +security_opt: + - seccomp=./seccomp.json ``` #### 报错:safeline-postgres 出现 Operation not permitted @@ -72,7 +71,6 @@ security_opt: 查看[如何卸载](#如何卸载) ,卸载以后重新安装一次 - ## 如何自定义 SafeLine 安装路径? 基于最新的 `compose.yaml`,你可以手动修改 `.env` 文件的 `SAFELINE_DIR` 变量。 @@ -81,35 +79,32 @@ security_opt: 可以,但是不建议,机器负载将高于分开部署。 - ## MacOS/Windows 是否支持安装雷池 社区版暂不支持,如有需求咨询企业版。 - ## docker compose 还是 docker-compose? -属于两个版本,推荐使用 docker compose +属于两个版本,推荐使用 docker compose 参考资料:https://stackoverflow.com/questions/66514436/difference-between-docker-compose-and-docker-compose - ## 如何修改 SafeLine 后台管理的默认端口?比如:本机 `:9443` 已经被别的服务占用 使用 `ss -antp|grep LISTEN` 确认端口使用情况,找到未被占用端口 -修改在安装目录(默认safeline)下的隐藏文件`.env` 文件,你可以手动添加 `MGT_PORT` 变量到 `.env` 文件。 +修改在安装目录(默认 safeline)下的隐藏文件`.env` 文件,你可以手动添加 `MGT_PORT` 变量到 `.env` 文件。 文件修改后,需要等重启才会生效。 -在安装目录(默认safeline)下执行 `docker compose down && docker compose up -d` +在安装目录(默认 safeline)下执行 `docker compose down && docker compose up -d` ## 如何卸载 -在安装目录(默认safeline)下执行 `docker compose down` +在安装目录(默认 safeline)下执行 `docker compose down` ## 问题无法解决 1. 通过右上角搜索检索其他页面 -2. 通过社群(官网首页加入微信讨论组)寻求帮助或者 Github issue 提交反馈,并附上排查的过程和截图 \ No newline at end of file +2. 通过社群(官网首页加入微信讨论组)寻求帮助或者 Github issue 提交反馈,并附上排查的过程和截图 diff --git a/documents/docs/03-faq/02-login.md b/documents/docs/03-faq/02-login.md index 4d8204e..3d91920 100644 --- a/documents/docs/03-faq/02-login.md +++ b/documents/docs/03-faq/02-login.md @@ -6,8 +6,6 @@ title: "登录问题" 记录常见的登录问题 - - ## 动态口令错误 ### 时间不一致 @@ -51,4 +49,4 @@ docker exec safeline-mgt-api resetadmin 1. 通过右上角搜索检索其他页面 -2. 通过社群(官网首页加入微信讨论组)寻求帮助或者 Github issue 提交反馈,并附上排查的过程和截图 \ No newline at end of file +2. 通过社群(官网首页加入微信讨论组)寻求帮助或者 Github issue 提交反馈,并附上排查的过程和截图 diff --git a/documents/docs/03-faq/03-config.md b/documents/docs/03-faq/03-config.md index 9155263..994bfde 100644 --- a/documents/docs/03-faq/03-config.md +++ b/documents/docs/03-faq/03-config.md @@ -1,6 +1,7 @@ --- title: "配置问题" --- + # 配置问题 记录常见的配置问题 @@ -11,7 +12,7 @@ title: "配置问题" 梳理问题可能存在的几个原因: -1. 配置站点错误,ip错误、端口冲突等 +1. 配置站点错误,ip 错误、端口冲突等 2. 雷池端与配置的站点网络不通 @@ -22,53 +23,59 @@ title: "配置问题" ## 排查步骤: 1. 明确 “网站无法访问” 的具体表现: - * 如果 `502 Bad Gateway tengine`: - ![Alt text](/images/docs/guide_config/tengine_502.png) + - 如果 `502 Bad Gateway tengine`: - 大概率是是雷池的上游服务器配置不正确,或者雷池无法访问到上游服务器。请继续按下面步骤排查,重点排查步骤 6、7 + ![Alt text](/images/docs/guide_config/tengine_502.png) - * 如果请求能够返回但是十分缓慢 - * 首先确认服务器负载是否正常 - * 检查服务器的CPU、内存、带宽使用情况 + 大概率是是雷池的上游服务器配置不正确,或者雷池无法访问到上游服务器。请继续按下面步骤排查,重点排查步骤 6、7 - * 在客户端执行命令,检查雷池服务器与上游服务器的网络:`curl -H "Host: " -vv -o /dev/null -s -w 'time_namelookup: %{time_namelookup}\ntime_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_total: %{time_total}\n' http://<上游服务器地址>` + - 如果请求能够返回但是十分缓慢 + + - 首先确认服务器负载是否正常 + + - 检查服务器的 CPU、内存、带宽使用情况 + + - 在客户端执行命令,检查雷池服务器与上游服务器的网络:`curl -H "Host: " -vv -o /dev/null -s -w 'time_namelookup: %{time_namelookup}\ntime_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_total: %{time_total}\n' http://<上游服务器地址>` + + - 如果 time_namelookup 时间过大,请检查 dns server 配置 + - 如果 time_connect 时间过大,请检查雷池与上游服务器之间的网络状态 + - 如果 time_starttransfer 时间过大,请检查上游服务器状态,是否出现资源过载情况 + + - 如果不是以上情况,继续下一步 - * 如果 time_namelookup 时间过大,请检查 dns server 配置 - * 如果 time_connect 时间过大,请检查雷池与上游服务器之间的网络状态 - * 如果 time_starttransfer 时间过大,请检查上游服务器状态,是否出现资源过载情况 - * 如果不是以上情况,继续下一步 2. 在客户端执行 `curl -v -H "Host: <域名或者IP>" http://<雷池 IP>:<雷池监听端口>` 。如能获取到业务网站的响应,如图,并且站点的 “今日访问量” +1,说明雷池配置正确,网络正常 - ![Alt text](/images/docs/guide_config/check_the_site1.png) + ![Alt text](/images/docs/guide_config/check_the_site1.png) - * 如果浏览器无法访问,但这一步正常获取到响应,大概率是因为: - * 网站域名还没有切到雷池,浏览器测试时访问的是 `http(s)://<雷池 IP>`,恰好业务服务上有 Host 验证,所以拒绝了该请求。这种情况需要修改本机 host,把域名解析到雷池 IP,再访问 `http(s)://<域名>`,才能准确测试 - * 网站业务做了其他一些特殊处理。例如访问后 301 跳转到了其他地址,需要具体排查网站业务的响应内容 - * 如果不能获取到响应,继续下一步 + - 如果浏览器无法访问,但这一步正常获取到响应,大概率是因为: + - 网站域名还没有切到雷池,浏览器测试时访问的是 `http(s)://<雷池 IP>`,恰好业务服务上有 Host 验证,所以拒绝了该请求。这种情况需要修改本机 host,把域名解析到雷池 IP,再访问 `http(s)://<域名>`,才能准确测试 + - 网站业务做了其他一些特殊处理。例如访问后 301 跳转到了其他地址,需要具体排查网站业务的响应内容 + - 如果不能获取到响应,继续下一步 3. 在雷池设备上执行 `curl -v -H "Host: <域名或者IP>" http://<雷池 IP>:<雷池监听端口>`。如能获取到业务网站的响应,并且站点上 “今日访问量” +1,说明雷池配置正确 - * 如果步骤 2 失败而这里成功,说明客户端到雷池之间的网络存在问题。请排查网络,保证客户端可访问到雷池,检测防火墙、端口开放等 - * 如果不能获取到响应,继续下一步 + + - 如果步骤 2 失败而这里成功,说明客户端到雷池之间的网络存在问题。请排查网络,保证客户端可访问到雷池,检测防火墙、端口开放等 + - 如果不能获取到响应,继续下一步 4. 在雷池设备上执行 `curl -H "Host: <域名或者IP>" http://127.0.0.1:<雷池监听端口>`。如能获取到业务网站的响应,并且站点的 “今日访问量” +1,说明雷池配置正确 - * 如果步骤 3 失败而这里成功,且 `telnet <雷池 IP> <雷池监听端口>` 返回 `Unable to connect to remote host: Connection refused`,可能是被雷池设备上的防火墙拦截了。 - * 排查操作系统本身的防火墙,还有可能是云服务商的防火墙。请根据实际情况逐项排查,开放雷池监听端口的访问 - * 如果不能获取到响应,继续下一步 + + - 如果步骤 3 失败而这里成功,且 `telnet <雷池 IP> <雷池监听端口>` 返回 `Unable to connect to remote host: Connection refused`,可能是被雷池设备上的防火墙拦截了。 + - 排查操作系统本身的防火墙,还有可能是云服务商的防火墙。请根据实际情况逐项排查,开放雷池监听端口的访问 + - 如果不能获取到响应,继续下一步 5. 在雷池设备上执行 `netstat -anp | grep <雷池监听端口>` 确认端口监听情况。正常情况下,应该有一个 nginx 进程监听在 `0.0.0.0:<雷池监听端口>`。 - * 没有的话请通过社群或者 Github issue 提交反馈,附上排查过程。有的话继续下一步 - ![Alt text](/images/docs/guide_config/check_listen_port.png) - + - 没有的话请通过社群或者 Github issue 提交反馈,附上排查过程。有的话继续下一步 + + ![Alt text](/images/docs/guide_config/check_listen_port.png) + 6. 在雷池设备上 `curl -H "Host: <域名或者IP>" <上游服务器地址>`。如能获取到业务网站的响应,说明雷池设备和站点网络没有问题 - ![Alt text](/images/docs/guide_config/check_the_site2.png) - - * 如果步骤 4 失败而这里成功,可能是配置错误,查看配置站点教程确认配置是否正确,如无法解决,请通过社群或者 Github issue 提交反馈,附上排查过程 - - * 如果这步失败,说明雷池和上游服务器之间的网络存在问题。请排查网络,确保雷池可以访问到上游服务器 + ![Alt text](/images/docs/guide_config/check_the_site2.png) + - 如果步骤 4 失败而这里成功,可能是配置错误,查看配置站点教程确认配置是否正确,如无法解决,请通过社群或者 Github issue 提交反馈,附上排查过程 + - 如果这步失败,说明雷池和上游服务器之间的网络存在问题。请排查网络,确保雷池可以访问到上游服务器 ## 配置完成后,测试时返回 400 Request Header Or Cookie Too Large @@ -78,4 +85,4 @@ title: "配置问题" 1. 通过右上角搜索检索其他页面 -2. 通过社群(官网首页加入微信讨论组)寻求帮助或者 Github issue 提交反馈,并附上排查的过程和截图 \ No newline at end of file +2. 通过社群(官网首页加入微信讨论组)寻求帮助或者 Github issue 提交反馈,并附上排查的过程和截图 diff --git a/documents/docs/03-faq/04-test.md b/documents/docs/03-faq/04-test.md index 6665f9f..aa22fc6 100644 --- a/documents/docs/03-faq/04-test.md +++ b/documents/docs/03-faq/04-test.md @@ -6,14 +6,13 @@ title: "防护问题" 记录常见的防护问题 -## 攻击测试时未记录攻击,并且访问记录为0 +## 攻击测试时未记录攻击,并且访问记录为 0 检查是否直接访问了源站,没有走雷池的配置站点访问 +## 内网用户如何使用在线的威胁情报 IP?加白哪个域名? -## 内网用户如何使用在线的威胁情报IP?加白哪个域名? - -威胁情报的云服务部署在百川云平台,域名是 **`https://challenge.rivers.chaitin.cn/`** +威胁情报的云服务部署在百川云平台,域名是 **`https://challenge.rivers.chaitin.cn/`** 雷池部署在内网的师傅需要加白一下,就可以正常同步情报数据了。 @@ -50,4 +49,4 @@ docker exec safeline-tengine nginx -s reload 1. 通过右上角搜索检索其他页面 -2. 通过社群(官网首页加入微信讨论组)寻求帮助或者 Github issue 提交反馈,并附上排查的过程和截图 \ No newline at end of file +2. 通过社群(官网首页加入微信讨论组)寻求帮助或者 Github issue 提交反馈,并附上排查的过程和截图 diff --git a/documents/docs/03-faq/05-upgrade.md b/documents/docs/03-faq/05-upgrade.md index b5fde0c..f17b4a7 100644 --- a/documents/docs/03-faq/05-upgrade.md +++ b/documents/docs/03-faq/05-upgrade.md @@ -1,14 +1,14 @@ --- title: "升级问题" --- + # 升级问题 记录常见的升级问题 +## 升级提示目录不对 -## 升级提示目录不对 - -在错误的目录下执行(比如safeline的子目录)会导致无法升级成功。 +在错误的目录下执行(比如 safeline 的子目录)会导致无法升级成功。 切换目录到安装目录下再次执行升级,默认目录为:/data/safeline。 @@ -16,21 +16,16 @@ title: "升级问题" 网络问题导致,建议等待网络稳定或者尝试离线升级。 +## 升级后系统信息显示 api 错误或者 docker 状态显示异常 -## 升级后系统信息显示api错误或者docker状态显示异常 - -重启docker +重启 docker ## 升级后原配置不生效 极少数情况出现,一般删掉重新配置即可 - - ## 问题无法解决 1. 通过右上角搜索检索其他页面 2. 通过社群(官网首页加入微信讨论组)寻求帮助或者 Github issue 提交反馈,并附上排查的过程和截图 - - diff --git a/documents/docs/03-faq/06-other.md b/documents/docs/03-faq/06-other.md index 64855ea..0a35114 100644 --- a/documents/docs/03-faq/06-other.md +++ b/documents/docs/03-faq/06-other.md @@ -113,7 +113,6 @@ docker run -d --restart=always --name safeline-fluentd --net safeline-ce -v ./sq [SQL input plugin for Fluentd event collector](https://github.com/fluent/fluent-plugin-sql) [fluent-plugin-remote_syslog](https://github.com/fluent-plugins-nursery/fluent-plugin-remote_syslog) - ## 有多个防护站点监听在同一个端口上,匹配顺序是怎么样的 如果域名处填写的分别为 IP 与域名,那么当使用进行 IP 请求时,则将会命中第一个配置的站点 @@ -179,8 +178,9 @@ docker exec safeline-tengine nginx -s reload 雷池默认透传了源 IP,放在 HTTP Header 中的 `X-Forwarded-For` 里面。 如果上游服务器是 NGINX,添加如下配置就可以。如果不是,需要自行配置解析 XFF + ``` -set_real_ip_from 0.0.0.0/0; +set_real_ip_from 0.0.0.0/0; real_ip_header X-Forwarded-For; ``` @@ -198,4 +198,4 @@ proxy_set_header Connection "upgrade"; 1. 通过右上角搜索检索其他页面 -2. 通过社群(官网首页加入微信讨论组)寻求帮助或者 Github issue 提交反馈,并附上排查的过程和截图 \ No newline at end of file +2. 通过社群(官网首页加入微信讨论组)寻求帮助或者 Github issue 提交反馈,并附上排查的过程和截图 diff --git a/documents/docs/04-practice/00-monitor.md b/documents/docs/04-practice/00-monitor.md index be7c546..c335c20 100644 --- a/documents/docs/04-practice/00-monitor.md +++ b/documents/docs/04-practice/00-monitor.md @@ -8,7 +8,7 @@ title: "可用性监控" ### 关于长亭百川网站监测 -[长亭百川网站监测](https://rivers.chaitin.cn/landing/radar) 是一款专门为网站管理员打造的网站监测工具,能够有效监测站点可用性、SSL证书合法性、网站敏感内容等信息。 +[长亭百川网站监测](https://rivers.chaitin.cn/landing/radar) 是一款专门为网站管理员打造的网站监测工具,能够有效监测站点可用性、SSL 证书合法性、网站敏感内容等信息。 交互界面简洁直观、操作上手轻松、注重用户体验,实时监测每个页面的状态和详细信息,让你对网站运行状态了如指掌。 @@ -21,4 +21,3 @@ title: "可用性监控" ![machineid.png](https://waf-ce.chaitin.cn/images/docs/practice_monitor/machineid.png) ![gift.png](https://waf-ce.chaitin.cn/images/docs/practice_monitor/gift.png) - diff --git a/documents/docs/04-practice/01-effect.md b/documents/docs/04-practice/01-effect.md index 5d0ee40..72a8865 100644 --- a/documents/docs/04-practice/01-effect.md +++ b/documents/docs/04-practice/01-effect.md @@ -4,8 +4,6 @@ title: "检测效果对比" # 检测效果对比 -雷池社区版与其他WAF的检测能力对比 - +雷池社区版与其他 WAF 的检测能力对比 ![gift.png](/images/docs/sample-screenshot.png) - diff --git a/documents/docs/05-about/00-changelog.md b/documents/docs/05-about/00-changelog.md index 12c3b8c..8f4998d 100644 --- a/documents/docs/05-about/00-changelog.md +++ b/documents/docs/05-about/00-changelog.md @@ -586,4 +586,4 @@ title: "版本更新记录" - OTP 登录 - 攻击检测日志 -- 默认防护策略 \ No newline at end of file +- 默认防护策略 diff --git a/documents/docs/05-about/03-framework.md b/documents/docs/05-about/03-framework.md index f9de0d8..626b9e6 100644 --- a/documents/docs/05-about/03-framework.md +++ b/documents/docs/05-about/03-framework.md @@ -10,16 +10,17 @@ title: "雷池技术架构" 各个容器和服务说明: -| 名称 | 定义 | 详情 | -| ------------ | ----------------- | ---------------------------------------------- | -| safeline-mgt-api | 管理容器 | 接收管理后台行为,向其他服务或容器推送消息 | -| safeline-detector | 检测容器 | 执行检测的容器,从 Tengine 进入的流量会转发到该节点检测 | -| safeline-mario | 日志容器 | 记录与统计恶意行为的节点 | -| safeline-tengine | 网关 | 转发网关,有简单的过滤功能 | -| safeline-postgres | 关系型数据库 | 存储攻击日志、保护站点、黑白名单配置的数据库 | -| safeline-redis | 缓存数据库 | - | +| 名称 | 定义 | 详情 | +| ----------------- | ------------ | ------------------------------------------------------- | +| safeline-mgt-api | 管理容器 | 接收管理后台行为,向其他服务或容器推送消息 | +| safeline-detector | 检测容器 | 执行检测的容器,从 Tengine 进入的流量会转发到该节点检测 | +| safeline-mario | 日志容器 | 记录与统计恶意行为的节点 | +| safeline-tengine | 网关 | 转发网关,有简单的过滤功能 | +| safeline-postgres | 关系型数据库 | 存储攻击日志、保护站点、黑白名单配置的数据库 | +| safeline-redis | 缓存数据库 | - | 对于后台管理人员,可以直接通信的节点为管理服务 `safeline-mgt-api`,该节点负责: + - 向 Tengine 网关推送自定义配置并利用 NGINX 命令进行 reload 热更新 - 自定义检测规则(黑白名单等)并向检测引擎 `safeline-detector` 推送 - 直接读取 `postgres` 数据库,向后台管理人员返回日志、统计、当前配置等 @@ -42,35 +43,36 @@ echo "SUBNET_PREFIX=172.22.222" >> .env # 定义 docker 虚拟网卡的子网 ### compose.yml 文件 用于启动多个容器 + ```yml networks: safeline-ce: - name: safeline-ce # 定义该子网名称 - driver: bridge # 该子网为网桥模式 + name: safeline-ce # 定义该子网名称 + driver: bridge # 该子网为网桥模式 ipam: driver: default config: - - gateway: ${SUBNET_PREFIX:?SUBNET_PREFIX required}.1 # 定义网关为 SUBNET_PREFIX.1,若按上文设置,此处为 172.22.222.1 - subnet: ${SUBNET_PREFIX}.0/24 + - gateway: ${SUBNET_PREFIX:?SUBNET_PREFIX required}.1 # 定义网关为 SUBNET_PREFIX.1,若按上文设置,此处为 172.22.222.1 + subnet: ${SUBNET_PREFIX}.0/24 driver_opts: - com.docker.network.bridge.name: safeline-ce + com.docker.network.bridge.name: safeline-ce services: postgres: container_name: safeline-postgres - restart: always # 容器启动失败或崩溃时自动重启 + restart: always # 容器启动失败或崩溃时自动重启 image: postgres:15.2 - volumes: # 开启的映射文件夹 - - ${SAFELINE_DIR}/resources/postgres/data:/var/lib/postgresql/data - - /etc/localtime:/etc/localtime:ro + volumes: # 开启的映射文件夹 + - ${SAFELINE_DIR}/resources/postgres/data:/var/lib/postgresql/data + - /etc/localtime:/etc/localtime:ro environment: - - POSTGRES_USER=safeline-ce - - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:?postgres password required} - networks: # 使用上文的 safeline-ce 网络,IP 为 172.22.222.2 + - POSTGRES_USER=safeline-ce + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:?postgres password required} + networks: # 使用上文的 safeline-ce 网络,IP 为 172.22.222.2 safeline-ce: ipv4_address: ${SUBNET_PREFIX}.2 cap_drop: - - net_raw - command: [postgres, -c, max_connections=200] # 设置 postgres 的最大连接数 + - net_raw + command: [postgres, -c, max_connections=200] # 设置 postgres 的最大连接数 redis: container_name: safeline-redis restart: always @@ -80,7 +82,7 @@ services: - /etc/localtime:/etc/localtime:ro command: redis-server --appendonly yes --requirepass ${REDIS_PASSWORD} networks: - safeline-ce: # 使用上文的 safeline-ce 网络,ip 为172.22.222.3 + safeline-ce: # 使用上文的 safeline-ce 网络,ip 为172.22.222.3 ipv4_address: ${SUBNET_PREFIX}.3 cap_drop: - net_raw @@ -91,72 +93,72 @@ services: restart: always image: chaitin/safeline-mgt-api:${IMAGE_TAG:?image tag required} volumes: - - ${SAFELINE_DIR?safeline dir required}/resources/management:/resources/management - - ${SAFELINE_DIR}/resources/nginx:/resources/nginx - - ${SAFELINE_DIR}/logs:/logs - - /etc/localtime:/etc/localtime:ro + - ${SAFELINE_DIR?safeline dir required}/resources/management:/resources/management + - ${SAFELINE_DIR}/resources/nginx:/resources/nginx + - ${SAFELINE_DIR}/logs:/logs + - /etc/localtime:/etc/localtime:ro ports: - - ${MGT_PORT:-9443}:1443 + - ${MGT_PORT:-9443}:1443 environment: - - MANAGEMENT_RESOURCES_DIR=/resources/management - - NGINX_RESOURCES_DIR=/resources/nginx - - DATABASE_URL=postgres://safeline-ce:${POSTGRES_PASSWORD}@127.0.0.1/safeline-ce - - MANAGEMENT_LOGS_DIR=/logs/management + - MANAGEMENT_RESOURCES_DIR=/resources/management + - NGINX_RESOURCES_DIR=/resources/nginx + - DATABASE_URL=postgres://safeline-ce:${POSTGRES_PASSWORD}@127.0.0.1/safeline-ce + - MANAGEMENT_LOGS_DIR=/logs/management networks: - safeline-ce: # 使用上文的 safeline-ce 网络,IP 为 172.22.222.4 + safeline-ce: # 使用上文的 safeline-ce 网络,IP 为 172.22.222.4 ipv4_address: ${SUBNET_PREFIX}.4 cap_drop: - - net_raw + - net_raw detector: container_name: safeline-detector restart: always image: chaitin/safeline-detector:${IMAGE_TAG} volumes: - - ${SAFELINE_DIR}/resources/detector:/resources/detector - - ${SAFELINE_DIR}/logs/detector:/logs/detector - - /etc/localtime:/etc/localtime:ro + - ${SAFELINE_DIR}/resources/detector:/resources/detector + - ${SAFELINE_DIR}/logs/detector:/logs/detector + - /etc/localtime:/etc/localtime:ro environment: - - LOG_DIR=/logs/detector + - LOG_DIR=/logs/detector networks: - safeline-ce: # 使用上文的 safeline-ce 网络,IP 为 172.22.222.5 + safeline-ce: # 使用上文的 safeline-ce 网络,IP 为 172.22.222.5 ipv4_address: ${SUBNET_PREFIX}.5 cap_drop: - - net_raw + - net_raw mario: container_name: safeline-mario restart: always image: chaitin/safeline-mario:${IMAGE_TAG} volumes: - - ${SAFELINE_DIR}/resources/mario:/resources/mario - - ${SAFELINE_DIR}/logs/mario:/logs/mario - - /etc/localtime:/etc/localtime:ro + - ${SAFELINE_DIR}/resources/mario:/resources/mario + - ${SAFELINE_DIR}/logs/mario:/logs/mario + - /etc/localtime:/etc/localtime:ro environment: - - LOG_DIR=/logs/mario - - GOGC=100 - - DATABASE_URL=postgres://safeline-ce:${POSTGRES_PASSWORD}@safeline-postgres/safeline-ce - - REDIS_URL=redis://:${REDIS_PASSWORD}@safeline-redis:6379/0 + - LOG_DIR=/logs/mario + - GOGC=100 + - DATABASE_URL=postgres://safeline-ce:${POSTGRES_PASSWORD}@safeline-postgres/safeline-ce + - REDIS_URL=redis://:${REDIS_PASSWORD}@safeline-redis:6379/0 networks: - safeline-ce: # 使用上文的 safeline-ce 网络,IP 为172.22.222.6 + safeline-ce: # 使用上文的 safeline-ce 网络,IP 为172.22.222.6 ipv4_address: ${SUBNET_PREFIX}.6 cap_drop: - - net_raw + - net_raw tengine: container_name: safeline-tengine restart: always image: chaitin/safeline-tengine:${IMAGE_TAG} volumes: - - ${SAFELINE_DIR}/resources/nginx:/etc/nginx - - ${SAFELINE_DIR}/resources/management:/resources/management - - ${SAFELINE_DIR}/resources/detector:/resources/detector - - ${SAFELINE_DIR}/logs/nginx:/var/log/nginx - - /etc/localtime:/etc/localtime:ro - - ${SAFELINE_DIR}/resources/cache:/usr/local/nginx/cache - - /etc/resolv.conf:/etc/resolv.conf + - ${SAFELINE_DIR}/resources/nginx:/etc/nginx + - ${SAFELINE_DIR}/resources/management:/resources/management + - ${SAFELINE_DIR}/resources/detector:/resources/detector + - ${SAFELINE_DIR}/logs/nginx:/var/log/nginx + - /etc/localtime:/etc/localtime:ro + - ${SAFELINE_DIR}/resources/cache:/usr/local/nginx/cache + - /etc/resolv.conf:/etc/resolv.conf environment: - - MGT_ADDR=${SUBNET_PREFIX}.4:9002 # 配置 mgt-api 的 grpc 服务器地址,用于与 mgt-api 容器通信 + - MGT_ADDR=${SUBNET_PREFIX}.4:9002 # 配置 mgt-api 的 grpc 服务器地址,用于与 mgt-api 容器通信 ulimits: nofile: 131072 - network_mode: host # Tengine 直接使用宿主机网络 + network_mode: host # Tengine 直接使用宿主机网络 ``` ### 各个服务的运行日志