【问题标题】:AWS - Security Groups not opening portsAWS - 安全组未打开端口
【发布时间】:2020-12-10 11:34:48
【问题描述】:

我在 AWS 上创建了一个 Linux t3a.nano EC2,除了启动它并通过 SSH 连接到它之外,我没有在实例上做任何事情。

我想打开 2 个端口,端口 80 和 3000,为此,我创建了一个安全组并将这两个端口都添加到入站规则中。

根据 AWS 文档,您需要在其他文件中打开端口,但如果我连接到实例并列出打开的端口,我的安全组上的端口都没有监听,只有 22 个,但那是默认打开。

我正在运行这个命令来列出端口: sudo netstat -antp | fgrep LISTEN

我尝试的其他步骤:

  1. 检查我的 ACL,将在下面附上一张配置图片,并没有改变任何看起来没问题的东西。
  2. 已检查实例是否使用了正确的安全组。
  3. 停止并启动实例。
  4. 创建了一个弹性 IP 并将其与实例相关联,以获得永久的公共 IP 地址。

关于我可能缺少哪些步骤的任何建议?

【问题讨论】:

  • SG 用于过滤进出您的实例的流量(如防火墙)。在您的实例内部,它完全取决于您将要运行的程序以侦听特定端口。就像你可以运行 Nginx 监听 80 端口,sshd 监听 22 端口,如果 SG 允许这些端口,那么流量将被路由到你的实例,否则它不会
  • 谢谢,Oli,您的评论真的很有帮助,我运行了一个节点服务器并且能够访问 3000 端口。

标签: linux amazon-web-services networking amazon-ec2 aws-security-group


【解决方案1】:

您正在从实例内部检查端口。安全组 (SG) 在您的实例外部工作。

您可以将它们想象为您的实例周围的气泡。随后,实例不知道它们的存在。这可以如下图所示进行可视化,其中 SG 是实例外部的障碍。只有当 SG 允许流量进入时,您的实例才能通过使用常规软件级防火墙进一步限制流量。

要打开/阻止实例本身的端口,您必须使用常规防火墙,例如 ufw。默认情况下,实例上的所有端口都将打开,至少在使用 Amazon Linux 2Ubuntu 时是这样。

因此,通过您的设置,将允许 22、3000 和 80 罐的入站流量到实例。

【讨论】:

  • 谢谢,您对气泡的解释有助于更好地理解安全组和 EC2 背后的逻辑。
  • @davidrl1000 没问题。如果答案有帮助,我们将不胜感激。
【解决方案2】:

更新 - 响应

多亏了上面的 cmets,我才走到这一步!

我想打开端口 3000 来托管 Web 服务,所以我完成了原始问题的所有步骤,我缺少的步骤是运行服务器以在端口 3000 上执行某些操作。运行节点后,我是能够看到端口在内部打开并且能够向该端口发出请求。

安全组保持不变,但现在如果我列出端口,这就是我得到的:sudo netstat -antp | fgrep LISTEN

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 2018-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多