若希望保护服务器的安全,及IP地址尽可能不对外暴露,总结了部分可能是最合适的个人站点安全实践。(没错,此实践并非实践)

核心的思想是利用cloudflare这个赛博菩萨作为我们的防火墙。

用户 <--> Cloudflare <--> 服务器

下面两种方式的区别主要在于 Cloudflare 是如何与我们的服务器进行通讯的。

  1. 使用cloudflare zero trust 的 tunnel,将服务器中的某个端口通过cloudflare的隧道转发出去。这种方式可以完全隐蔽本机,不需要对外暴露任何接口(因为tunnel是服务器主动建立到cloudflare的,后续cloudflare会通过这个tunnel把用户的请求转发到本机对应端口)。这是我的大部分应用所采用的方式。P.S. 它还可以自动处理https的问题,你只需要把http服务开到某个端口,cloudflare会自动处理 用户 <--> Cloudflare 这段连接的https配置及相关证书。
  2. 使用cloudflare的普通代理方式。即将域名在cloudflare解析,cloudflare将转发用户的访问请求。与tunnel的区别是,cloudflare会「像一个正常的用户一样访问你的服务器」,然后把服务器的响应再返回给用户。这种代理方式无法处理服务器IP已经暴露的情况(攻击者依旧可以手动指定访问域名的IP地址来绕过cloudflare,直接访问你的源服务器)。
    更安全的做法是打开nginx的源ssl证书验证,限定只有来自cloudflare的请求才可以访问源服务器参考。这种方法对站点的侵入性最小,在配置个人网站的时候,除了对访问者ssl证书做一个限定,不需要修改任何其他配置。

Cloudflare是个赛博菩萨。

标签: none

添加新评论