跳至主要内容
五折优惠 全部方案,限时优惠。起价 $2.48/mo
19 min left
安全与网络

如何在 Linux VPS 上部署 SafeLine WAF

H 作者 Haze 19 分钟阅读
SafeLine WAF deployed on a Linux VPS with Docker Compose, shown as a shielded server filtering traffic with NPM, Caddy, and SQLi testing labels

面向互联网的 Web 应用会持续遭到 SQL 注入、凭据滥用和已知漏洞模式的探测。SafeLine 是一款 GPL-3.0 授权的自托管 WAF 以 Docker Compose 栈的形式运行,先过滤 HTTP/S 流量,再将放行的请求转发到源站。它的 免费个人版 最多支持 10 个应用。

本教程涵盖安装过程以及三个需要特别注意的方面:反向代理架构的选择、当 SafeLine 位于 Nginx Proxy Manager 等既有代理之后时的 Docker 网络配置,以及安装后可运行的一条验证命令,用于确认 WAF 确实在拦截攻击。

简短版本

  • 使用 Docker Compose 在 Linux VPS 上安装 SafeLine。可以使用一行命令安装脚本,或选择手动 Docker Compose 方式,在启动整个栈之前先检查 Compose 定义和环境配置。
  • 在安装之前先确定反向代理架构:SafeLine 作为唯一代理、SafeLine 位于既有 Nginx Proxy Manager 之后,或 SafeLine 与 Caddy 共用同一台服务器。每种形态都需要不同的端口分配和 X-Forwarded-For 设置。
  • 安装完成后,通过向受保护的 URL 发送一条 curl SQL 注入探测请求来验证 WAF。在均衡(Balanced)或严格(Strict)模式下,返回 403 响应并在攻击事件(Attack Events)中出现对应记录即可确认拦截生效。在监控(Monitor)模式下,即便响应可能仍然成功,对应事件也能确认检测已生效。
  • 免费个人版最多支持 10 个应用以及核心检测引擎。地域封锁、攻击日志导出和外部通知需要 Lite 版;更强的攻击检测和负载均衡需要 Pro 版。

开始之前:前提条件与本教程涵盖的内容

本教程假设你有一台可以通过 SSH 以 root 或 sudo 权限登录的 Linux VPS,并且已安装 Docker。完成后,你将拥有一个正常运行、至少保护一个站点的 SafeLine 实例,以及一条随时可重复运行的验证命令。

你需要:

  • 一台 Linux VPS。下面的命令假设系统为带 systemd 的 Debian 或 Ubuntu 类系统;在其他发行版上请核对软件包名和服务名。
  • 根据官方部署要求,至少需要 1 vCPU、1 GB RAM 和 5 GB 磁盘,参见 官方部署要求。为在生产环境中留出实际余量,本指南推荐 2 vCPU、4 GB RAM 和 20 GB 磁盘。
  • Docker 20.10.14 或更高版本,以及 Docker Compose 2.0 或更高版本。
  • 一颗支持 SSSE3 的 x86_64 CPU;可用以下命令验证: lscpu | grep ssse3 而不要想当然地认为该指令集已存在。
  • 如果你打算通过公网 HTTPS 暴露受保护的应用,需要一个 DNS 指向 VPS 公网 IP 的域名或子域名。
  • 与所选拓扑相匹配的端口。形态 A 和形态 C 通常将 80 和 443 端口交给 SafeLine,而形态 B 将这些端口留给 Nginx Proxy Manager,并为 SafeLine 分配另一个监听端口,例如 10080。
  • root 或 sudo 权限。

在 VPS 服务商的防火墙或安全组中,只开放所选拓扑所需的公网端口。将 SSH 和 TCP 9443 限制为可信的管理来源。在形态 B 中,对公网 IPv4 和 IPv6 关闭 TCP 10080,并在每种拓扑中都将 8080 等后端端口保持为私有。直接访问 10080 会绕过 NPM,并使 X-Forwarded-For 的信任边界失效。

