我已经为 PayPal IPN 编写了一个 Web 钩子,并且我只想允许从端口 80/443 上的 PayPal 服务器访问托管端点的 EC2 实例。
在 EC2 安全组控制台中,我只能按 IP/范围进行过滤。这还不够,因为 PayPal 表示他们会随机更改 IP 地址,且不会提前通知,因此必须使用主机名。
我在这里看到过一些建议扩大 IP 阻止范围等的答案,但没有真正的直接解决方案。一个建议的解决方案是使用 AWS API 更新安全组。
这是最好的选择吗?我可以做的是安排一个计划任务来比较 PayPal 主机解析的当前 IP 与最后一个已知 IP 地址。如果它们不同,则更新 AWS EC2 组。
我会在同一台机器上运行该任务,因为如果机器停止,那么无论如何都无法访问端点。
这是最合适的解决方案吗?我家里有类似问题,我也会这么做。
答案1
过滤是否必须在 AWS 级别进行。您可以在实例上添加额外的软件防火墙(或作为 IGW 和实例之间的另一个实例),Pfsense 应该允许基于主机名的防火墙阻止。
答案2
安全组不进行主机名过滤,只进行 IP 范围或 AWS 内的其他逻辑引用。
由于 AWS 为 SG 提供了 API,您可以在 IP 地址发生变化时更新它们,但这种方法对于生产服务来说听起来有点太脆弱了。
还有许多其他选项可用,但它们需要做更多工作。例如,设置代理将允许您通过主机名控制访问。
AWS 在此处提供了有关安装和配置 squid 的详细指南https://aws.amazon.com/articles/6884321864843201
这是一个简短的片段,可以让您了解所涉及的内容:
$ sudo vim /etc/squid/squid.conf
acl s3 dstdom_regex .*s3\.amazonaws\.com
acl s3 dstdom_regex .*s3\.ap-southeast-2\.amazonaws\.com
acl s3 dstdom_regex .*s3\.ap-southeast-1\.amazonaws\.com
http_access allow localnet s3
$ sudo service squid restart