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 实例 - 过滤端口的主要内容,如果未能解决你的问题,请参考以下文章
AWS Lambda 无法访问同一 VPC 中的 EC2 端口
Elastic Beanstalk EC2 实例在端口 5000 和端口 80 上响应 http 请求