转载请注明文章出处:https://tlanyan.me/hide-site-…
防止网站真实 ip 泄漏是 web 安全中的重要议题,能避免 DDoS 流量直达真实主机、主机被渗透攻陷等风险。实践中该如何防止真实 ip 泄漏呢?
个人认为有以下几条重要的防范措施:
- 前端架设反向代理服务器或上 cdn。通过代理服务器再访问业务主机,不仅更安全,还可以加速用户访问。另外部署起来也容易,所以不管大中小型网站,都是非常推荐的。
- 架设防火墙,仅允许白名单 ip 访问真实主机;不管是自行架设的反向代理服务器还是 cdn,基本上都可以拿到 ip(段)列表。将这些 ip 加入白名单,屏蔽其他 ip 的直接访问,即使外界用 zmap、带 host 扫描也无法探测到。
- 尽量避免真实业务主机直接发起对外连接;不理解这条的人可以想想以下场景:用户注册激活、找回密码等业务需要发邮件,如果业务主机直接通过 smtp 方式向外发邮件,绝大部分情况下邮件 header 中会出现真实 ip;将 markdown 编辑器中用户输入 url 的图片下载到本地,如果是业务主机直接下载,则能轻易拿到真实 ip。诸如类似的情况不少,故而对外请求应该都谨慎。
- 防止二级域名泄漏。www 上了 cdn,管理后台的 admin、邮件解析的 mx 没有经过 cdn 并且解析到业务主机的 ip,则以另一种形式泄漏了真实 ip。
此外还有一些细节需要注意:
- cdn 如果只用了国内的,则可以通过国外主机 ping 来发现真实 ip;
- phpinfo、应用程序漏洞可能会泄漏真实 ip;
- 同一内网主机 / 虚拟主机沦陷后嗅探到真实 ip。
综上,让真实业务主机在外界看起来是不可达的,或者说黑洞,并且应用程序无可利用漏洞,那就非常安全了。
参考
- 11 种绕过 CDN 查找真实 IP 方法
- 绕过 cdn 找到真实 IP 的一些方法