我正在寻求澄清我认为是EC2安全组潜在的问题。
我正在build立一个连接到Linux实例的安全组。 我为HTTP和HTTPS访问创build了“任何地方”规则。
对于我的SSH规则,亚马逊教程说我应该限制入站访问我的公共IP地址 。
我没有得到的是如果你的公共IP地址是dynamic的,那么这是安全的还是可行的?
我的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一样简单,如果它不同,则更新它。 当然,运行这样的脚本可能会引发更多的安全问题:)
尽pipe在实际情况下将sshstream量限制为只有可信的IP源是很好的,但是使ssh安全的事情是使用私钥和合理的configuration。
要考虑的重要事项:
你也可以做一些事情来摆脱与蛮力攻击相关的“噪音”:
限制通过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添加到安全组以允许特定端口上的通信