gpt4 book ai didi

amazon-web-services - 为什么我的 AWS ECS 应用程序需要 "weird"TCP 端 Eloquent 能从 ECR 中提取?

转载 作者:IT老高 更新时间:2023-10-28 21:22:23 26 4
gpt4 key购买 nike

我在前面使用带有 NLB 的 ECS。 ECS 正在从 ECR 中提取图像。我无法理解的是,为什么 ECS 要求我打开所有 TCP 端 Eloquent 能从 ECR 中拉取?

2 621567429603 eni-0f5e97a3c2d51a5db 18.136.60.252 10.0.12.61 443 55584 6 13 6504 1537798711 1537798719 ACCEPT OK
2 621567429603 eni-0f5e97a3c2d51a5db 10.0.12.61 54.255.143.131 44920 443 6 13 5274 1537798711 1537798719 ACCEPT OK
2 621567429603 eni-0f5e97a3c2d51a5db 54.255.143.131 10.0.12.61 443 44952 6 13 6504 1537798711 1537798719 ACCEPT OK
2 621567429603 eni-0f5e97a3c2d51a5db 10.0.12.61 18.136.60.252 55584 443 6 15 5378 1537798711 1537798719 ACCEPT OK
2 621567429603 eni-0f5e97a3c2d51a5db 10.0.12.61 18.136.60.252 55612 443 6 15 5378 1537798711 1537798719 ACCEPT OK
2 621567429603 eni-0f5e97a3c2d51a5db 52.219.36.183 10.0.12.61 443 51892 6 19 11424 1537798711 1537798719 ACCEPT OK
2 621567429603 eni-0f5e97a3c2d51a5db 10.0.12.61 54.255.143.131 44908 443 6 14 1355 1537798711 1537798719 ACCEPT OK
2 621567429603 eni-0f5e97a3c2d51a5db 52.219.36.183 10.0.12.61 443 51912 6 31807 44085790 1537798711 1537798719 ACCEPT OK
2 621567429603 eni-0f5e97a3c2d51a5db 18.136.60.252 10.0.12.61 443 55612 6 12 6452 1537798711 1537798719 ACCEPT OK

我的流日志在上面。 10.0.0.0/8 是我的 VPC 私有(private)地址。注意说第一次 SRC: 18.136.60.252:443 正在访问 10.0.12.61:55584 为什么这个目的端口?

然后是下一行2 621567429603 eni-0f5e97a3c2d51a5db 10.0.12.61 54.255.143.131 44920 443 6 13 5274 1537798711 1537798719 ACCEPT OK。为什么我的 ECS 使用源端口 44920 请求数据。我在问,所以我知道如何打开正确的端口。目前由于端口太随机,我需要打开所有东西

最佳答案

当它说 18.136.60.252:443 正在访问 10.0.12.61:55584 时,我不会说 18.136.60.252 正在“访问”您的本地 VPC IP。我宁愿说“18.136.60.252”正在通过已经建立的 TCP 连接(由 ecs-agent 发起在你的例子中)。

您无需专注于应该允许哪个源端口。您宁愿告诉操作系统(防火墙)“让响应进入已经建立的连接”。在 iptables 中是这样的:

从实例到网络,访问远程443端口:

iptables -A OUTPUT -o eth0 -p tcp -m multiport --dports 80,443 -j ACCEPT

从远程主机到您的实例,让响应返回:

iptables -A INPUT -i eth0 -p tcp -m multiport --sports 80,443 -m state --state RELATED,ESTABLISHED -j ACCEPT
. ^ source port ^ the rule only applies to already established connections

在这里你可以找到一些更好的解释:

https://unix.stackexchange.com/q/323546/18256

https://superuser.com/a/1171322/131073

Why is my ECS requesting data using source port 44920

操作系统是将这些端口分配给ECS代理用作源端口的操作系统,它只是一个免费的,随机选择的。


在 OP 和自学澄清后编辑

So in AWS NACL level I should allow all ephemeral port range?

根据AWS NACL docs :

In practice, to cover the different types of clients that might initiate traffic to public-facing instances in your VPC, you can open ephemeral ports 1024-65535. However, you can also add rules to the ACL to deny traffic on any malicious ports within that range. Ensure that you place the DENY rules earlier in the table than the ALLOW rules that open the wide range of ephemeral ports.

但要考虑到:

You might set up network ACLs with rules similar to your security groups in order to add an additional layer of security to your VPC. (emphasis mine)

.

And at OS level do that? If I am using docker I need to do that via Dockerfile?

我的建议是通过安全组来管理它,因为它们是“有状态的”,这意味着它们会跟踪建立的每个连接,自动允许对临时端口的“响应”,而无需配置这些规则。例如,您可以“拒绝”所有入站流量,并允许 TCP 443 用于出站流量。这确实意味着响应无法到达临时端口,它们确实可以(尽管拒绝所有传入流量),因为安全组记住了连接。查看更多信息 here :

Security group: Is stateful: Return traffic is automatically allowed, regardless of any rules

Network ACL: Is stateless: Return traffic must be explicitly allowed by rules <-- this is answering the previous question, about ephemeral ports

关于操作系统和 iptables,我将首先探索更易于配置和维护的安全组,至少对于目前的用例而言。

关于amazon-web-services - 为什么我的 AWS ECS 应用程序需要 "weird"TCP 端 Eloquent 能从 ECR 中提取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52481560/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com