浅谈源站保护

260 阅读8分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

前言

通常,对于有限访问源的服务,我们建议设置SLB访问控制(即白名单策略)。对于无法使用SLB访问控制的源站,通常可以使用cdn以隐藏源站IP。而本文笔者所提出的防护方案,自主可控,不需使用厂商安全设备,可保障服务器安全掌控在您的手中。

关于CDN

CDN,内容分发网络。

CDN(Content Delivery Network)是指内容分发网络,也称为内容传送网络,这个概念始于1996年,是美国麻省理工学院的一个研究小组为改善互联网的服务质量而提出的。为了能在传统IP网上发布丰富的宽带媒体内容,他们提出在现有互联网基础上建立一个内容分发平台专门为网站提供服务,并于1999年成立了专门的CDN服务公司,为Yahoo提供专业服务。由于CDN是为加快网络访问速度而被优化的网络覆盖层,因此被形象地称为“网络加速器”。

简单通俗的讲,就是你的服务器在启用CDN后,用户访问你的站点时不会直接与源站进行连接。发出请求后,域名被dns解析到CDN服务器,用户请求CDN服务器,由CDN服务器访问源站并缓存源站资源。

CDN又通常被用作源站保护,服务加速。

对于以上缓存,又分为两种。

1.实时缓存
2.定时缓存
3.不定时缓存

  1. 实时缓存
    实时缓存即用户的每次请求,都将经过CDN服务器,并由CDN服务器实时获取源站内容,并返回数据。该情况下可以完成登录,表单提交等。如Cloudflare的CDN服务就是实时缓存的。但免费用户的访问速度会比较慢。
  2. 定时缓存
    设置定时缓存,定时清理并重新获取源站内容,更新缓存信息。
  3. 不定时缓存
    CDN服务器不会主动更新缓存内容,需要手动设置缓存预热。如腾讯云CDN等。

对于服务区域,又有两种 1.国内CDN 2.国际CDN

对于以上两种服务区域,通常收费不同。腾讯云按照流量计费的方案,国际CDN又以不同国家的CDN按照不同的标准收费,当然,国际CDN要比国内CDN贵得多。那么国内CDN即只对国内访问源使用内容分发网络,而国外是可以直接访问到源站的。而攻击方使用多地PING即可获取你的源站IP。

那么,作为攻击方,针对域名的信息收集通常从DNS解析下手。通过相关工具,我们通常可以获取域名的DNS解析记录,以及该域名的历史DNS记录。
那么CDN防护适用于从dns解析启用即开启CDN服务。如果在使用CDN前将域名解析到源站,那么攻击队就可以使用资产测绘工具,以及查询DNS历史能够获取你的源站信息。

浅谈源站泄露

作为攻击方,我们获取真实IP手段通常有以下几种。

  1. 查询DNS记录
  2. 查询DNS历史
  3. 多地访问
  4. 获取站点ICON的哈希值并查询全网HASH关联站点
  5. 查询该域名的子域名
  6. 使用情报社区
  7. 使用威胁情报查询
  8. 查询站点证书

等等。

浅谈源站防护

关于网上的源站防护,无非就是使用CDN,阿里云WAF。

  1. CDN

CDN只能说在一定程度上能保护源站,但一旦CDN服务失效,或额度使用完后回源,则会暴露源站IP。

  1. 阿里云WAF

WAF应用防火墙通常部署在主机上,而阿里云WAF则类似跳板服务器或中间服务器,能够保护源站不暴露,并要求站长设置源站服务器的访问控制策略。然而阿里云的WAF是不能够封禁UA头,以及限制内容体的。

