performing-ssl-tls-inspection-configuration について
SSL/TLS通信検査を設定するセキュリティチーム向けのスキルです。CAの配布、復号ポリシーや例外の設定、検証に加え、プライバシーとコンプライアンスも扱います。
主な機能
- 01アウトバウンドとインバウンドの検査設定
- 02内部CA証明書の配布
- 03証明書ピンニングアプリの例外設定
- 04復号結果の検証
- 05性能、プライバシー、コンプライアンスの考慮
活用シーン
- 01ファイアウォールやセキュアWebゲートウェイのTLS検査設定
- 02エンドポイントへの信頼済みCA証明書の配布
- 03証明書ピンニングアプリの接続問題の調査
- 04復号対象通信のプライバシー例外の策定
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill performing-ssl-tls-inspection-configurationインストール後、Claude Code で/performing-ssl-tls-inspection-configurationを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSEreferences/api-reference.mdscripts/agent.py詳細
SSL/TLS 検査の設定
概要
SSL/TLS 検査(SSL 復号、HTTPS 検査、TLS ブレークアンドインスペクトとも呼ばれます)は、クライアントとサーバー間の暗号化されたトラフィックを傍受し、マルウェア、データの持ち出し、ポリシー違反、コマンド&コントロール通信がないか、復号した内容を検査します。検査装置は信頼された中間者として動作し、クライアントとの TLS セッションを終端して、平文の内容を検査した後、宛先サーバーとの新しい TLS セッションを確立します。現在、ウェブトラフィックの 95% 以上が暗号化されているため、TLS 検査を行わない組織には大きな盲点があります。このスキルでは、次世代ファイアウォールでの TLS 検査の設定、信頼された CA 証明書の展開、証明書ピンニングを使用するアプリケーションの除外管理、プライバシー規制への準拠について説明します。
使用する場面
- SSL/TLS 検査の設定を伴うセキュリティ評価を実施するとき
- 関連するセキュリティ事象へのインシデント対応手順に従うとき
- 定期的なセキュリティテストや監査活動を実施するとき
- 実地テストを通じてセキュリティ制御を検証するとき
前提条件
- TLS 検査機能を備えた次世代ファイアウォールまたはセキュアウェブゲートウェイ
- 検査証明書への署名に使用する内部認証局(CA)
- エンドポイントの証明書管理(GPO、MDM、または手動での展開)
- TLS 検査の範囲に関するプライバシーおよび法務の審査
- PKI、X.509 証明書、TLS ハンドシェイクに関する理解
基本概念
SSL/TLS 検査モード
| モード | 方向 | 説明 |
|---|---|---|
| SSL フォワードプロキシ | アウトバウンド | クライアントからインターネットへの HTTPS 接続を傍受します |
| SSL インバウンド検査 | インバウンド | 内部サーバー宛てのトラフィックを復号します |
| SSH プロキシ | 双方向 | SSH トンネル経由のトラフィックを検査します |
フォワードプロキシの処理
Client Firewall/Proxy Web Server
│ │ │
│──TLS ClientHello──────→│ │
│ │──TLS ClientHello───────→│
│ │←─TLS ServerHello────────│
│ │ (real server cert) │
│ │ │
│ │ [Validates server cert] │
│ │ [Generates proxy cert │
│ │ signed by internal CA] │
│ │ │
│←─TLS ServerHello───────│ │
│ (proxy-signed cert) │ │
│ │ │
│──Encrypted data────────→│ [Decrypt, Inspect] │
│ │──Encrypted data────────→│
│←─Encrypted data─────────│ [Decrypt, Inspect] │
│ │←─Encrypted data─────────│
証明書の信頼チェーン
Enterprise Root CA
└── Subordinate CA (SSL Inspection)
└── Dynamically Generated Server Certificates
(CN matches requested server)
ワークフロー
手順 1:SSL 検査用の内部 CA を生成する
# Create private key for SSL Inspection CA
openssl genrsa -aes256 -out ssl-inspect-ca.key 4096
# Create CA certificate (5 year validity)
openssl req -new -x509 -key ssl-inspect-ca.key \
-sha256 -days 1825 \
-out ssl-inspect-ca.crt \
-subj "/C=US/ST=California/O=Corp Inc/OU=Network Security/CN=Corp SSL Inspection CA" \
-extensions v3_ca \
-config <(cat <<EOF
[req]
distinguished_name = req_dn
x509_extensions = v3_ca
[req_dn]
[v3_ca]
basicConstraints = critical,CA:TRUE,pathlen:0
keyUsage = critical,digitalSignature,keyCertSign,cRLSign
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always
EOF
)
# Verify certificate
openssl x509 -in ssl-inspect-ca.crt -text -noout
手順 2:CA 証明書をエンドポイントに展開する
Windows(グループポリシー):
# Import CA cert to trusted root store via GPO
# Computer Configuration > Policies > Windows Settings >
# Security Settings > Public Key Policies > Trusted Root CAs
# Or deploy via PowerShell
Import-Certificate -FilePath "\\server\share\ssl-inspect-ca.crt" `
-CertStoreLocation "Cert:\LocalMachine\Root"
# Verify deployment
Get-ChildItem Cert:\LocalMachine\Root | Where-Object {
$_.Subject -like "*SSL Inspection CA*"
}
macOS(MDM プロファイルまたは手動):
# Install via command line
sudo security add-trusted-cert -d -r trustRoot \
-k /Library/Keychains/System.keychain ssl-inspect-ca.crt
Linux:
# Ubuntu/Debian
sudo cp ssl-inspect-ca.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
# RHEL/CentOS
sudo cp ssl-inspect-ca.crt /etc/pki/ca-trust/source/anchors/
sudo update-ca-trust
手順 3:Palo Alto SSL フォワードプロキシを設定する
# Import CA certificate to firewall
# Device > Certificate Management > Certificates > Import
# Set as Forward Trust CA
set shared certificate SSL-Inspect-CA forward-trust-certificate yes
# Create Decryption Profile
set profiles decryption Corporate-Decrypt ssl-forward-proxy block-expired-certificate yes
set profiles decryption Corporate-Decrypt ssl-forward-proxy block-untrusted-issuer yes
set profiles decryption Corporate-Decrypt ssl-forward-proxy block-unknown-cert yes
set profiles decryption Corporate-Decrypt ssl-forward-proxy restrict-cert-exts yes
set profiles decryption Corporate-Decrypt ssl-forward-proxy strip-alpn no
# Minimum TLS version
set profiles decryption Corporate-Decrypt ssl-protocol-settings min-version tls1-2
set profiles decryption Corporate-Decrypt ssl-protocol-settings max-version max
# Decryption policy - decrypt outbound HTTPS
set rulebase decryption rules Decrypt-Outbound from Trust to Untrust
set rulebase decryption rules Decrypt-Outbound source any
set rulebase decryption rules Decrypt-Outbound destination any
set rulebase decryption rules Decrypt-Outbound service any
set rulebase decryption rules Decrypt-Outbound action decrypt
set rulebase decryption rules Decrypt-Outbound type ssl-forward-proxy
set rulebase decryption rules Decrypt-Outbound profile Corporate-Decrypt
手順 4:除外を設定する
特定のアプリケーションやカテゴリは、TLS 検査の対象から除外する必要があります。
# Exempt certificate-pinned applications
set rulebase decryption rules No-Decrypt-Pinned from Trust to Untrust
set rulebase decryption rules No-Decrypt-Pinned application [ apple-update microsoft-update dropbox-base ]
set rulebase decryption rules No-Decrypt-Pinned action no-decrypt
# Exempt privacy-sensitive categories
set rulebase decryption rules No-Decrypt-Privacy from Trust to Untrust
set rulebase decryption rules No-Decrypt-Privacy category [ health-and-medicine financial-services ]
set rulebase decryption rules No-Decrypt-Privacy action no-decrypt
# Exempt specific high-trust domains
set rulebase decryption rules No-Decrypt-Trusted from Trust to Untrust
set rulebase decryption rules No-Decrypt-Trusted destination [ bank-of-america.com chase.com healthcare.gov ]
set rulebase decryption rules No-Decrypt-Trusted action no-decrypt
手順 5:内部サーバー向けのインバウンド検査を設定する
# Import server certificate and private key
# Device > Certificate Management > Certificates > Import
# Inbound inspection policy
set rulebase decryption rules Inspect-WebServers from Untrust to DMZ
set rulebase decryption rules Inspect-WebServers destination [ 10.0.20.10 10.0.20.11 ]
set rulebase decryption rules Inspect-WebServers service service-https
set rulebase decryption rules Inspect-WebServers action decrypt
set rulebase decryption rules Inspect-WebServers type ssl-inbound-inspection
set rulebase decryption rules Inspect-WebServers profile Corporate-Decrypt
手順 6:SSL 検査を検証する
# Test from client - verify certificate issuer is internal CA
openssl s_client -connect www.google.com:443 -servername www.google.com 2>/dev/null | \
openssl x509 -noout -issuer -subject
# Expected output (with inspection active):
# issuer= /C=US/O=Corp Inc/OU=Network Security/CN=Corp SSL Inspection CA
# subject= /CN=www.google.com
# Verify no certificate errors in browser
# Check firewall decryption logs for errors
# Test with curl
curl -v https://www.example.com 2>&1 | grep "issuer"
# Check decryption statistics on firewall
show system setting ssl-decrypt memory
show system setting ssl-decrypt certificate-cache
show counter global filter category ssl
パフォーマンスに関する考慮事項
| 要因 | 影響 | 軽減策 |
|---|---|---|
| CPU オーバーヘッド | セッションあたり 50~80% 増加 | ハードウェア SSL アクセラレーション、専用の復号アプライアンス |
| スループットの低下 | 通常 40~60% | 暗号化トラフィックのピークに合わせて復号ハードウェアの容量を確保する |
| レイテンシの増加 | 1~5 ミリ秒増加 | 検査装置をユーザーの近くに配置する |
| TLS 1.3 0-RTT | 0-RTT データを検査できない | 0-RTT をブロックするか、リスクを受け入れる |
| 証明書ピンニング | 検査に失敗する | 除外リストに追加する |
| QUIC/HTTP3 | 従来型のプロキシを迂回する | QUIC をブロックし、HTTP/2 を強制する |
コンプライアンスとプライバシー
- 従業員への通知 - ネットワークトラフィックが検査対象であることをユーザーに通知します
- プライバシー上の除外 - 医療、金融、法的に秘匿特権のあるトラフィックを除外します
- データの取り扱い - 検査で得られた平文は、不必要に記録または保存してはなりません
- GDPR への準拠 - 暗号化された個人データを処理する法的根拠を文書化します
- 証明書ピンニング - HPKP または組み込みのピンを使用するアプリケーションの除外リストを維持します
ベストプラクティス
- まずログ記録から開始 - 検出のみのモードでデプロイし、証明書ピンニングを使用するアプリケーションを特定します
- 例外リストを維持 - 復号をバイパスする必要があるアプリケーションのリストを厳選して管理します
- QUIC をブロック - UDP/443 をブロックし、TLS 検査を通じて HTTP/2 を使用するよう強制します
- 証明書エラーを監視 - ファイアウォールのログで復号エラーを追跡します
- TLS 1.2 を最小バージョンに設定 - TLS 1.2 以上を必須とし、SSLv3 と TLS 1.0/1.1 をブロックします
- 鍵を保護 - 本番環境では、検査 CA の秘密鍵を HSM に保管します
- CA を定期的にローテーション - 有効期限が切れる前に、CA 証明書のローテーションを計画します
参考資料
コメント
Markdown 対応