the*_*yuv 5 dns geolocation amazon-web-services amazon-route53
我正在使用AWS托管我的网站。
该网站位于2个ec2实例上,并带有一个负载均衡器(ELB)来平衡它们之间的流量。
目前,我正在使用DNS(Route 53)通过Route 53的地理位置路由来限制对网站的访问:http : //docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html#routing -政策地理
(地理位置限制仅是为了限制我的网站的初始发布。这不是出于安全原因。这意味着该限制只需要对一般公众有效)
这让我有些担心,因为我的负载均衡器仍然可以从任何地方访问。因此,我担心我的负载均衡器会被Google或其他索引编制索引,然后我所在地区以外的人将能够访问该网站。
是否有针对此的修复程序?我是否以错误的方式限制了位置访问?是否有办法在ELB的安全组中指定它仅接收来自我的DNS的入站流量(当然,那我还必须指定我的静态内容也允许来自边缘位置的入站流量,但这不是问题)?
注意:为安全组选择入站规则时,有一个选项,在“类型”下选择“ DNS(UDP)”或“ DNS(TCP)”。我尝试为我的ELB的两种DNS类型(和IP地址=“ anywhere”)添加两个规则,但这并不限制对ELB的访问只能通过我的DNS。
谢谢。
CloudFront 中提供了简单的解决方案。两种解决方案,实际上:
CloudFront 可以使用其 GeoIP 数据库为您进行阻止...
当用户请求您的内容时,无论用户位于何处,CloudFront 通常都会提供请求的内容。如果您需要阻止特定国家/地区的用户访问您的内容,您可以使用 CloudFront 地理限制功能[...]
http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/georestrictions.html
您可以将 CloudFront 配置为允许或拒绝哪些国家/地区。您还可以配置存储在 S3 中的静态页面,这些页面显示给被拒绝的用户。(您还可以为可能发生的其他 CloudFront 错误配置静态自定义错误页面,并将这些页面也存储在 S3 中,CloudFront 将在需要时获取它们)。
...或者...
CloudFront 可以使用CloudFront-Viewer-Country:标头将位置信息传递回您的服务器,您的应用程序代码可以根据该标头附带的内容进行阻止。传入的请求看起来像这样(为了清楚起见,一些标头被删除或删除):
GET / HTTP/1.1
Host: example.com
X-Amz-Cf-Id: 3fkkTxKhNxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx==
Via: 1.1 cb76b079000000000000000000000000.cloudfront.net (CloudFront)
CloudFront-Viewer-Country: US
CloudFront-Forwarded-Proto: https
Accept-Encoding: gzip
Run Code Online (Sandbox Code Playgroud)
CloudFront 会根据请求的页面和查看者的国家/地区以及任何其他列入白名单的标头的组合缓存响应,因此它会独立地正确缓存您拒绝的响应和允许的响应。
以下是有关如何启用CloudFront-Viewer-Country:标头的更多信息:
如果您希望 CloudFront 根据请求来自的国家/地区缓存不同版本的对象,请将 CloudFront 配置为将 CloudFront-Viewer-Country 标头转发到您的源。CloudFront 会自动将请求来自的 IP 地址转换为两个字母的国家/地区代码。
或者,当然,您可以启用这两个功能,让 CloudFront 进行阻止,同时仍然让您的应用程序了解允许通过的位置的国家/地区代码。
但是,您如何解决负载均衡器仍然对外开放的问题呢?
CloudFront 最近也通过自定义源头解决了这个问题。这些是 CloudFront 随每个请求发送到您的源服务器的秘密自定义标头。
您可以识别由 CloudFront 转发到您的自定义源的请求。如果您想知道用户是否绕过 CloudFront[...]
http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/forward-custom-headers.html
因此,假设您向 CloudFront 添加了一个自定义标头:
X-Yes-This-Request-Is-Legit: TE9MIHdoYXQgd2VyZSB5b3UgZXhwZWN0aW5nIHRvIHNlZT8=
Run Code Online (Sandbox Code Playgroud)
什么是线路噪音?没有什么,真的,只是一个只有您的服务器和 CloudFront 知道的虚构的秘密值。配置您的 Web 服务器,以便如果传入请求中不存在此标头和值,则拒绝访问——这是一个未通过 CloudFront 的请求。
不要使用上面的秘密,当然……你自己编造。这完全是任意的。
适用于任何GeoIP 限制策略的警告:它并不完美。CloudFront声称准确度为 99.8%。
实现地理IP限制最可靠的方法是使用地理位置数据库或服务API,并在应用程序级别实现。
例如,对于几乎任何语言的网站,在每个页面请求的开头添加测试,并将客户端 IP 与 geo IP 数据库或服务进行比较,并处理来自那里的响应都是非常简单的。
在应用程序级别,管理您接受/拒绝的国家/地区并根据需要记录这些事件比在网络级别更容易。
基于 IP 的地理位置数据通常是可靠的,并且该数据有很多来源。虽然您可能在很多事情上信任 AWS,但我确实认为有许多可靠的第三方来源提供地理 IP 数据,专注于这些数据。
如果您的应用程序使用数据库,那么这些地理数据库很容易在您的应用程序中导入和引用。
| 归档时间: |
|
| 查看次数: |
4499 次 |
| 最近记录: |