説明
セキュリティグループで 0.0.0.0/0 または ::/0 から TCP 3389 への通信を許可すると、すべてのアドレスから RDP 接続を試みられるルールになります。実際にインターネットから到達できるかどうかは、リソースのアドレス、ルーティング、サービスの待ち受け状態にも左右されます。このルール自体が公開アドレスを作成したり、ログインを許可したりするわけではありません。
インターネットから到達可能な RDP サービスは、自動スキャン、パスワード推測、漏えいした認証情報を使う攻撃の対象になり得ます。管理接続は VPN や踏み台などの管理された経路に制限する必要があります。
想定される影響
- インターネットから到達できる場合、外部のクライアントがリモート接続やログインを試みることができます。
- 弱い認証設定や RDP サービスの脆弱性が悪用されると、サーバーが侵害される可能性があります。
対処方法
- TCP 3389 をすべての IPv4 または IPv6 アドレスに許可するルールを削除し、必要な管理者の送信元だけを許可してください。
- VPN、踏み台、承認された管理ネットワークを使い、認証の保護とサービスの更新を維持してください。
- ほかのセキュリティグループや SSH・WinRM などの管理ポートも確認し、正常な管理接続が成功し、不要な外部接続が遮断されることを試験してください。
例
同じセキュリティグループで RDP の送信元範囲を比較する部分的な例です。対象 VPC とリソースの関連付けは実際の環境に合わせて設定してください。
変更前
hcl
resource "aws_security_group" "windows_admin" {
name = "allow-rdp"
description = "RDP open to the internet"
ingress {
description = "RDP from anywhere"
from_port = 3389
to_port = 3389
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
}
TCP 3389 にすべての IPv4 アドレスを許可しています。宛先にインターネットから到達できる場合、RDP 接続の試行を受ける可能性があります。
変更後
hcl
resource "aws_security_group" "windows_admin" {
name = "allow-rdp"
description = "RDP restricted to admin network"
ingress {
description = "RDP from admin network only"
from_port = 3389
to_port = 3389
protocol = "tcp"
cidr_blocks = ["10.20.0.0/24"]
}
}
送信元を 10.20.0.0/24 に制限しています。プライベートアドレスだから信頼するのではなく、実際に承認された管理ネットワークかを確認してください。このルールは VPN やルーティングを作成しません。