Amazon EC2安全组入站规则与dynamicIP

我正在寻求澄清我认为是EC2安全组潜在的问题。

我正在build立一个连接到Linux实例的安全组。 我为HTTP和HTTPS访问创build了“任何地方”规则。

对于我的SSH规则,亚马逊教程说我应该限制入站访问我的公共IP地址

  1. 我没有得到的是如果你的公共IP地址是dynamic的,那么这是安全的还是可行的?

  2. 我的IP地址是dynamic的,那么当我的ISP更改我的公共IP时,会发生什么情况,我不能再ssh到我的实例?

链接到我正在使用的设置指南: http : //docs.aws.amazon.com/AWSEC2/latest/UserGuide/get-set-up-for-amazon-ec2.html (“创build安全组”的第7步“这对我来说似乎是个问题)

我没有得到的是如果你的公共IP地址是dynamic的,那么这是安全的还是可行的?

如果您发现您的IP不会经常更改,或者您只需要短时间访问,此解决scheme就可以工作。 它增加了额外的安全层,因为SSH不会暴露在您提供的CIDR之外的stream量。

如果一个特定的CIDR不起作用,你可以尝试在你的ISP可能使用的或更多的CIDR范围内,这仍然会限制大部分互联网的访问,这是一个安全的胜利。

当我的ISP更改我的公共IP时,会发生什么,我不能再ssh到我的实例?

您可以login到AWS控制台,或者使用CLI来即时更新安全组规则。

您可以编写一个与CLI直接交互的脚本。 它可以像检查Port 22 rule一样简单,如果它不同,则更新它。 当然,运行这样的脚本可能会引发更多的安全问题:)

IP防火墙是保护SSH安全的最佳方式吗?

尽pipe在实际情况下将sshstream量限制为只有可信的IP源是很好的,但是使ssh安全的事情是使用私钥和合理的configuration。

要考虑的重要事项:

  • 添encryption码到您的SSH私钥
  • 禁用密码validationSSH
  • 禁用rootlogin到SSH
  • 审核SSH公钥的所有用户帐户

你也可以做一些事情来摆脱与蛮力攻击相关的“噪音”:

  • 在更高的端口上运行ssh
  • 使用像fail2ban这样的软件,它可以dynamic地logging多次失败的尝试,并在指定的时间段内阻止IP范围

限制通过IP地址访问您的SSH服务器是可以的,但SSH并不依赖于它的安全性。 如果您禁用密码login( PasswordAUthentication no )并仅使用私钥身份validation,则没有您的私钥就无法进入。 它是安全的。

换句话说,如果你不想要的话,你不必担心防火墙规则。

您可以将CIDR范围添加到安全组,代表您的ISP可以分配给您的所有IP的超集。

要么,要么使用AWS APIdynamic更新您的安全组。

这个老问题有几个更近的解决scheme:

从AWS内部: 如何使用AWS Lambda自动更新Amazon CloudFront和AWS WAF的安全组

从dynamic源(node.js脚本)远程更新: aws-ec2-ssh-secgroup-update节点脚本

从dynamic源远程更新(Python脚本): 自动将当前公共IP添加到安全组以允许特定端口上的通信