在AWS EC2中实现RDP访问而不暴露实例给公众

86次阅读
没有评论

问题描述

计划在AWS EC2实例上进行其Web应用程序的开发,并希望禁用除RDP(3389)端口外的所有出站端口。RDP端口将仅对特定的AWS服务(主机)开放。用户只能在登录AWS控制台后访问主机。用户想知道是否有任何AWS服务可以用作主机,类似于Azure的Bastion Host。

解决方案

以下操作可能会因版本差异而有所不同,请确保按照最新文档进行操作。

为了实现这样的访问需求,您可以使用AWS SSM(System Manager)来控制用户只能通过AWS控制台访问授权的EC2实例,而无需使用Bastion Host。以下是操作步骤:

  1. 安装和验证SSM代理: 在Windows或Linux实例上安装并验证SSM代理。您可以参考AWS的文档《为Windows Server手动安装SSM代理》。

  2. 设置IAM策略: 创建一个IAM策略,该策略将授权用户通过SSM启动会话。您可以参考AWS的文档《Session Manager的附加样例IAM策略》。您可以基于实例的标签或特定的实例ID限制访问。以下是一个示例用户IAM策略:

{
    "Sid": "ssmpolicy",
    "Effect": "Allow",
    "Action": "ssm:StartSession",
    "Resource": "arn:aws:ec2:eu-west-1:xxxxxxxxx:instance/*",
    "Condition": {
        "StringLike": {
            "ssm:resourceTag/Name": [
                "Instance_app_1",
                "Instance_app_2"
            ]
        }
    }
}
  1. 为实例设置IAM角色: 为您的EC2实例设置IAM角色,并使用AWS提供的AmazonSSMManagedInstanceCore托管策略。

通过完成上述步骤,您就可以安全地实现通过AWS控制台连接Windows实例。具体连接步骤请查阅AWS的文档《使用Session Manager连接Windows实例》。

在用户通过AWS控制台访问EC2实例时,会出现如下提示,只有在为每个实例和用户正确分配IAM角色和策略的情况下,用户才能访问:

在AWS EC2中实现RDP访问而不暴露实例给公众

总结

通过使用AWS SSM和适当的IAM策略,您可以在不暴露实例给公众的情况下,实现对EC2实例的RDP访问。这种方法使访问更加安全,并且仅允许经过授权的用户通过AWS控制台连接到实例。

正文完