我在网上看一些安全相关的新闻,突然想到:我自己的homelab真的安全吗?我运行着几台暴露在公网上的服务器,老实说我并不清楚它们到底有多脆弱。于是我开始寻找自己测试的方法。
我一开始想让 Claude 帮我跑一次扫描,结果发现 Claude 运行在沙箱环境里,任何它尝试的扫描都会经过 Anthropic 自己的网络网关,而不是直接测试我的服务器。这样得出的结果并不可信。所以我只能自己动手测试。我在安全测试方面并没有太多经验,我的背景基本上就是搭建自己两台服务器的网络,而不是审计它们。
我的架构,简单说
整体的连接大致是这样的:网络链路是 Cloudflare,然后是带有DDNS主机名的 MikroTik 路由器(具体地址我就不公开了),接着是 Ubuntu Server 主机,再到 Unraid 主机。Ubuntu Server 负责两台机器的反向代理,因为 Traefik 就跑在那上面。为了让这一切能从外部访问,我还得向我的ISP——PLDT——申请了一个公网IP。这就是整个架构的大概情况。
运行 nmap
实际测试时,我在工作笔记本的 WSL 里用 nmap,对我的DDNS主机名跑了一次全端口扫描:
nmap -Pn -T4 -p- your-ddns-hostname.example.com
老实说,结果挺不错的。只有80和443端口是开放的,其他一律没有响应。我真的松了一口气。至少在网络层面,服务器端的封锁做得很到位。
然后是 SSL
SSL是我没有完全深入理解的一部分。Traefik 已经通过 Let's Encrypt 自动处理证书,所以我以为这部分已经没问题了。我用 Qualys SSL Labs 跑了一遍检测,结果却让我意外:尽管我在 Traefik 里(当初搭建时借助了一些AI的帮助)正确配置了 TLS 1.2 和 1.3,结果全都被评为B级。
后来发现,B级评分根本不是 Traefik 的问题,而是因为 Cloudflare 挡在那些域名前面,在其边缘节点处理 TLS 握手,而不是我的源服务器。于是我测试了一个没有经过 Cloudflare 代理的服务,那个反而得到了A级评价,加密强度也很不错。
那么,我的配置到底行不行?
至少在我测试过的部分,我觉得是可以的。服务器和网络层面没有发现暴露的漏洞。如果说还有什么真正的薄弱点,那大概率是在各个服务背后的具体业务逻辑上,而不是边界防护本身。经过一整晚折腾自己的基础设施后,能得出这个结论也算是一种安慰。
你的服务器搭建历程又是怎样的?