EC2 VPC 实例 - 过滤端口

Posted

技术标签:

【中文标题】EC2 VPC 实例 - 过滤端口【英文标题】:EC2 VPC Instance - Ports are filtered 【发布时间】:2015-12-13 02:14:23 【问题描述】:

我已使用默认安全组配置我的服务器,该安全组具有以下入站规则:

| Type | Protocol | Port Range | Source |
| All TCP | TCP | 0-65535 | 0.0.0.0/0 |
| All UDP | UDP | 0-65535 | 0.0.0.0/0|

使用这些规则,netstat 显示以下输出:

netstat -atn
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:5432            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:1113            0.0.0.0:*               LISTEN     
tcp        0      0 10.0.1.31:2113          0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:2113          0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:11300           0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:11211           0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN     
tcp6       0      0 :::5432                 :::*                    LISTEN     
tcp6       0      0 :::3306                 :::*                    LISTEN     
tcp6       0      0 :::6379                 :::*                    LISTEN  

所以,理论上,我应该能够使用 TCP 从任何 IP 地址连接到端口 1113。但这不起作用,IP 地址显示为已过滤,您可以在以下输出中看到:

似乎正常(打开且未过滤)的唯一端口是 22 和 80。这是我使用 nmap 测试它们时得到的输出:

PORT     STATE    SERVICE
22/tcp   open     ssh
80/tcp   open     http
1113/tcp filtered ltp-deepspace
2113/tcp filtered unknown
3306/tcp filtered mysql
6379/tcp filtered unknown

我什至尝试为我的 IP 和端口 1113 添加自定义入站规则,但结果是一样的。

我怀疑某些防火墙在我的实例中阻止了这些端口上的流量,但我不确定如何检查。

需要注意的一点是,此实例位于 Amazon VPC 中。但是,此实例的网络 ACL 具有以下入站规则,应该允许来自所有端口的收入通信:

|Rule # | Type | Protocol | Port Range | Source | Allow / Deny |
| 100 | ALL Traffic | ALL | ALL | 0.0.0.0/0 |ALLOW |

对这里可能出现的问题有什么想法吗?

非常感谢您的帮助!

【问题讨论】:

这是通过互联网网关还是通过 NAT 实例连接? @VernBurton 这是一个互联网网关,我相信。不知道如何检查。 lsof -i:3306 的输出是什么样的? 输出为空(对于 3306 和 1113,以防万一您指的是那个端口)。唯一有输出的端口是 80 端口。 基于此,当您在防火墙上打开端口时,服务器上似乎没有实际运行以接受连接的服务。 lsof -i 向我们显示正在使用这些端口的程序和服务,并且它没有显示任何内容意味着没有任何东西响应 1113 的呼叫。您希望连接什么服务?可以用 netcat 监听那个端口然后测试吗? 【参考方案1】:

对于 Windows AMI,这可能是由于启用了 Windows 防火墙。有关详细信息,请参阅我对 @Miles_Gillham 答案的编辑

【讨论】:

【参考方案2】:

[我知道这是一篇旧帖子,但我今天被同样的事情所困扰,并遇到了这个问题。已扩展以添加适用于 Windows AMI 的步骤]

总结

当您从新的 AMI 启动新的 EC2 实例时,似乎存在将本地防火墙设置为过滤除 SSH 之外的所有内容的情况。

现在这可能是较新 AMI 上的默认设置,或者是诸如 fail2ban 之类的工作。如果您使用的是 Windows AMI,这可能是 Windows 防火墙。

症状如您所描述 - 您有一个面向公众的 IP 地址(直接附加或通过弹性 IP),您有许可的安全组,其他一切都很好。来自另一台工作服务器的 nmap(注意,AWS 不喜欢人们从 EC2 实例甚至在您自己的服务器上运行 nmap)将显示端口 22 已打开,但其他所有内容均已过滤。

Linux

TLDR;为了刷新规则,快速修复可能很容易:

iptables -F

理想情况下,首先运行此命令以列出违规规则:

iptables -L

但是你应该好好看看为什么要这样设置。有可能诸如 firewalld 之类的东西正在运行,它会与规则发生冲突,您可以选择配置或禁用它。这些会告诉你它是否正在运行:

firewall-cmd --status
firewall-cmd --get-services

当然还有其他防火墙服务。

一旦您认为自己做对了,请确保您重新启动服务器以确保一切正常,而不是恢复到紧张状态(服务方面)。

窗口

如果您使用的是 Windows AMI,则需要调整防火墙。

    转到控制面板 > 系统和安全 > Windows Defender 防火墙 从这里,您可以将其关闭并仅依靠您的 AWS 安全性(不推荐)或选择性地启用某些应用程序/端口。

【讨论】:

【参考方案3】:

我知道这是旧帖子,但我认为它也可能对其他人有所帮助。我在运行 RHEL 7.6 时遇到了这个问题。我不得不重新启用防火墙并在防火墙规则中添加端口。然后它就像魅力一样。

【讨论】:

【参考方案4】:

对于那些正在寻求答案的人。这是因为您的 Linux 系统中还有一个额外的防火墙。例如,如果您使用的是 Ubuntu,您可能需要这样做:sudo ufw disable

请参阅此link 了解更多信息。

【讨论】:

以上是关于EC2 VPC 实例 - 过滤端口的主要内容,如果未能解决你的问题,请参考以下文章