通过CNAME接入方式将网站接入Web应用防火墙WAF(Web Application Firewall)防护后,您可以设置源站服务器的访问控制策略,只放行WAF回源IP段的入方向流量,防止黑客获取您的源站IP并绕过WAF直接攻击源站。本文介绍了源站服务器部署在云服务器ECS或负载均衡SLB时,如何设置对应的安全组规则和白名单策略。 风险须知 网站接入WAF进行防护后,无论您是否设置源站保护,都不影响正常业务的转发。设置源站保护可以帮助您预防攻击者在源站IP暴露的情况下,绕过WAF直接攻击您的源站。关于如何判断源站是否存在IP泄露风险,请参见如何检测源站是否存在IP泄露风险?。 配置源站服务器的访问控制策略存在一定风险。在设置源站保护前,请注意以下事项:

  • 请确保同一源站ECS实例或SLB实例上的所有域名都已经接入WAF进行防护,避免攻击者通过未接入WAF的域名入侵源站,从而影响其他域名业务。
  • WAF在集群出现故障时,可能会将域名访问请求旁路回源至源站,确保网站正常访问。这种情况下,如果源站已设置ECS安全组或SLB白名单访问控制策略,可能会导致源站暂时无法通过公网访问。
  • 当WAF集群扩容增加新的回源IP段时,如果源站已设置ECS安全组或SLB白名单防护,可能会导致频繁出现5XX错误响应。建议您定期关注Web应用防火墙控制台发布的回源网段变更通知,及时更新涉及回源IP网段的访问控制策略。
  • 如果您不再使用WAF,在将业务流量切回源站服务器之前,请务必先删除已添加的访问控制策略,放行所有业务流量,避免业务流量切回后出现业务中断。

当然,阿里云WAF关掉之后,源站IP就暴露了。而WAF应用防火墙诸IP封禁,禁止路径访问等常规封禁,针对内容体和请求头的封禁对于WAF而言并非所有厂商的WAF都具有以上功能。而WAF和负载均衡通常是可以一并使用的,如nginx。像深信服的WAF,深信服的负载均衡则是作为两款产品销售。

那么综合各方面以及根据笔者架构经历,以下为笔者提出的方案。

防护方案

假设源站为A、B、C,我们可以使用1、2、3、4、5、6号服务器作为负载均衡服务器。

大家都知道,如果域名解析到1号服务器,1号服务器作为负载均衡服务器分别转发到A、B、C(假设A、B、C三个服务器内容相同)服务器的话,对于访问速度我们不仅要求1号服务器的带宽,在DNS解析到1号服务器的时候再做负载均衡,dns仅存在一条线路,则若1号服务器故障即影响正常服务。

那么,我们使用dns A记录,使用DNS作负载均衡,域名使用DNS A记录解析到1、2、3、4、5、6号服务器,然后由1、2、3、4、5、6号服务器部署nginx反向代理将流量使用proxy_pass转发到A、B、C服务器。

以上,若A、B、C三个服务器内容相同,我们可以使用nginx的upstream模块进行负载均衡(二次负载均衡)。若A、B、C三个服务器提供不同服务,我们可以使用DNS A记录将所有域名(包括二级域名、三级域名)解析到1、2、3、4、5、6号服务器,然后在六个服务器上部署nginx并分别编写对应域名的conf文件进行流量转发。

为什么需要六台服务器作流量转发/负载均衡?

那么对于流量转发服务器,为什么需要6台。这里笔者给出的解释是,六台服务器其中三台选择国内,三台选择国外。确保所有流量经过服务器转发到源站,即可完成源站保护。

该方案如何保障源站安全?

资产测绘以及情报搜集工具无法通过此方案收集源站服务器信息。 值得注意的是:

  • 源站提供服务的端口我们需要控制访问策略,仅允许流量转发/负载均衡服务器访问。
  • 编写nginx并于conf文件设置location限制访问路径。
  • 编写nginx并于conf文件使用if语句限制某些请求头,如垃圾蜘蛛封禁,python爬虫封禁等。
  • 视情况可使用nginx鉴权访问。

通过以上手段,我们可以尽最大程度保障服务器安全。

该方案与CDN相似,但中间服务器不会缓存任何数据。该方案目前被笔者用于应用服务,并在使用至今并未暴露源站。

线路规划

图片

混淆方案一

交叉混淆方案

混淆方案二

全站混淆 方案

nginx日志统一分析管理方案