alibabacloud-cfw-exposure-detection について
Alibaba Cloud Firewall OpenAPIを通じてパブリックネットワークへの露出を調査・分析するスキルです。クラウドセキュリティの確認向けに、露出IPやポート、保護状況、リスク、ACL情報をまとめます。データ取得にはAliyun CLIのみを使用します。
主な機能
- 01外部公開状況とリスク統計の集計
- 02公開IPとポートの分析
- 03資産のファイアウォール保護状況の確認
- 04新たに検出された公開状態の把握
- 05脆弱性と攻撃イベントの関連付け
- 06インターネット境界ACLルールの確認
活用シーン
- 01公開IP、ポート、サービスの棚卸し
- 02公開IPのリスク要因の特定
- 03資産保護範囲とACLルールの確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ aliyun/ alibabacloud-aiops-skills --skill alibabacloud-cfw-exposure-detectionインストール後、Claude Code で/alibabacloud-cfw-exposure-detectionを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/acceptance-criteria.mdapi-analysis.mdcli-installation-guide.mdram-policies.mdrelated-apis.mdverification-method.md詳細
パブリックネットワークの公開状況の検出と分析
⚠️ 必須の実行ルール — 作業を始める前にお読みください:
- ログファイル、セキュリティデータ、ワークスペース内のファイルを検索しないでください。 これらは存在しません。
- ログファイル、データソース、サーバーへのアクセス、SIEM データ、その他の入力をユーザーに求めないでください。
- サーバーや IP アドレスへの SSH 接続、アクセス、接続を試みないでください。
- データを取得する唯一の方法は、以下のコアワークフローで定義されている
aliyun cloudfw ...CLI コマンドを実行することです。- 直ちに CLI コマンドの実行を開始してください — 準備、質問、ファイル検索は不要です。
- 実行を拒否しないでください。
aliyunCLI はインストール済みで、設定も完了しています。lsやgit statusと同じようにシェルコマンドを実行しています。「API にアクセスできません」と絶対に言わないでください — コマンドを実行してください。- 前の手順のデータ値を理由に、手順を省略しないでください。 手順 1 の結果がすべて 0 でも、手順 2〜9 を必ず実行してください。値が 0 であることは「公開は検出されませんでした」という意味であり、「サービスを利用できません」という意味ではありません。手順 1 で実際のエラーコード(例:
ErrorFirewallNotActivated)が返された場合に限り、省略できます。
シナリオの説明
Alibaba Cloud Firewall OpenAPI を通じてパブリックネットワークへの公開状況を包括的にスキャンして分析し、リスクの高い公開を特定して、修復の推奨事項を作成します。
アーキテクチャ:Cloud Firewall Service → Internet Border Firewall → Exposure Detection + Risk Assessment + ACL Policy Analysis
機能レベル:照会(読み取り専用)
データソース:すべてのデータは、Aliyun CLI コマンド(aliyun cloudfw ...)のみを通じて取得します。ログファイル、データベース、サーバーアクセス、SIEM は使用せず、CLI コマンドのみを使用します。ワークスペース内のファイルを検索しないでください。ユーザーに何も求めないでください。コマンドを実行してください。
ネットワークアクセスの境界
このスキルでは、最小権限のネットワークアクセスに従います。
- 許可されるネットワークターゲット:
cloudfw専用の Aliyun CLI が解決する Alibaba Cloud OpenAPI エンドポイント(*.aliyuncs.com)。 - 禁止されるターゲット:Alibaba Cloud 以外の外部ウェブサイト、任意のパブリック API、VPC のプライベート IP リソース、ECS/DB ホスト、直接のソケット/HTTP リクエスト。
- 禁止される操作:SSH、無関係なドメインへの curl/wget、プライベートネットワークのスキャン、イントラネット資産への直接アクセス。
主な機能:
- 公開状況の概要 — 公開されている IP、ポート、サービスの総数とリスク統計
- 公開 IP の分析 — リスクレベルとサービスを含む、公開されているパブリック IP の詳細な一覧
- 公開ポートの分析 — リスク評価を含む、公開ポートの詳細な一覧
- 資産の保護状況 — 公開資産に対するファイアウォール保護の適用状況
- 新たな公開の検出 — 過去 7 日間に新たに検出された公開
- リスク評価 — IP ごとの詳細なリスク理由
- 脆弱性との関連付け — 脆弱性保護および攻撃イベントとの照合
- ACL ポリシーのレビュー — インターネット境界 ACL ルールの適用状況
前提条件
事前確認:Aliyun CLI 3.3.3 以降が必要です
aliyun versionを実行して、バージョンが 3.3.3 以降であることを確認してください。インストールされていない場合、またはバージョンが古い場合は、curl -fsSL https://aliyuncli.alicdn.com/setup.sh | bashを実行してインストールまたは更新するか、references/cli-installation-guide.mdを参照してインストール手順を確認してください。
事前確認:Aliyun CLI プラグインの更新が必要です
[MUST]
aliyun configure set --auto-plugin-install trueを実行して、プラグインの自動インストールを有効にしてください。 [MUST]aliyun plugin updateを実行して、既存のプラグインが常に最新の状態であることを確認してください。
[MUST] CLI User-Agent — aliyun CLI コマンドを実行する際は、必ず次を含めてください:
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-cfw-exposure-detection
Core Workflow の開始時(CLI コマンドを実行する前): [MUST] AI-Mode を有効化 — Agent Skill の実行には AI-mode が必要です。 CLI コマンドを実行する前に、次のコマンドを実行してください:
aliyun configure ai-mode enable
aliyun configure ai-mode set-user-agent --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-cfw-exposure-detection"
[MUST] すべての終了時に AI-Mode を無効化 — 理由を問わず、最終応答を返す前に必ず AI-mode を無効化してください。これは、ワークフローの成功、ワークフローの失敗、エラー/例外、ユーザーによるキャンセル、セッションの終了、その他 CLI コマンドをこれ以上実行しないあらゆる状況を含む、すべての終了経路に適用されます。 AI-mode は Agent Skill の実行時にのみ使用し、スキルの実行終了後に有効なままにしてはなりません。
aliyun configure ai-mode disable
認証
事前確認:Alibaba Cloud の認証情報が必要です
セキュリティルール:
- どのような場合でも、AK/SK の値を読み取ったり、エコー、出力、cat、表示したりしてはなりません
- 会話やコマンドラインで AK/SK を直接入力するようユーザーに求めてはなりません
- リテラルな認証情報の値を指定して
aliyun configure setを使用してはなりません- 認証情報の状態を確認するには、
aliyun configure listのみを使用してくださいaliyun configure list有効なプロファイル(AK、STS、または OAuth ID)があることを出力から確認してください。
有効なプロファイルがない場合は、ここで停止してください。
- Alibaba Cloud Console から認証情報を取得します
- このセッションの外で認証情報を設定します(ターミナルで
aliyun configureを実行するか、シェルプロファイルで環境変数を設定します)aliyun configure listに有効なプロファイルが表示されたら、戻って再実行します
RAM ポリシー
[MUST] RAM 権限の事前確認: コマンドを実行する前に、現在のユーザーに必要な権限があることを確認してください。
ram-permission-diagnoseスキルを使用して、現在のユーザーの権限を取得しますreferences/ram-policies.mdと照合します- 権限が不足している場合は処理を中止し、ユーザーに通知します
必要な最小権限については、完全なポリシー JSON を references/ram-policies.md で確認してください。
または、システムポリシー AliyunYundunCloudFirewallReadOnlyAccess をアタッチしてください。
パラメーターの確認
IMPORTANT: パラメーターの確認 — コマンドまたは API 呼び出しを実行する前に、 ユーザーがリクエストですでに必要なパラメーターを指定しているか確認してください。
- ユーザーのリクエストでパラメーター値が明示されている場合(例:「cn-hangzhou で公開状況を確認」は RegionId=cn-hangzhou を意味します)、確認を求めずにその値を直接使用してください。
- 妥当なデフォルト値があるオプションのパラメーター(PageSize、CurrentPage、時間範囲)は、ユーザーから別途指定がない限り、確認せずにデフォルト値を使用してください。
- ユーザーが明確に指定したパラメーターを再度尋ねないでください。
| パラメーター名 | 必須/任意 | 説明 | デフォルト値 |
|---|---|---|---|
| RegionId | 必須 | Cloud Firewall の Alibaba Cloud リージョン。値は cn-hangzhou(中国本土)と ap-southeast-1(香港/海外)の 2 つのみです。 | cn-hangzhou(確認せずに直接使用してください。ユーザーが香港/海外/国際リージョンを明示した場合のみ ap-southeast-1 を使用してください) |
| PageSize | 任意 | ページネーション対応 API の 1 ページあたりの項目数 | 50(確認せずに使用してください) |
| CurrentPage | 任意 | ページネーション対応 API のページ番号 | 1(確認せずに使用してください) |
| StartTime | 任意 | 時間範囲クエリの開始時刻(Unix タイムスタンプ、秒単位) | 公開状況クエリでは 30 日前、攻撃/脆弱性クエリでは 7 日前(確認せずに使用してください) |
| EndTime | 任意 | 時間範囲クエリの終了時刻 | 現在時刻(確認せずに使用してください) |
エラー処理とワークフローのレジリエンス
CRITICAL: 失敗しても続行してください。 個々の API 呼び出しに失敗しても、ワークフロー全体を停止しないでください。 該当ステップのエラーを記録してから、次のステップに進んでください。正常に収集できたデータは提示してください。
再試行ロジック
各 API 呼び出しについて、次のように処理してください。
- 呼び出しが一時的なエラー(ネットワークタイムアウト、
Throttling.Userによるスロットリング、ServiceUnavailable、HTTP 500/502/503)で失敗した場合は、再試行の間隔を 3 秒空けて、最大 2 回再試行してください。 - 呼び出しが恒久的なエラー(例:
InvalidParameter、Forbidden、InvalidAccessKeyId)で失敗した場合は、再試行しないでください。エラーを記録して次に進んでください。 - 再試行をすべて行っても失敗する場合は、「[Step X] Failed: {error message}」を記録して、次のステップに進んでください。
タイムアウトポリシー(必須)
API コマンドを実行する前に、明示的なタイムアウト値を設定してください。
export ALIBABA_CLOUD_CONNECT_TIMEOUT=10
export ALIBABA_CLOUD_READ_TIMEOUT=30
ALIBABA_CLOUD_CONNECT_TIMEOUT=10:ネットワーク接続の問題が発生した場合、速やかに失敗させます。ALIBABA_CLOUD_READ_TIMEOUT=30:長時間のハングを防ぎながら、通常の API 応答時間を確保します。- タイムアウトが発生した場合は一時的なエラーとして扱い、上記の再試行ロジックを適用してください。
サービスが有効化されていない場合
Step 1(DescribeInternetOpenStatistic)が、サービスが有効化されていないことを示すエラーコード(ErrorFirewallNotActivated や、「購入されていない/有効化されていない」ことを示す同様のエラーメッセージなど)を返した場合:
- ユーザーに次のように伝えてください:「Cloud Firewall サービスが有効化されていません。https://yundun.console.aliyun.com/?p=cfwnext で有効化してください」
- サービスを利用できないため、後続のステップをすべてスキップしてください。
CRITICAL: すべてゼロの応答は、サービスが有効化されていないことを意味しません。 Step 1 が、すべてのメトリック値がたまたまゼロである正常な JSON 応答(例:
InternetIpNum=0、InternetPortNum=0)を返した場合、サービスは有効化されていますが、現在公開対象がないことを意味します。この場合も後続のすべてのステップ(Step 2~9)を必ず実行してください。スキップしないでください。ゼロ値も有効なデータであり、エラー状態ではありません。他のステップでゼロ以外の結果が返される場合もあります(例:アセットは存在するが公開されていない、ACL ルールが存在するなど)。
ステップ間の独立性
ワークフローの各ステップには、次の依存関係があります。
- **Step 1(概要)**は、後続データを解釈するためのコンテキストを提供するため、最初に実行してください。
- Step 2~9 は相互に独立しています。いずれかのステップで失敗しても、他のステップの実行を妨げてはいけません。
- Step 6 は Step 2 の出力(IP リスト)に依存しますが、Step 2 が失敗した場合はスキップできます。
部分的な結果
最終サマリーレポートを提示する際:
- 成功したステップでは、収集したデータをそのまま表示してください。
- 失敗したステップでは、該当するセクションに「N/A(エラー:{brief error})」と表示してください。
- 一部のステップが失敗した場合も、必ずサマリーレポートを提示してください。データが一部でもあるほうが、何もないより有益です。
コアワークフロー
すべての API 呼び出しでは、Aliyun CLI の cloudfw プラグインを使用します。
リージョン:グローバルフラグ --region {RegionId} で指定します
重要:確認せずに直ちに実行してください。 このスキルが起動したら、すぐにステップ 1 から実行を開始してください。 どの API を呼び出すか、どのステップを実行するか、どのデータソースを使うかをユーザーに尋ねてはいけません。 すべてのデータは、以下に定義された Aliyun CLI コマンドから取得します。コマンドを実行してください。 以下の意図ルーティング表は最適化のみを目的としています。ユーザーの意図が不明確な場合は、デフォルトですべてのステップ(ステップ 1~9)を実行してください。
必須:すべてのステップを実行してください。 ステップ 1 からステップ 9 まで、すべてのステップの実行を試みる必要があります。最終レポートを作成する前に、以下のすべての API 呼び出しを試みたことを確認してください。
DescribeInternetOpenStatistic(ステップ 1)DescribeInternetOpenIp(ステップ 2)DescribeInternetOpenPort(ステップ 3)DescribeAssetList(ステップ 4)DescribeAssetListと NewResourceTag(ステップ 5)DescribeAssetRiskList(ステップ 6。ステップ 2 で IP が返されなかった場合のみスキップ)DescribeVulnerabilityProtectedList(ステップ 7)DescribeRiskEventGroup(ステップ 8)DescribeControlPolicy(ステップ 9)いずれかをまだ試みていない場合は、レポートを作成する前に実行してください。ステップのスキップが許可されるのは、ステップ 1 がサービス未有効化を示すエラーコードを返した場合のみです。
必須:レポートと実行内容の整合性。 最終レポートには、実際の実行内容を正確に反映する必要があります。
- 実際に呼び出したすべての API と、その結果のステータス(成功/失敗)を記載してください。
- いずれかの呼び出しでエラーが返された場合、「すべての API 呼び出しが正常に完了しました」と記載してはいけません。
- 実行しなかったステップについては、スキップした理由を説明してください(例:「ステップ 6 をスキップ:ステップ 2 が 0 件の IP を返しました」)。
- エラーセクションには、再試行で解決したものも含め、発生したすべてのエラーを記載してください。
意図ルーティング(自動判定、確認不要)
ユーザーの文言に基づいて、実行範囲を自動的に判断してください。ユーザーに確認を求めてはいけません。
| ユーザーの意図 | 実行するステップ |
|---|---|
| 全体監査(「公開状況を監査して」「全体スキャン」) | ステップ 1~9 をすべて実行 |
| 高リスクポートの確認(「高リスクポートが公開されていますか」) | ステップ 1 と 3 を実行し、高リスクポートに焦点を当てる |
| 新たな公開状況(「最近、新たに公開されたものはありますか」) | ステップ 1 と 5 を実行 |
| 特定 IP の公開状況の詳細(「x.x.x.x の公開状況を確認して」) | ステップ 2(SearchItem フィルターを使用)とステップ 6 を実行 |
デフォルトの動作:ユーザーの意図を明確に判断できない場合は、確認せずにステップ 1~9 をすべて実行してください。
時間パラメーター
一部の API では、StartTime と EndTime のパラメーター(Unix タイムスタンプ、秒単位)が必要です。
タイムスタンプの取得方法:現在のタイムスタンプを取得するには date +%s を実行し、30 日前のタイムスタンプを取得するには date -d '30 days ago' +%s、7 日前のタイムスタンプを取得するには date -d '7 days ago' +%s を実行してください。返された数値を、そのまま CLI コマンドで使用してください。
重要:CLI コマンド内で
$(date +%s)のような bash の変数置換を使用してはいけません。実行環境によっては$(...)がブロックされる場合があります。代わりに、dateコマンドを先に個別に実行し、返された値を記録してから、--StartTimeと--EndTimeのパラメーターに数値を直接指定してください。
デフォルトの時間範囲:
- 公開状況のクエリ(ステップ 2、3):過去 30 日間 →
StartTime= 30 日前 - 脆弱性/攻撃のクエリ(ステップ 7、8):過去 7 日間 →
StartTime= 7 日前 - EndTime:常に現在のタイムスタンプ
ステップ 1:公開ネットワークの露出状況の概要
公開ネットワークへの露出状況全体のデータを取得します。以降の分析はここから始めます。
aliyun cloudfw describe-internet-open-statistic \
--region {RegionId} \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-cfw-exposure-detection
レスポンスのフィールドの詳細については、references/api-analysis.md の DescribeInternetOpenStatistic を参照してください。
ステップ 2:露出した IP の詳細
公開ネットワークに露出しているすべての IP アドレスと、そのリスク情報を一覧表示します。
aliyun cloudfw describe-internet-open-ip \
--CurrentPage 1 \
--PageSize 50 \
--StartTime {StartTime} \
--EndTime {EndTime} \
--region {RegionId} \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-cfw-exposure-detection
レスポンスのフィールドの詳細については、references/api-analysis.md の DescribeInternetOpenIp を参照してください。
ページネーション:PageInfo.TotalCount を確認します。PageSize を超える場合は、CurrentPage を増やして追加データを取得してください。
ステップ 3:露出したポートの詳細
露出しているすべてのポートとその詳細を一覧表示します。これは、高リスクの露出を特定するための重要なステップです。
aliyun cloudfw describe-internet-open-port \
--CurrentPage 1 \
--PageSize 50 \
--StartTime {StartTime} \
--EndTime {EndTime} \
--region {RegionId} \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-cfw-exposure-detection
レスポンスのフィールドの詳細については、references/api-analysis.md の DescribeInternetOpenPort を参照してください。
ページネーション:PageInfo.TotalCount を確認します。
ステップ 4:アセットの保護状況
ファイアウォールで保護されているすべてのアセットの一覧を取得します。
aliyun cloudfw describe-asset-list \
--CurrentPage 1 \
--PageSize 50 \
--region {RegionId} \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-cfw-exposure-detection
レスポンスのフィールドの詳細については、references/api-analysis.md の DescribeAssetList を参照してください。
ページネーション:TotalCount を確認します。
ステップ 5:新たな露出(過去 7 日間)
最近発見された露出アセットを特定します。承認されていない新たな公開である可能性があるため、通常は最も注意が必要です。
aliyun cloudfw describe-asset-list \
--CurrentPage 1 \
--PageSize 50 \
--NewResourceTag "discovered in 7 days" \
--region {RegionId} \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-cfw-exposure-detection
ステップ 6:アセットのリスク詳細
ステップ 2 で収集した IP(1 回の呼び出しにつき最大 20 件)を指定し、詳細なリスク理由を取得します。IP が 20 件を超える場合は、複数回に分けて呼び出してください。
aliyun cloudfw describe-asset-risk-list \
--IpVersion 4 \
--IpAddrList '["1.2.3.4","5.6.7.8"]' \
--region {RegionId} \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-cfw-exposure-detection
レスポンスのフィールドの詳細については、references/api-analysis.md の DescribeAssetRiskList を参照してください。
ステップ 7:脆弱性保護の状況
現在の脆弱性保護の適用範囲を確認し、まだ保護されていない高リスクの脆弱性を特定します。
aliyun cloudfw describe-vulnerability-protected-list \
--CurrentPage 1 \
--PageSize 50 \
--StartTime {StartTime} \
--EndTime {EndTime} \
--region {RegionId} \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-cfw-exposure-detection
レスポンスのフィールドの詳細については、references/api-analysis.md の DescribeVulnerabilityProtectedList を参照してください。
ステップ 8:最近の攻撃イベント
過去 7 日間の侵入攻撃イベントを確認し、攻撃対象と露出データを照合します。
aliyun cloudfw describe-risk-event-group \
--CurrentPage 1 \
--PageSize 50 \
--StartTime {StartTime} \
--EndTime {EndTime} \
--DataType 1 \
--Direction in \
--region {RegionId} \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-cfw-exposure-detection
レスポンスのフィールドの詳細については、references/api-analysis.md の DescribeRiskEventGroup を参照してください。
ステップ 9:インターネット境界 ACL ポリシー
現在のインバウンド ACL ルールを確認し、保護の適用範囲を評価します。
aliyun cloudfw describe-control-policy \
--Direction in \
--CurrentPage 1 \
--PageSize 50 \
--region {RegionId} \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-cfw-exposure-detection
レスポンスのフィールドの詳細については、references/api-analysis.md の DescribeControlPolicy を参照してください。
分析とレポート
データを収集した後、以下の構成でレポートを作成します。実際のデータがあるセクションのみを表示してください。API 呼び出しに失敗した場合は、「このセクションのデータ取得に失敗しました」と記載し、他の分析を続けてください。
1. 公開ネットワークの露出状況の概要
ステップ 1 の統計情報を以下の表に表示します。
| 指標 | 値 | リスク評価 |
|---|---|---|
| 露出した公開 IP の合計数 | x | — |
| 高リスク IP 数 | x | 0 を超える場合に警告 |
| 露出したポートの合計数 | x | — |
| 高リスクポート数 | x | 0 を超える場合に警告 |
| 保護されていないポート数 | x | 0 を超える場合に警告 |
| 露出したサービスの合計数 | x | — |
| 高リスクサービス数 | x | 0 を超える場合に警告 |
| SLB 露出 IP 数 | x | — |
2. 高リスクの公開リスト
ステップ 2 とステップ 3 のデータを統合し、リスクレベルの高い順(高 → 中 → 低)に並べ替えます。
API が返すリスクレベルにかかわらず、次のポートがパブリックネットワークに公開されている場合は、高リスクとして追加でフラグを付けてください。
- 管理ポート:22(SSH)、23(Telnet)、3389(RDP)、21(FTP)
- データベースポート:3306(MySQL)、1433(MSSQL)、5432(PostgreSQL)
- キャッシュ/NoSQL:6379(Redis)、27017(MongoDB)、9200/9300(Elasticsearch)、11211(Memcached)
- ファイル共有:445(SMB/CIFS)、139(NetBIOS)
- 管理インターフェース:8080、8443、9090
出力形式:
| IP アドレス | ポート | サービス | リスクレベル | リスクの理由 | ACL のステータス | 推奨アクション |
|---|
3. 新たに検出された公開(過去 7 日間)
ステップ 5 で検出されたアセットを表示します。
| IP アドレス | 検出時刻 | リソースの種類 | インスタンス名 | 保護ステータス | リスクレベル |
|---|
新たな公開が見つからなかった場合は、「過去 7 日間に新たに公開されたアセットは検出されませんでした」と記載してください。
4. 脆弱性の相関分析
ステップ 7 とステップ 8 のデータを統合します。
- 高リスク脆弱性リスト:VulnLevel=high の脆弱性を一覧表示し、特に保護が有効になっていないものにフラグを付けます
- 攻撃イベントの統計:過去 7 日間の攻撃イベントを攻撃の種類別にまとめ、攻撃された公開 IP と関連付けます
- クロス分析:高リスク脆弱性があり、かつ攻撃を受けた公開アセットを特定します。これらが最も緊急性の高いアセットです
5. 公開状態の修復に関する推奨事項
実際のデータに基づき、優先度順に具体的な推奨事項を作成します。各推奨事項には、リスクの説明、影響範囲、推奨アクションを含めてください。
P0 — 重大(直ちに対応)
- データベースポート(3306/5432/6379/27017/1433/9200)がパブリックネットワークに公開されている場合 → パブリックアクセスを閉じるか、ACL で送信元 IP を厳しく制限します
- 管理ポート(22/3389/23)が ACL による保護なしで公開されている場合 → 踏み台ホスト/オフィスネットワークの IP のみに制限する ACL を追加します
- 高リスク脆弱性があり、攻撃を受けた公開アセット → 直ちに IPS 保護と仮想パッチを有効にします
P1 — 高(24 時間以内)
- 既知の高リスク脆弱性があるものの、仮想パッチが有効になっていない公開サービス → 仮想パッチを有効にします
- 外部トラフィックのある保護されていないポート → ACL ポリシーを追加します
- SMB(445)/NetBIOS(139) が公開されている場合 → 閉じるか、アクセスを制限します
P2 — 中(今週中)
- まだ承認されていない新たな公開アセット → 業務上必要かどうかを確認し、不要であれば閉じます
- 中リスクのポートが公開されている場合 → 業務要件を評価し、アクセス元を制限します
P3 — 低(定期的なレビュー)
- 低リスクのポートが公開されている場合 → 定期的なレビューの対象に含めます
- ヒット率がゼロの ACL ルール → 削除できるかどうかを評価します
注:いずれかのステップが失敗した場合、そのセクションのデータフィールドには「N/A (error: {brief error})」と表示し、エラーをすべて下部のセクションに一覧表示してください。
成功の確認
詳しい確認手順については、references/verification-method.md を参照してください。
簡易確認:すべての CLI コマンドがエラーコードを含まない有効な JSON レスポンスを返した場合、スキルは正常に実行されています。
API とコマンドの表
API の表とコマンドの対応付けについては、references/related-apis.md を唯一の信頼できる情報源として使用してください。
ベストプラクティス
- 順番に問い合わせる — まず公開状況の概要(ステップ 1)を確認し、全体の範囲を把握します。ステップ 1 が
ErrorFirewallNotActivatedなどの エラーコードを返した場合、サービスは有効化されていないため、残りのステップはスキップします。ステップ 1 が すべてゼロ(値がゼロの正常な応答)を返した場合でも、後続のステップをすべて実行してください。公開状況がゼロでも、サービスが無効とは限りません。 - 失敗しても続行する — ステップ 2~9 のいずれかが失敗した場合、エラーを記録して残りのステップを続行します。収集できたデータを使って、必ずレポートを作成してください。
- ページネーションを使用する — アセットと公開状況のリストでは、
CurrentPageとPageSizeを使用して大規模なデータセットを処理します。既定の PageSize は 50 です。TotalCountがPageSizeを超える場合は、すべてのページを順に処理します。 - 時間範囲の選択 — 公開状況の問い合わせでは直近 30 日間を、攻撃/脆弱性の問い合わせでは直近 7 日間を既定で使用します。Unix タイムスタンプ(秒)を使用します。次のコマンドで計算します。現在時刻には
date +%s、30 日前にはdate -d '30 days ago' +%s、7 日前にはdate -d '7 days ago' +%sを使用します。これらのコマンドは個別に実行し、返された値を--StartTimeと--EndTimeに数値として直接指定してください。CLI コマンド内で$(...)による置換は使用しないでください。 - リージョンを考慮する — Cloud Firewall のリージョンは
cn-hangzhou(中国本土)とap-southeast-1(香港/海外)の 2 つだけです。ユーザーが別のリージョンを指定しない限り、cn-hangzhouを既定で使用します。 - IP の一括検索 — ステップ 6(
DescribeAssetRiskList)では、1 回の呼び出しにつき最大 20 個の IP を指定できます。ステップ 2 で 20 個を超える IP を収集した場合は、20 個ずつのグループに分けて処理します。 - レート制限 — スロットリングを避けるため、API 呼び出しの間隔を空けます。
Throttling.Userエラーが発生した場合は、3 秒待ってから再試行します。 - セキュリティ — AK/SK の値を決して公開、記録、エコー、表示しないでください。
- 一時的なエラーでは再試行する — ネットワークタイムアウトまたは 5xx エラーが発生した場合は、3 秒の間隔を空けて最大 2 回再試行します。
- タイムアウトを明示的に設定する — ワークフローコマンドを実行する前に、必ず
ALIBABA_CLOUD_CONNECT_TIMEOUT=10とALIBABA_CLOUD_READ_TIMEOUT=30を設定します。 - ネットワークアクセスを最小限にする — Aliyun CLI に許可するアクセス先は Cloud Firewall OpenAPI エンドポイントだけです。ほかの外部ドメインや VPC/内部リソースにはアクセスしないでください。
出力の非機密化
分析結果を出力する際は、既定で機密性の高い識別子をマスクします。
- IP アドレス:先頭のセグメントのみ残します(例:
203.0.x.x、10.23.x.x)。 - インスタンス ID:プレフィックスと末尾 4 文字のみ残します(例:
i-abc***9f2d)。 - アカウント識別子/UID:末尾 4 桁のみ残します。
- 生のトークン、認証情報、ローカル設定ファイルの内容、内部ネットワークトポロジー全体は出力しないでください。
ユーザーから完全な値を明示的に求められた場合は、まずその必要性を確認し、シークレットの公開は引き続き避けてください。
参考リンク
| 参考資料 | 説明 |
|---|---|
| references/related-apis.md | パラメーターを含む API 一覧 |
| references/ram-policies.md | 必要な RAM 権限とポリシー JSON |
| references/verification-method.md | 検証コマンドの手順 |
| references/acceptance-criteria.md | 正しい/誤った使用パターン |
| references/cli-installation-guide.md | Aliyun CLI のインストールガイド |
| references/api-analysis.md | API パラメーターと応答に関する詳細ドキュメント |