注意: 对于手动 ARM64 部署,请设置 ARCH_SUFFIX=-arm。SafeLine 的 官方部署文档 指出 ARM 需要 Pro 授权,且个人版不支持 ARM。使用个人版请选择 x86_64 VPS。

开始之前先验证 Docker:

docker --version
docker compose version

两条命令都应返回已安装的版本号。只有当 Docker 为 20.10.14 或更高、Docker Compose 为 2.0.0 或更高时才继续;否则请在安装 SafeLine 之前先升级。

先确定你的反向代理架构

Three SafeLine WAF deployment shapes on a Linux VPS: Shape A with SafeLine alone owning ports 80 and 443, Shape B with SafeLine behind Nginx Proxy Manager on port 10080, and Shape C with SafeLine in front of Caddy on port 8080

全新的 VPS 可以让 SafeLine 直接独占 80 和 443 端口。而已经运行 Nginx Proxy Manager、Caddy 或应用自带 Nginx 的 VPS 则不行,架构决策决定了首次启动时是顺利安装还是端口冲突。一开始就把这一点定对,剩下的部署就只是按部就班。

三种形态:

  • 形态 A,SafeLine 作为唯一的反向代理。 SafeLine 独占 80 和 443 端口,并为受保护的应用管理 TLS。 当前的 CE 版本 包含免费证书(Free Cert)工作流,同时仍保留手动上传证书的方式;请在所安装的版本中核对具体的证书选项。后端运行在非公开端口上,由 SafeLine 路由至该端口。
  • 形态 B,SafeLine 位于 Nginx Proxy Manager(NPM)之后。 NPM 保留 80 和 443 端口并处理 SSL。SafeLine 监听 10080 端口(仅 HTTP,因为 NPM 已经终结了 TLS)。NPM 将流量转发给 SafeLine,SafeLine 再转发给后端。当 NPM 已经部署时,这是一种常见配置。
  • 形态 C,SafeLine 与 Caddy 并存。 Caddy 的自动 HTTPS 会与 SafeLine 争抢 443 端口。一种可行的安排是把 80 和 443 端口交给 SafeLine,并将 Caddy 移到一个非公开的内部 HTTP 端口(例如 8080),用于 SafeLine 到 Caddy 再到应用的跳转。
