SecGate:给裸奔的服务器端口一键加认证的开源工具

10 阅读5分钟

作为一个长期维护多台 VPS 的开发者,我一直被一个问题困扰:

服务器上跑着一堆服务,Gradio、Streamlit、各种 API、数据库管理面板……全都是 0.0.0.0 监听,全都没有认证,全都裸奔在公网上。

你可能也遇到过:

  • 半夜收到告警,发现 Redis 被人写入了挖矿脚本
  • 部署了个 Jupyter Notebook 忘了设密码,第二天发现被人跑了恶意代码
  • Gradio demo 给客户看一下,结果被扫描器发现了,数据全泄露
  • 想给某个端口加个认证,发现要改代码、配 Nginx、搞证书……算了,先裸着吧

这个"先裸着吧"的心态,几乎害了所有人。


现有方案都差点意思

我试过市面上能找到的方案:

Fail2Ban —— 只管 SSH,管不了别的

Fail2Ban 很好,但它只解决 SSH 暴力破解的问题。你的 8080 端口跑着的 API、3000 端口的后台面板,它完全不管。

宝塔面板 / 1Panel —— 太重了

动辄 500MB-2GB 内存,我 1核1G 的小鸡根本跑不动。而且宝塔历史上出过多次高危 RCE 漏洞,装个安全工具反而增加了攻击面,属实是装了个寂寞。

Cloudflare Tunnel —— 必须有域名

没域名的服务器直接用不了。而且很多内部服务(数据库、消息队列)走不了 HTTP 隧道。

Wazuh —— 企业级,4GB 起步

功能确实强,但 4GB 内存起步,配置复杂到让人想哭。我就一两台小 VPS,用不着这么重的方案。

CrowdSec —— 需要额外配 Bouncer

社区威胁情报是亮点,但它本身不提供 Web 看板(只有云端 Console),也不能给端口加认证。

总结一下:要么太简单只管 SSH,要么太重跑不动,要么需要域名,要么不能给端口加认证。

在 Fail2Ban(太简单)和 Wazuh(太重)之间,居然是一片空白。


所以我做了 SecGate

SecGate 就是填补这个空白的。

一条命令装完,120MB 内存,1核1G 小鸡也能跑。但它能做到:

1. 给任意端口加认证(核心卖点)

这是我调研了 18 个竞品后确认的独有能力:7 个面板 + 7 个安全工具 + 4 个云方案,没有一个能做到。

原理很简单但很巧妙:iptables 重定向 + Nginx auth_request。

比如你的 8501 端口跑着 Streamlit,SecGate 做的事情是:

外部请求 :8501 → iptables 劫持到 :28501 → Nginx auth_request 验证 Token
                                           → 通过 → 透传到真实 :8501
                                           → 拒绝 → 弹出登录页

后端服务零代码修改。不管你跑的是什么,Python、Go、Node、Java,甚至是个二进制程序,都能加认证。

在 Web 页面上点一下"保护此端口"就行了。批量保护所有未保护端口?也是一键的事。

2. 不只是防 SSH,是全方位态势感知

SecGate 有一个四维度攻击态势评分(0-100 分):

  • SSH 暴力破解 — 谁在猜你的密码
  • 端口扫描 — 谁在扫你的端口
  • Web 异常请求 — 谁在探测你的 Web 服务
  • 防御效果 — 你挡住了多少

不用看日志,不用记命令,打开看板扫一眼分数就知道服务器安全不安全。

3. 内置 5 个漏洞扫描器

不是调用外部 API,是真的内置在本地跑的:

扫描器干什么的
SCA 依赖扫描你的 requirements.txt / package.json 里有没有已知漏洞的包
敏感信息检测代码里有没有写死 AWS Key、数据库密码之类的
输入验证测试你的 API 能不能被 SQL 注入、XSS
对外连接检测Redis、MongoDB 有没有裸奔在公网
Web 安全检测HTTPS 证书对不对、安全头全不全

4. AI 安全助手

用自然语言问问题,AI 帮你分析:

"最近有没有异常的 SSH 登录?" "哪些端口还没被保护?" "帮我检查一下 Nginx 配置有没有问题"

它会自动执行命令、分析输出、给你建议。只读权限,不会乱改配置。

5. 多节点管理

如果你有多台服务器,可以在一个看板里管理所有节点。通过 SSH 连接,自动检测每台服务器上 SecGate 的安装状态和运行端口。

6. 8 条自动告警规则

装完就自动跑,不用配置:

  • SSH 密码登录还开着?提醒你
  • 新端口暴露了没加保护?提醒你
  • 从没见过的 IP 登录成功了?提醒你
  • 1 小时内 100 次登录失败?紧急告警
  • 磁盘快满了?告诉你

和竞品的硬对比

Fail2BanCrowdSecSecGate宝塔/1PanelWazuh
内存占用<50 MB~100 MB~120 MB500MB-2GB4GB+
给任意端口加认证
Web 安全看板云端本地
漏洞扫描5 个内置❌/付费
AI 安全助手
攻击态势评分
纯 IP 可用(不要域名)
1核1G 能跑勉强
一键部署要配 Bouncer

谁适合用

  • 个人开发者:VPS 上跑着各种服务,不想学复杂的安全配置
  • AI 应用部署者:Gradio / Streamlit / Chainlit 默认没认证,一键加保护
  • 多服务部署:数据库、API、管理后台,统一网关认证保护
  • 临时环境:比赛、演示、POC,几分钟装好就有防护

装一下试试

curl -fsSL https://github.com/zzmlb/secgate/releases/latest/download/install.sh | sudo bash

装完访问 http://你的IP:5000,终端会输出登录密码。

安装包只有 170KB,运行内存约 120MB,1核1G VPS 也能流畅运行。

不满意?一键卸载干净:

sudo secgate uninstall

GitHub 仓库:github.com/zzmlb/secga…

MIT 开源,完全免费。欢迎 Star 和提 Issue。

如果你也被服务器裸奔的问题困扰过,试试看,也许就是你一直在找的那个工具。