Amazon web services 按国家限制网站访问
我正在使用AWS托管我的网站 该网站位于2个ec2实例上,负载均衡器(ELB)在它们之间平衡流量 目前,我正在使用我的DNS(路由53)通过路由53的地理位置路由限制对网站的访问: (地理位置限制只是限制我的网站的首次发布。这不是出于安全原因。这意味着限制只需要对公众有效) 这让我有点担心,因为我的负载平衡器仍然可以从任何地方访问。所以我担心我的负载平衡器会被谷歌或其他什么东西索引,然后我所在地区以外的人就能访问这个网站 这有什么解决办法吗?我是否以错误的方式通过位置限制访问?是否有办法在ELB的安全组中指定它只接收来自我的DNS的入站流量(当然,我还必须指定允许来自边缘位置的入站流量用于我的静态内容,但这不是问题) 注意:为安全组选择入站规则时,在“类型”下有一个选项可选择“DNS(UDP)”或“DNS(TCP)”。我尝试为我的ELB添加两个DNS类型(和IP Address=“anywhere”)的规则,但这并没有限制仅通过我的DNS访问ELBAmazon web services 按国家限制网站访问,amazon-web-services,dns,geolocation,amazon-route53,Amazon Web Services,Dns,Geolocation,Amazon Route53,我正在使用AWS托管我的网站 该网站位于2个ec2实例上,负载均衡器(ELB)在它们之间平衡流量 目前,我正在使用我的DNS(路由53)通过路由53的地理位置路由限制对网站的访问: (地理位置限制只是限制我的网站的首次发布。这不是出于安全原因。这意味着限制只需要对公众有效) 这让我有点担心,因为我的负载平衡器仍然可以从任何地方访问。所以我担心我的负载平衡器会被谷歌或其他什么东西索引,然后我所在地区以外的人就能访问这个网站 这有什么解决办法吗?我是否以错误的方式通过位置限制访问?是否有办法在EL
谢谢。实现地理IP限制最可靠的方法是使用地理位置数据库或服务API,并在应用程序级别实现它 例如,对于几乎任何语言的网站,在每个页面请求的开头添加测试,将客户端IP与geo IP数据库或服务进行比较,并处理来自那里的响应是非常简单的 在应用程序级别,管理您接受/拒绝的国家/地区以及根据需要记录这些事件比在网络级别更容易 基于IP的地理位置数据通常是可靠的,并且有许多数据来源。虽然您可能在很多方面信任AWS,但我确实认为有许多可靠的第三方geo IP dat来源,这些来源主要关注这些数据
- 提供一个公共HTTP API来搜索IP地址的地理位置。每小时最多允许10000次查询
- 是一个免费的IP地理定位数据库,供个人或商业使用
如果您的应用程序使用数据库,则这些地理数据库很容易在您的应用程序中导入和引用。在CloudFront中可以找到简单的解决方案。实际上,有两种解决方案: CloudFront可以使用其GeoIP数据库为您执行阻止 当用户请求您的内容时,无论用户位于何处,CloudFront通常都会提供所请求的内容。如果您需要阻止特定国家/地区的用户访问您的内容,您可以使用CloudFront地理限制功能[…] 您可以配置允许哪些国家/地区使用CloudFront,哪些国家/地区被拒绝使用CloudFront。您还可以配置存储在S3中的静态页面,这些页面将显示给被拒绝的用户。(您还可以为可能发生的其他CloudFront错误配置静态自定义错误页面,并将这些页面存储在S3中,CloudFront将在需要时获取这些页面) …或… CloudFront可以使用
CloudFront Viewer国家/地区:
标题将位置信息传递回您的服务器,并且您的应用程序代码可以根据该标题附带的内容执行阻止操作。传入的请求如下所示(为了清晰起见,某些头被屏蔽或删除):
CloudFront根据请求页面和查看者的国家/地区以及任何其他白名单标题的组合缓存响应,因此它将独立地正确缓存拒绝的响应以及允许的响应
以下是有关如何启用CloudFront查看器国家/地区:
标题的详细信息:
如果希望CloudFront根据请求来自的国家/地区缓存对象的不同版本,请配置CloudFront以将CloudFront Viewer国家/地区标头转发到您的来源地。CloudFront自动将请求来自的IP地址转换为两个字母的国家/地区代码
当然,您也可以同时启用这两项功能,让CloudFront进行阻止,同时仍然让您的应用程序了解允许通过的位置的国家代码
但是,负载平衡器仍然向世界开放,您如何解决这个问题呢 CloudFront最近也解决了这个问题,它使用了自定义的源标题。这些是CloudFront随每个请求发送到源服务器的秘密自定义头 您可以识别由CloudFront转发到自定义源站的请求。如果您想知道用户是否正在绕过CloudFront[…],这将非常有用 假设您向CloudFront添加了一个自定义头:
X-Yes-This-Request-Is-Legit: TE9MIHdoYXQgd2VyZSB5b3UgZXhwZWN0aW5nIHRvIHNlZT8=
线路的噪音是什么?没有什么,真的,只是一个虚构的秘密值,只有您的服务器和CloudFront知道。配置您的web服务器,以便如果传入请求中不存在此标头和值,那么访问将被拒绝——这是一个未通过CloudFront的请求
当然,不要使用上述秘密。。。自己编吧。这完全是武断的
适用于任何GeoIP限制策略的警告:它并不完美。CloudFront。我有一篇帖子详细解释了如何使用Route53:将位置列入白名单/黑名单
就您的ELB向公众公开而言,这不应该是一个问题,因为通过端口80/443向ELB发出的任何请求上的主机头都与您的域名不匹配,这意味着对于大多数web服务器,将返回404或类似的名称 有一种使用AWS WAF的方法 您可以选择-resource
X-Yes-This-Request-Is-Legit: TE9MIHdoYXQgd2VyZSB5b3UgZXhwZWN0aW5nIHRvIHNlZT8=