Secure Steady
通信制限(エグレス) - ネットワーク通信制限(エグレス制御) の使い方・オプション・サンプル

通信制限(エグレス) - ネットワーク通信制限(エグレス制御)

サーバーやネットワークから外部への送信(アウトバウンド)通信を制限・監視するセキュリティ対策。侵入後の C2 通信やデータ持ち出しを防ぐラストラインとして機能する。

実例

iptables でエグレスをデフォルト拒否し、必要なポートのみ許可

bash
# デフォルトでアウトバウンドを全拒否
iptables -P OUTPUT DROP

# DNS(53)を許可
iptables -A OUTPUT -p udp --dport 53 -d 10.0.0.2 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -d 10.0.0.2 -j ACCEPT

# HTTPS(443)を許可
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT

# 確立済みコネクションの応答を許可
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

AWS Security Group でアウトバウンド通信を HTTPS のみに制限

bash
# AWS Security Group - アウトバウンドルール(Terraform)
resource "aws_security_group_rule" "egress_https" {
  type              = "egress"
  from_port         = 443
  to_port           = 443
  protocol          = "tcp"
  cidr_blocks       = ["0.0.0.0/0"]
  security_group_id = aws_security_group.app.id
  description       = "Allow HTTPS outbound"
}

resource "aws_security_group_rule" "egress_deny_all" {
  type              = "egress"
  from_port         = 0
  to_port           = 0
  protocol          = "-1"
  cidr_blocks       = []
  security_group_id = aws_security_group.app.id
  description       = "Deny all other outbound"
}

Kubernetes NetworkPolicy で Pod のエグレスを DB と DNS のみに制限

bash
# Kubernetes NetworkPolicy - エグレス制御
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: restrict-egress
  namespace: production
spec:
  podSelector:
    matchLabels:
      app: backend
  policyTypes:
    - Egress
  egress:
    - to:
        - namespaceSelector:
            matchLabels:
              name: database
      ports:
        - protocol: TCP
          port: 5432
    - to:
        - ipBlock:
            cidr: 10.0.0.2/32
      ports:
        - protocol: UDP
          port: 53

なぜアウトバウンド(エグレス)通信の制限が重要か

多くの組織はインバウンド(外部から内部への通信)の制御には注力しますが、アウトバウンド(内部から外部への通信)は見落としがちです。

しかし、攻撃者が内部ネットワークへの侵入に成功した後のフェーズでは、エグレス制御こそが最も重要な防御ラインになります。

エグレス制御が防ぐ脅威:

  • C2(Command & Control)通信: マルウェアが攻撃者のサーバーと通信し、指令を受け取る。エグレスが無制限だと、HTTP/HTTPS や DNS トンネリングを使って容易に外部と通信できてしまう
  • データ持ち出し(Exfiltration): 機密データを外部に送信する攻撃。大量データの FTP 転送や、DNS クエリにエンコードしたデータの少量ずつの送信など手法は多様
  • マルウェアのコールバック: 初期感染後に追加のペイロードをダウンロードする通信。ドロッパー型マルウェアはこの段階で本体を取得する
  • 情報漏洩のラストライン: 内部犯行や設定ミスによるデータ漏洩も、エグレス制御があれば検知・阻止できる可能性がある

ファイアウォールのインバウンドルールが「城壁」だとすれば、エグレス制御は「城門の番兵」です。

侵入を 100% 防ぐことは不可能である以上、侵入後の被害拡大を食い止めるエグレス制御は不可欠です。

エグレス制御の実装手法

エグレス制御を効果的に実装するには、複数のレイヤーで対策を組み合わせることが重要です。

手法 概要 適用レイヤー
デフォルト拒否ポリシー 全アウトバウンド通信をデフォルトで拒否し、許可リストに載った宛先・ポートのみ通す ファイアウォール / OS
ホワイトリスト方式 業務に必要な宛先 FQDN / IP / ポートを明示的にリスト化して許可する ファイアウォール / プロキシ
プロキシ経由の強制 全 HTTP/HTTPS 通信をフォワードプロキシ(Squid, Zscaler 等)経由に強制し、直接通信を遮断する ネットワーク
DNS フィルタリング 既知の悪性ドメインへの名前解決をブロックする。DNS シンクホールや RPZ(Response Policy Zone)で実装 DNS
AWS Security Group / NACL セキュリティグループのアウトバウンドルールで宛先・ポートを制限。NACL でサブネット単位のステートレス制御を追加 クラウド
Kubernetes NetworkPolicy Pod 単位でエグレスの宛先 Namespace / IP / ポートを制御する。CNI(Calico, Cilium 等)が必要 コンテナ

実装のポイント:

  • 最初にトラフィックの可視化から始める。いきなりデフォルト拒否にすると業務が停止するリスクがある
  • 許可リストは「宛先 IP」ではなく「FQDN」で管理するのが望ましい。CDN やクラウドサービスは IP が頻繁に変わるため
  • DNS トンネリング対策として、内部 DNS サーバー以外への 53 番ポート通信を遮断する
  • HTTPS で暗号化された通信の宛先を制御するには、SNI(Server Name Indication)ベースのフィルタリングか、TLS インターセプション付きプロキシが必要

監視とインシデント対応

エグレス制御は「設定して終わり」ではなく、継続的な監視とインシデント対応体制が不可欠です。

不審なアウトバウンド通信の検知指標:

  • 通常業務時間外の大量データ送信
  • 未知の外部 IP / ドメインへの定期的な通信(ビーコン通信パターン)
  • DNS クエリの異常な増加や、長大な TXT レコードへのクエリ(DNS トンネリングの兆候)
  • 許可リスト外の宛先への接続試行(ブロックログの急増)
  • 通常と異なるプロトコルやポートの使用(ICMP トンネリング、非標準ポートの HTTPS 等)

ログ分析と SIEM 連携:

対象ログ 取得元 分析観点
ファイアウォールの拒否ログ iptables / クラウド FW / NGFW ブロックされた宛先の傾向、特定ホストからの集中的な試行
プロキシログ Squid / Zscaler / Blue Coat アクセス先ドメインの分類、データ転送量の異常
DNS クエリログ BIND / Unbound / Route 53 Resolver 不審なドメインへのクエリ、NXDomain の急増
フローログ VPC Flow Logs / NetFlow / sFlow 通信量の統計的異常、長時間接続

これらのログを SIEM(Splunk, Microsoft Sentinel, Elastic Security 等)に集約し、相関ルールとアラートを設定します。

例えば「深夜帯に 100MB 以上のアウトバウンド転送 + 宛先が脅威インテリジェンスフィードにヒット」のような条件で即時アラートを発報する設計が有効です。

アラート設計のポイント:

  • 閾値ベースだけでなく、ベースラインからの逸脱(異常検知)も組み合わせる
  • 誤検知を減らすため、初期は「通知のみ」で運用し、閾値を調整してからブロックに移行する
  • インシデント発生時の対応手順(通信遮断、影響範囲特定、フォレンジック保全)を事前に文書化しておく

関連トピック