【问题标题】:Why is it a Bad Idea To Allow Any IP Address to Access My EC2 Instance?为什么允许任何 IP 地址访问我的 EC2 实例是个坏主意?
【发布时间】:2018-04-02 21:43:51
【问题描述】:
为什么允许任何 IP 地址在组证券中访问我的 EC2 实例是一个坏主意,我会做些什么来避免这种情况,如果用户在 EC2 服务器上运行 nodejs webapp 时将如何访问它?
【问题讨论】:
标签:
amazon-web-services
web
service
amazon
【解决方案1】:
显然,对于很多用例,您将不得不允许任何 IP 地址连接到它 - 例如,如果您正在运行一个公共网站,您将允许来自任何 IP 地址的流量到端口 80(和 443如果是 SSL)。
您不想做的是允许来自任何 IP 的流量到其他人没有业务使用的端口 - 例如,如果您在其上运行 SQL Server,您不希望允许全球访问端口1433.
如果您这样做,我向您保证,在很短的时间内,您会在日志中看到成千上万次尝试登录到您的服务器 - 他们将 24x7x365 运行 24x7x365 尝试输入密码 - 这适用于任何服务在任何端口上,这就是为什么您要完全阻止根本不使用的端口,并且只允许需要连接的用户使用来自已知 IP 地址的流量。
【解决方案2】:
我只允许通过 iptables 连接 HTTP(端口 80)和 HTTPS(端口 443)。
您只能为自己的 IP 添加 SSH(端口 22)访问。
我使用初始化脚本,但可能还有一种方法可以通过安全组的 Amazon Web 表单来实现。
#! /bin/sh
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
iptables -A INPUT -s 1.2.3.4/32 -p tcp -m tcp --dport 22 -j ACCEPT