形态占用 443 端口SSL 管理复杂性最适合
A,仅 SafeLineSafeLine在 SafeLine 内部全新 VPS 或愿意迁移
B,位于 NPM 之后NPM在 NPM 中(Let's Encrypt)已有 NPM 部署
C,与 Caddy 并存SafeLine在 SafeLine 内部中高想要保留的既有 Caddy

核心要点: 对于全新 VPS,形态 A 最简单;当 NPM 已在运行时,形态 B 是正确选择;形态 C 需要有意为 Caddy 重新分配端口。

在你的 VPS 上安装 SafeLine

安装本身是最简单的部分。SafeLine 提供两种安装方式:一种是从 waf.chaitin.com 拉取远程脚本的自动化安装程序,另一种是手动 Docker Compose 方式,让你在运行之前先检查所有内容。选择符合你安全策略的那一种。

步骤 1:确认 Docker 已就绪

重新检查 Docker 版本以及 Docker 守护进程是否在运行:

docker --version
docker compose version
sudo systemctl status docker

预期输出中包含 active (running) 表示 Docker 守护进程正常。如果没有运行,用以下命令启动: sudo systemctl start docker 并用以下命令设置开机自启: sudo systemctl enable docker.

步骤 2:运行 SafeLine 安装程序

有两种子方式。选择其中之一。

步骤 2a,自动安装。 以 root 权限运行安装程序:

sudo bash -c "$(curl -fsSLk https://waf.chaitin.com/release/latest/manager.sh)" -- --en

脚本会询问将 SafeLine 数据目录放在何处,拉取 Docker 镜像并启动整个栈。安装完成后,运行 sudo docker exec safeline-mgt resetadmin 来获取或重置管理员凭据,具体见 官方部署指南。请妥善保存生成的凭据。

注意: 该命令以 root 身份从 waf.chaitin.com 下载并执行一个远程 shell 脚本。官方的一行命令包含 curl -k,它会禁用 TLS 证书校验。请在执行前审查下载的脚本,如果该风险不可接受,请改用步骤 2b。SafeLine 也可作为 Cloudzy 一键部署使用,但该镜像使用 /opt/safeline, /opt/safeline/.env,以及 /opt/safeline/docker-compose.yml。请勿原样使用本指南的 /data/safeline 路径在 Cloudzy 镜像上直接套用。

步骤 2b,手动 Docker Compose 安装。 下载并检查官方 Compose 文件,然后启动整个栈:

sudo mkdir -p /data/safeline
cd /data/safeline
sudo wget -O /data/safeline/compose.yaml "https://waf.chaitin.com/release/latest/compose.yaml"
POSTGRES_PASSWORD="$(openssl rand -hex 32)"
sudo tee .env >/dev/null <<EOF
SAFELINE_DIR=/data/safeline
IMAGE_TAG=latest
MGT_PORT=9443
POSTGRES_PASSWORD=$POSTGRES_PASSWORD
SUBNET_PREFIX=172.22.222
IMAGE_PREFIX=chaitin
ARCH_SUFFIX=
RELEASE=
REGION=-g
MGT_PROXY=0
EOF
unset POSTGRES_PASSWORD
# Also adjust SUBNET_PREFIX if your VPS already uses 172.22.222.0/24.
sudo chmod 600 /data/safeline/.env
sudo docker compose up -d

之后 docker compose up -d 完成后,列出正在运行的容器以确认:

sudo docker compose ps

你应能看到 safeline-mgt、safeline-detector、safeline-tengine、safeline-pg、safeline-fvm、safeline-luigi 和 safeline-chaos 等容器。如果有任何容器显示为 Exited,请参见步骤 3 了解两个最常见的原因。

步骤 3:解决常见安装错误

有两种错误出现得足够频繁,值得单独用一个步骤来说明。

子网重叠。 如果安装失败并报 Pool overlaps with other one on this address space,说明默认的 SafeLine 子网与既有的 Docker 网络冲突。正如一篇 SafeLine 安装故障排查指南所述,可通过编辑以下文件来解决: /data/safeline/.env:

sudo nano /data/safeline/.env
# Find the line:
#   SUBNET_PREFIX=172.22.222
# Change to an unused range, for example:
#   SUBNET_PREFIX=172.30.30
sudo docker compose -f /data/safeline/compose.yaml down
sudo docker compose -f /data/safeline/compose.yaml up -d

IPv6 解析器错误。 如果 safeline-tengine 崩溃并报 nginx: [emerg] invalid IPv6 address in resolver,请先检查解析器文件并确定由谁管理它:

readlink -f /etc/resolv.conf
cat /etc/resolv.conf

不要直接编辑 /etc/resolv.conf 如果它是由 systemd-resolved、NetworkManager 或 VPS 服务商生成的。请在管理它的服务配置中修正格式错误的 nameserver 值,重新生成解析器文件,然后重启 Tengine:

sudo docker restart safeline-tengine

步骤 4:访问管理面板

Reaching the SafeLine dashboard on port 9443 through an SSH tunnel from a laptop, with the port closed to the public internet

SafeLine 的管理面板通过 HTTPS 监听 TCP 9443。不要让这个管理端口对整个互联网开放。请将其限制为可信的来源地址或 VPN,或者封锁公网访问并改用 SSH 隧道:

ssh -L 9443:127.0.0.1:9443 USER@SERVER_IP

打开 https://localhost:9443 通过隧道访问。首次访问时出现自签名证书警告属正常现象;继续之前请确认 SSH 连接确实连到了目标服务器。

如果你丢失了初始凭据,可从宿主机重置管理员密码:

sudo docker exec safeline-mgt resetadmin

该命令会打印出可用于重新登录的管理员凭据。

为你的架构配置 SafeLine

SafeLine 现在已经在运行,但还没有保护任何东西。在管理面板的“应用”(Applications)页面,你需要告诉 SafeLine 要保护哪些站点,以及将清洗后的流量转发到何处。配置方式会因你先前选择的架构而不同,因此每种形态都有各自的小节。只需按照与你配置相符的那一节操作即可。

形态 A:SafeLine 作为唯一的反向代理

在形态 A 中,SafeLine 直接监听 80 和 443 端口,并将清洗后的流量转发到运行在非公开端口上的后端应用。在管理面板中:

  1. 导航至 应用(Applications),然后添加应用(Add Application).
  2. 将监听端口设为 443 并启用 SSL。使用你所安装的 SafeLine 版本中提供的证书工作流。 当前的 CE 版本 包含免费证书(Free Cert)的申请和续期处理,同时仍保留手动上传证书的方式。
  3. 将上游(upstream)设为 http://127.0.0.1:8080。如果后端运行在 Docker 中,请只将其端口发布到回环地址,例如 "127.0.0.1:8080:8080" 写在该服务的 ports 部分中。避免使用写死的容器 IP,例如 172.17.0.5 因为容器被重建时该 IP 可能会改变。
  4. 保存该应用。SafeLine 会立即开始监听 443 端口,并将清洗后的流量转发到后端。
  5. 确认你域名的 DNS A 记录指向 VPS 公网 IP,且 80 和 443 端口可从外部访问。

如果 443 端口已被其他进程占用,SafeLine 的容器将无法绑定,管理面板会在该应用上显示错误。在添加应用之前,请先停止冲突的进程,或改用其他端口。

形态 B:SafeLine 位于 Nginx Proxy Manager 之后

形态 B 让 NPM 继续做它已经在做的事(占用 80 和 443、处理 Let's Encrypt),并把 SafeLine 作为其后专门的安全层插入进来。流量路径为:客户端,然后是 NPM(443 端口,TLS 终结),然后是 SafeLine(10080 端口,HTTP),最后是后端应用。

在 SafeLine 管理面板中:

  1. 应用(Applications),然后添加应用(Add Application)。 将监听端口设为 10080 并关闭 SSL(NPM 已经终结了 TLS)。
  2. 按照形态 A 中的说明,将上游设为应用的内部地址。
  3. 保存该应用。

在 Nginx Proxy Manager 中:

  1. Hosts,然后 Proxy Hosts,然后 Add Proxy Host。
  2. Details 标签页:设置域名、方案(scheme) http,以及转发端口 10080。如果 NPM 直接运行在宿主机上,请使用 127.0.0.1 作为转发主机名。如果 NPM 在 Linux 上运行于 Docker 中, 127.0.0.1 会指向 NPM 容器本身,而非 VPS 宿主机。请添加 Docker 的 host-gateway 映射 到 NPM 的 Compose 服务中,然后使用 host.docker.internal 作为转发主机名:
extra_hosts:
  - "host.docker.internal:host-gateway"

在 NPM 的 Compose 目录中,运行 sudo docker compose up -d 以便用新的主机映射重建该容器。

  1. SSL 标签页: 申请 Let's Encrypt 证书,强制 SSL,并启用 HTTP/2。
  2. 对于 X-Forwarded-For,请让 NPM 的 Advanced 标签页保持为空。在 当前的 NPM 模板中,Advanced 内容是在 server 作用域插入的,按照 NGINX 的继承规则,不会覆盖自动生成的 location 级别请求头。生成的 location 会发送:
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

第二条指令会将 NPM 观察到的地址作为请求头中最右侧的值追加进去。

  1. 保存该 Proxy Host。

回到 SafeLine,只有在确认了实际生效的请求头链之后,再配置源 IP 提取。 SafeLine 9.3.1 引入了灵活的 XFF 提取功能,可选择方向和索引。

  1. 设置(Settings),然后 Advanced,然后 Real IP from Header。将请求头名称设为 X-Forwarded-For.
  2. 使用从请求头末尾开始的自定义提取方式,选中 NPM 追加的最右侧地址。具体的索引标签因版本而异,因此请在 Logs,然后 Access 中验证结果。如果所安装的版本早于 9.3.1,请先升级再按此拓扑操作。
  3. 如果 Cloudflare 或其他 CDN 位于 NPM 之前,请先将 NPM 配置为只信任该服务商公布的代理 IP 段,这样 NPM 追加的地址才可信。在检查并测试实际的请求头链之前,不要选择固定位置。
  4. 保存并重新加载该应用。

从 VPS 之外的机器测试该配置:

curl -H "X-Forwarded-For: 1.2.3.4" "https://yourdomain.com/"

SafeLine 的访问日志应显示你真实的公网地址,而不是 1.2.3.4 或 NPM 的网桥地址。

通过将后端监听端口保持为私有,防止用户绕过 SafeLine。对于 Docker Compose 后端,只将端口发布到回环地址:

ports:
  - "127.0.0.1:8080:8080"

对于直接运行在宿主机上的服务,将其配置为监听 127.0.0.1:8080 而不是 0.0.0.0:8080。从 VPS 之外的机器验证这两个内部端口:

curl --connect-timeout 5 "http://YOUR_VPS_PUBLIC_IP:10080"
curl --connect-timeout 5 "http://YOUR_VPS_PUBLIC_IP:8080"

这些 TCP 连接应当被拒绝或超时。出现 HTTP 错误或 "Empty reply from server" 仍然意味着该端口可从公网访问,必须加以保护。如果无法绑定回环地址,请针对实际的网络接口、Docker 网络和目标容器编写专门的防火墙规则,而不要套用通用的 DOCKER-USER 规则。

形态 C:SafeLine 与 Caddy 配合

在形态 C 中,SafeLine 占用 80 和 443 端口;Caddy 移到一个非公开的内部 HTTP 端口。流量路径为:客户端,然后是 SafeLine(443,TLS),然后是 Caddy(8080,内部 HTTP),最后是应用后端。

编辑 /etc/caddy/Caddyfile:

:8080 {
bind 127.0.0.1
reverse_proxy 127.0.0.1:3000
}

那位 :8080 站点块是关键所在:Caddy 现在监听一个内部 HTTP 端口,而不再与 SafeLine 争抢 443。其中的 bind 127.0.0.1 一行让该监听端口仅限于 VPS 本地。用以下命令重新加载 Caddy: sudo systemctl reload caddy 并用以下命令确认: sudo ss -ltnp | grep -E ':(443|8080)' Caddy 已绑定到 8080 而非 443。

在 SafeLine 中,添加一个监听 443 并启用 SSL 的应用,然后将上游设为 http://127.0.0.1:8080。X-Forwarded-For 设置可以保持默认的网络连接选项,因为 Caddy 位于 SafeLine 之后,而非之前。

选择防护模式并验证 WAF 正在拦截攻击

SafeLine 有三种防护模式,决定当引擎将某个请求判定为恶意时会发生什么。合适的初始模式取决于具体应用;而验证步骤在任何模式下都相同。

防护模式:监控(Monitor)、均衡(Balanced)、严格(Strict)

SafeLine 中的每个应用都有各自的防护模式设置,可在以下位置配置: 应用(Applications),然后你的应用,然后防护模式(Protection Mode):

  • 监控(Monitor)。 SafeLine 会记录本应拦截的请求,但并不真正拦截。对于带有丰富输入表单的复杂生产应用(论坛、带所见即所得字段的管理后台、接受自由格式 JSON 负载的 API),这是最安全的起点。先以监控模式运行几天,查看攻击事件页面,确认对真实用户没有误报,再提升到均衡模式。
  • 均衡(Balanced)。 默认模式。SafeLine 的 厂商在 GitHub 上公布的数据 显示均衡模式的检出率为 71.65%、准确率为 99.45%、误报率为 0.07%。严格模式据称检出率为 76.17%、准确率为 99.38%、误报率为 0.22%。这些是厂商自报的结果,而非独立基准测试,且 README 并未说明所用数据集为 WAF-Eval。请将其视为产品间的对比数据,而非有保证的生产环境性能。
  • 严格(Strict)。 更激进的规则集,采用更严格的启发式判断,以及上面所示的检出率与误报率权衡。在均衡模式干净运行一两周、你对自己的流量有所了解之后,值得一试。

建议:对于没有实时流量可打扰的全新部署,选择均衡模式。对于已有的生产应用,先以监控模式运行几天,在攻击事件日志中查找误报,调整好例外规则后再提升到均衡模式。在均衡模式运行一两周、你了解了自己的流量之后,值得尝试严格模式。

用 curl SQLi 测试验证 WAF

A curl SQL injection probe stopped by SafeLine: Balanced and Strict modes return 403 Blocked and log the attack event, while Monitor mode only logs it

在认定安装完成之前的最后一步,是确认 WAF 确实拦截了攻击。从 VPS 之外的任意机器,对你受保护的站点运行一个无害的 SQL 注入探测:

curl -i "https://yourdomain.com/?id=1%20and%201=2%20union%20select%201"

这是 SafeLine 公布的 SQL 注入测试向量。在均衡或严格模式下,应返回 403 状态和 SafeLine 的拦截响应。在监控模式下,请求应被记录但不被拦截。HTTP 版本和具体的响应正文可能有所不同,因此请通过攻击事件中对应的记录来确认结果。

然后通过步骤 4 中的受限访问方式打开管理面板,进入 Logs,然后 Attack Events。你应能看到一条新记录,其时间戳吻合、攻击类型为 SQL Injection、源 IP 与你运行 curl 的机器一致,并在请求详情中显示违规的查询字符串。点击进入该事件,可查看 SafeLine 捕获的完整请求和响应。

如果 curl 请求返回 200 OK,请结合攻击事件日志来解读结果:

  • 如果有对应的 SQL Injection 事件,说明该应用很可能处于监控模式;只记录不拦截是预期行为。
  • 如果没有对应事件,请确认 DNS 解析到了目标 VPS,核对 SafeLine 的监听和上游配置,并将请求时间与 SafeLine 的访问日志对照。
  • 还要确认防护已启用,且没有任何 IP 白名单、自定义放行规则或路径例外覆盖了该测试请求。

核心要点: 如果 curl 探测返回 403 并显示 SafeLine 拦截页面,且攻击事件中出现攻击类型为 SQL Injection 的记录,则说明 WAF 正在正确拦截流量。

免费版涵盖哪些内容,哪些需要付费版

免费个人版足以保护大多数单 VPS 部署。当你需要运维类功能(通知、日志导出、地域封锁)或超出 10 个应用的上限时,付费版才开始变得重要。

以下明细来源于 CyberServal 定价页面:

  • 个人版,免费。 最多 10 个应用。包含语义检测引擎(SQLi、XSS、命令注入、路径遍历、SSRF、XXE、CRLF)、限速、机器人 CAPTCHA 挑战、针对自动化爬虫的动态 HTML/JS 加密、Web ACL 规则以及证书管理。 当前的 CE 版本 还包含免费证书(Free Cert)的申请和续期处理。
  • Lite 版,$10/月或 $100/年。 增加地域封锁、威胁情报 IP 库、Discord 和 Telegram 通知集成、攻击日志导出,并将应用上限提高到 20。
  • Pro 版,$100/月或 $1,000/年。 增加更强的攻击检测、按服务和全局的配置、自定义拦截页面、上游负载均衡、主从节点同步以及不限数量的应用。请参见 当前的定价表 了解变动。
  • Ultimate 版,价格面议。 为企业量身定制的条款,提供跨渠道的一对一支持和定制功能开发。

SafeLine 在其本地 Compose 栈内部处理和存储应用数据。不过, 当前的 CE 版本发行说明 提到了威胁情报共享(Threat Intelligence Sharing),因此运维人员在把该部署视为零出站之前,应先检查所安装版本的 UEP、隐私和共享控制项,并观察其出站连接。

接下来做什么

安装已完成,WAF 也已验证。几项后续任务有助于保持部署的健康状态。

  • 对于任何带有丰富用户输入的生产应用(论坛、管理后台、自由格式 API),请将防护模式设为 显示器 运行三到七天,每天查看攻击事件页面,在调整好所有误报后再提升到均衡模式。
  • 在 Lite 版中,设置 Discord 或 Telegram 通知集成,让攻击告警在管理面板之外也能触达你。
  • 安排每月一次的维护窗口。升级前,请先备份 SafeLine 的数据和环境配置,阅读 当前的发行说明,并对你所安装的版本使用官方支持的升级流程。不要只依赖 docker compose pull 随后 docker compose up -d,因为 Compose 定义或所需的环境变量可能在不同版本之间发生变化。Cloudzy 一键部署的用户应从 /opt/safeline 开始,并遵循市场镜像的说明。
  • 订阅 SafeLine 发行版页面 以获取安全补丁通知,并订阅 项目仓库 以跟踪问题。

如果你还没有用于此次部署的 VPS,SafeLine 可作为一键部署使用,位于 Cloudzy 的应用市场。配备 4 GB RAM 的套餐可提供本指南推荐的实用余量;请重新查看 当前的定价表 在发布时于 Cloudzy 上,因为套餐规格可能会更改。一键镜像使用 /opt/safeline/opt/safeline/docker-compose.yml,因此架构和管理面板方面的说明同样适用,但本指南中的 /data/safeline 命令并不能完全照搬。

常见问题

SafeLine WAF 是取代 Nginx Proxy Manager,还是两者同时运行?

当 SafeLine 作为唯一的反向代理部署时,它可以取代 Nginx Proxy Manager。不过,它并不一定要取代 NPM。一种常见配置是让 NPM 在前面负责 SSL 和路由,并把 SafeLine 作为其后专门的安全层。两种方式都可行;选择取决于你是想用一个工具同时完成两项工作,还是用两个各自擅长的工具分别做好一项工作。

免费版是否足以保护单个 WordPress 站点或小型 SaaS?

就防护而言,足够。免费个人版包含语义检测引擎、限速、机器人 CAPTCHA 挑战和动态 HTML/JS 加密,这些都是单个站点的核心防御手段。付费版增加了地域封锁、攻击日志导出、外部通知、更高的应用上限、更强的检测和负载均衡等运维功能。是否需要付费版取决于所需的功能和应用数量,而不仅仅是流量大小。

SafeLine 能在 1 GB RAM 的 VPS 上运行吗?

SafeLine 的 官方最低要求 为 1 GB RAM。这对于测试或极轻量的工作负载可能已经足够,但生产环境的承载能力取决于流量、启用的功能和日志保留。对于小型生产部署,2 vCPU 和 4 GB RAM 是一个较为保守的起点;请监控内存使用,并根据实测负载扩容。

为什么 ARM64 需要付费授权?

SafeLine 的 官方部署文档 指出 ARM 部署需要 Pro 授权,且个人版不支持 ARM。如果你想使用个人版,请选择 x86_64 VPS;如果你必须使用 ARM,请为 Pro 授权做好预算。

长亭科技会从我的 SafeLine 实例接收哪些数据?

具体的出站数据会因版本和启用的功能而异。 当前的 CE 版本发行说明 提到了威胁情报共享,而所安装的版本可能还会提供 UEP 或其他共享控制项。请检查这些设置以及你所安装版本的发行说明,然后在网络层面验证出站流量。SafeLine 的本地容器负责处理应用数据,但仅凭这一点并不能证明拒绝 UEP 就能阻止每一次出站请求。

分享

博客更多内容

继续阅读。

准备好部署了吗? 起价 $2.48/月。

独立云厂商,自 2008 年起。AMD EPYC、NVMe、40 Gbps。14 天退款保证。