ネットワーク ACLでの管理ポートの制限設定

このブログシリーズ 「クラウドセキュリティ 実践集」 では、一般的なセキュリティ課題を取り上げ、「なぜ危険なのか?」 というリスクの解説から、「どうやって直すのか?」 という具体的な修復手順(コンソール、AWS CLI、Terraformなど)まで、分かりやすく解説します。
この記事では、ネットワーク ACLが0.0.0.0/0からポート22、またはポート3389への侵入を許可している状態のリスクとその対策について解説します。

ポリシーの説明
Amazon EC2 の Security Hub コントロール – AWS Security Hub
ネットワークアクセスコントロールリスト (ネットワーク ACL) が、 SSH/RDP 入力トラフィックのデフォルト TCP ポートへのアクセスを無制限に許可しているかどうかをチェックします。ネットワーク ACL インバウンドエントリが TCP ポート 22 または 3389 に対して「0.0.0.0/0」または「::/0」の送信元 CIDR ブロックを許可する場合、コントロールは失敗します。
ネットワークACLでポート22 (SSH) やポート3389 (RDP) などのリモート管理ポートが 0.0.0.0/0
からのインバウンドを許可している場合、インターネット上のあらゆる場所からこれらのポートへのアクセスが可能になります。これは、以下のような重大なセキュリティリスクを引き起こす可能性があります。
- ブルートフォース攻撃: 攻撃者は、既知のユーザー名とパスワードの組み合わせを試すことで、サーバーへの不正アクセスを試みる可能性があります。
- 脆弱性の悪用: リモート管理サービスに既知の脆弱性がある場合、攻撃者はそれを利用してサーバーに侵入する可能性があります。
- 意図しないアクセス: 設定ミスやその他の理由により、本来アクセスを許可すべきでない第三者がサーバーにアクセスしてしまう可能性があります。
対策:
これらのリスクを軽減するため、ネットワークACLを設定し、リモート管理ポートへのアクセスを必要最小限に制限することが重要です。具体的には、以下の対策を実施します。
- 送信元IPアドレスの制限: リモート管理を許可する送信元IPアドレスの範囲を、信頼できる特定のIPアドレスやIPアドレスレンジに限定します。例えば、社内ネットワークやVPN接続元のIPアドレスレンジのみを許可します。
- 不要なルールの削除: ポート22や3389への
0.0.0.0/0
からのインバウンドを許可するルールが存在する場合は、直ちに削除します。 - セキュリティグループとの併用: ネットワークACLに加えて、インスタンスにアタッチされたセキュリティグループでもインバウンドアクセスを適切に制御します。セキュリティグループはステートフルであるため、より柔軟なアクセス制御が可能です。
修復方法
AWSコンソールを用いて、ネットワークACLで不要なインバウンドルールの削除、またはより制限された送信元からのアクセスに修正を行います。
- AWSにログインします。
- ナビゲーションペインから VPC を選択します。
- 左側のメニューから ネットワーク ACL を選択します。
- 該当するネットワークACLを選択します
- アクションからインバウンドルールを編集をクリック
- ポート22 (SSH) またはポート3389 (RDP) に対して、送信元が
0.0.0.0/0
となっているルールを探します。 - 該当するルールを削除するか、送信元をより具体的なIPアドレス範囲(例えば、管理者のプライベートIPアドレス範囲やVPNのIPアドレス範囲など)に変更します。
- 変更の保存 ボタンをクリックします。

Terraformでの修復手順
TerraformでネットワークACLのルールを管理している場合、該当するインバウンドルールからポート22または3389への 0.0.0.0/0
のアクセスを削除するか、より制限された cidr_block
に修正します。
resource "aws_network_acl_rule" "inbound_ssh" {
network_acl_id = aws_network_acl.your_nacl.id
rule_number = 100
egress = false
protocol = "tcp"
rule_action = "DENY" # または "ALLOW" であれば cidr_block をより制限
port_range {
from = 22
to = 22
}
cidr_block = "0.0.0.0/0" # この行を削除するか、より具体的な CIDR に変更
}
resource "aws_network_acl_rule" "inbound_rdp" {
network_acl_id = aws_network_acl.your_nacl.id
rule_number = 110
egress = false
protocol = "tcp"
rule_action = "DENY" # または "ALLOW" であれば cidr_block をより制限
port_range {
from = 3389
to = 3389
}
cidr_block = "0.0.0.0/0" # この行を削除するか、より具体的な CIDR に変更
}
上記の例では、ポート22と3389への 0.0.0.0/0
からのインバウンドアクセスを明示的に拒否する設定を示しています。もし既存の ALLOW
ルールを修正する場合は、該当する aws_network_acl_rule
リソースの cidr_block
を適切な値に更新してください。
最後に
今回は、ネットワークACLにおいて、リモート管理に利用されるポート22や3389が全世界 (0.0.0.0/0
) からアクセス可能な状態がもたらすセキュリティリスクと、その具体的な対策について解説しました。クラウド環境における基本的なセキュリティ対策として、ネットワークレベルでの適切なアクセス制御の重要性を再認識し、リスクを低減するための設定を確実に行うことを強く推奨します。
この問題の検出は弊社が提供するSecurifyのCSPM機能で簡単に検出及び管理する事が可能です。
運用が非常に楽に出来る製品になっていますので、ぜひ興味がある方はお問い合わせお待ちしております。
最後までお読みいただきありがとうございました。この記事が皆さんの役に立てば幸いです。