03 / Learn — Network Security

クラウドのネットワークセキュリティ

クラウドのネットワークは、オンプレミスのように境界を1箇所に集約できません。AWS VPC・Azure VNet・GCP VPCそれぞれの設計思想、Security Group/NSG/Firewall Rulesによる制御、ネットワークセグメンテーション、そしてPaaSサービスへのプライベート接続まで、公開範囲を最小化するための実践的な考え方を扱います。

Why It Matters

なぜネットワーク境界がまだ重要なのか

「アイデンティティが新しい境界線」という考え方が広まった一方で、ネットワーク層の制御は依然として重要な多層防御の1枚です。IAMの権限設計がどれだけ厳格でも、データベースポートが0.0.0.0/0に開放されていれば、認証をバイパスした直接攻撃や、脆弱なミドルウェアへのエクスプロイトが成立してしまいます。ネットワークセグメンテーションは、1つの制御が突破された場合の被害範囲を限定する「爆発半径(Blast Radius)」の縮小に直結します。

デフォルトで「開いている」設定が最大のリスク源

クラウドのSecurity Group/NSG/Firewall Ruleは、意図的に許可しない限り閉じているのが原則ですが、検証用に追加した広すぎるルールが本番まで残るケースが後を絶ちません。定期的な棚卸しが不可欠です。

Architecture

典型的なネットワークセグメンテーション

Webアプリケーションを例にした典型的な3層構成です。インターネットからのトラフィックはロードバランサーで受け、パブリックサブネットとプライベートサブネットを分離し、データベースはさらに隔離されたサブネットに配置します。各層の境界でSecurity Group/NSG/Firewall Ruleによるチェックポイントを設けます。

パブリックサブネットには本来ロードバランサーやNAT Gatewayのみを配置し、アプリケーションのワークロードやデータベースはインターネットから直接到達できないプライベートサブネットに隔離するのが原則です。

Key Concepts

主要概念とAWS/Azure/GCPの対応

AWS、Azure、Google Cloudのネットワークセキュリティ主要概念の対応表
概念 AWS Azure Google Cloud
ネットワーク分離の単位 VPC VNet VPC
インスタンスレベルのステートフルフィルタ Security Group NSG (Network Security Group) Firewall Rules(ターゲットタグ/SA単位)
サブネットレベルのステートレスフィルタ Network ACL NSG(サブネット関連付け) Hierarchical Firewall Policies
集中管理型ファイアウォール AWS Network Firewall Azure Firewall Cloud Next Generation Firewall
PaaSサービスへのプライベート接続 VPC Endpoint (Gateway/Interface) Private Link Private Service Connect
VPC Segmentation Security Group NSG Firewall Rules Private Connectivity VPC Flow Logs
Common Misconfigurations

よくある設定ミス

  • 機密ポートを0.0.0.0/0へ開放 High Risk

    SSH(22)、RDP(3389)、MySQL(3306)などの管理・データベースポートが、インターネット全体からのアクセスを許可した状態で本番に残る。

  • フラットなネットワーク構成 High Risk

    Web層・アプリ層・データ層がセグメンテーションされておらず、1台の侵害がネットワーク全体への横展開を許してしまう。

  • デフォルトVPCの利用継続 Medium Risk

    アカウント作成時に自動生成されるデフォルトVPCをそのまま本番ワークロードで利用し、意図しないパブリックサブネット構成のまま運用される。

  • VPC Flow Logsの未有効化 Medium Risk

    VPC Flow Logs/NSG Flow Logs/Firewall Rules Loggingが有効化されておらず、通信の可視性がなく異常なトラフィックを検知できない。

  • PaaS接続時のパブリックエンドポイント依存 Medium Risk

    マネージドDBやオブジェクトストレージへの接続を、VPC Endpoint/Private Link/Private Service Connectを使わずパブリックインターネット経由のまま構成している。

Attack Scenario

攻撃シナリオ: 開放されたポートへの直接接続

攻撃者が対象組織のパブリックIPレンジをポートスキャンし、インターネットに開放されたデータベースポートを発見する、という想定です。

  1. 対象のパブリックIPレンジに対してポートスキャンを実施する。
  2. SSH/RDP/MySQLなど、本来インターネットに公開すべきでないポートの開放を発見する。
  3. クラウド側の設定情報を(漏洩した認証情報などから)確認し、どのSecurity Groupが該当ポートを0.0.0.0/0に開放しているかを特定する。
  4. 開放されたポートへ直接接続を試み、認証情報の総当たりやデフォルト資格情報での侵入を試みる。
bash
# 1. 対象IPに対する主要ポートのスキャン
$ nmap -p 22,3389,3306 203.0.113.10

# 2. 開放が確認できたポートへの直接接続を試行
$ mysql -h 203.0.113.10 -u root -p

# 3. (漏洩認証情報を保持している場合)0.0.0.0/0を許可しているSecurity Groupを特定
$ aws ec2 describe-security-groups --filters Name=ip-permission.cidr,Values=0.0.0.0/0

# 4. 該当グループが紐づくインスタンス/RDSを列挙し攻撃対象を絞り込む
$ aws ec2 describe-instances --filters Name=instance.group-id,Values=sg-0123456789abcdef0
Detection

検知

VPC Flow Logs / NSG Flow Logs / GCP Firewall Rules Loggingを有効化し、想定外のポート・送信元からの通信を継続的に監視します。

  • 管理ポート(22/3389)やDBポート(3306/5432等)への、社内IPレンジ以外からの接続試行。
  • 普段トラフィックのないパブリックサブネットからプライベートサブネットへの予期しない通信。
  • GuardDutyのUnauthorizedAccess:EC2/SSHBruteForceRecon:EC2/PortProbeUnprotectedPort、Microsoft Defender for CloudやGoogle Security Command Centerのネットワーク関連ファインディング。
VPC Flow Logs query (example)
SELECT srcaddr, dstaddr, dstport, action, COUNT(*) AS attempts
FROM vpc_flow_logs
WHERE dstport IN (22, 3389, 3306, 5432)
  AND action = 'REJECT'
  AND start_time > date_sub(now(), 1h)
GROUP BY srcaddr, dstaddr, dstport, action
ORDER BY attempts DESC;
Remediation

是正

広範囲に開放されたルールを特定のCIDRへ絞り込み、さらに可能な場合はインターネット経由の直接アクセス自体を廃止してSSM Session Manager等の踏み台経由に切り替えます。

bash
# 0.0.0.0/0からのSSH許可ルールを取り消す
$ aws ec2 revoke-security-group-ingress --group-id sg-0123456789abcdef0 --protocol tcp --port 22 --cidr 0.0.0.0/0

# 社内/踏み台のCIDRのみを許可する狭いルールを追加
$ aws ec2 authorize-security-group-ingress --group-id sg-0123456789abcdef0 --protocol tcp --port 22 --cidr 203.0.113.0/28

# 直接SSHをやめ、SSM Session Manager経由のアクセスに切り替える
$ aws ssm start-session --target i-0abcdef1234567890
Hands-on Lab

実際に手を動かす

このページで扱った「0.0.0.0/0に開放されたSecurity Group」の検出と是正を、実際のシナリオ形式で体験できます。Scenario → Architecture → CLI Commands → Misconfiguration → Detection → Remediation → Verificationの流れで、スキャンから是正確認までを一通り実施します。

Lab: Open Security Group を始める →
Checklist

実装チェックリスト