目次

Network Security インスタンスの管理

CloudWatch および Network Security 管理インタフェースを使用して、VPCの Network Security インスタンスを管理します。AWS CloudWatch は、Amazonが提供するツールで、Amazonアカウント内のインスタンスを管理できます。 Network Security 管理インタフェースを CloudWatch と組み合わせて使用して、 Network Security インスタンスを監視します。

CloudWatch

CloudWatch は、次のサービスを提供するAmazonのツールです。

  • アプリケーションの監視。
  • Network Security 展開のシステム全体の可視。
  • インスタンスの追加または削除のための自動スケーリングなどのリソースの最適化。
  • 稼働状態。

CloudWatch システムを設定して、ログをS3 バケット またはSlackチャネルに送信することもできます。 Network Securityに使用するEC2インスタンスにAWS IAMロールをアタッチする必要があります。

CloudWatchの詳細については、 AWS CloudWatch のドキュメントページを参照してください。

CloudWatch ログを有効にする


注意

APIを使用して CloudWatch ログを正常に設定するには、 Network Security 仮想アプライアンスでバージョン2020.10.0以降を使用する必要があります。


次のAPIを使用して、環境で CloudWatch ログ機能を有効にしてサポートします。

管理インタフェースを有効にして Network Security 仮想アプライアンスに対して CloudWatch ログを設定するには

POST /api/appliances/{id}/cloudwatchlogconfig

管理インタフェースを有効にして Network Security 仮想アプライアンスから CloudWatch ログ設定を取得するには

GET /api/appliances/{id}/cloudwatchlogconfig

これらのAPIの詳細については、APIリファレンスを参照してください。

CloudWatch ログストリーミング(APIスクリプトを使用)

CloudWatch ログストリーミングを設定するには、APIを使用する必要があります。一部の戦略的スクリプトでは、この設定を効率化できます。

開始する前に

続行する前に、次のリソースがあることを確認してください。

  • バージョン2020.10.0以降を使用して、少なくとも1つの Network Security 仮想アプライアンスを展開します。詳細を表示
  • APIコールを認証するための Trend Micro Cloud One APIキーを作成します。 詳細を表示
  • curlをダウンロードしてインストール します。
  • jq for Bashをインストールします。Bashスクリプトはjqを使用してJSONデータを解析します。インストールを確認するには、ターミナルから jq --version コマンドを実行します。

1. 管理対象の仮想アプライアンスのIDを特定する

CloudWatch ログの設定を開始する前に、管理対象の仮想アプライアンスのIDを確認します。これらのIDを使用して、アプライアンスで CloudWatch ログを有効または無効にします。

すべての管理対象アプライアンスのリストを取得するには、curlに次のように入力します。 <YOUR_API_KEY> を Trend Micro Cloud One APIキーに、 <YOUR_CLOUDONE_REGION> をアカウントの Trend Micro Cloud One リージョンに置き換えます。

SECRET= "<YOUR_API_KEY>"
region="<YOUR_CLOUDONE_REGION>" # For example: "us-1"
url="https://network.${region}.cloudone.trendmicro.com/api/appliances"

curl --location --request GET "${url}" \
--header "Authorization: ApiKey ${SECRET}" \
--header "api-version: v1"

これにより、次のような出力が生成されます。

{
    "next": null,
    "totalCount": 1,
    "appliances": [{
        "ID": 1,
        "instanceId": "i-xxxxxxxxxxxee0d24",
        "provider": "AWS",
        "hostName": "i-xxxxxxxxxxx0d24",
        "tosVersion": "5.5.0.10625",
        "dvVersion": "4.0.0.9442",
        "auxDv": {
            "Malware": {
                "Version": null
            }
        },
        "providerMetadata": [{
            "key": "accountId",
            "value": "XXXXXXXXXXXX"
        }, {
            "key": "availabilityZone",
            "value": "sa-east-1a"
        }, {
            "key": "instanceType",
            "value": "c5n.2xlarge"
        }, {
            "key": "region",
            "value": "sa-east-1"
        }, {
            "key": "vpc",
            "value": "vpc-xxxxxxxxxxxx06a00"
        }]
    }]
}

この出力は、 Trend Micro Cloud One サービスによって管理されている Network Security 仮想アプライアンスが1つあり、そのアプライアンスのIDが 1であることを示しています。

このアプライアンスオブジェクト出力の構造の詳細 を参照してください。

2.アプライアンスで CloudWatch ログを設定する

次のアプライアンスログを CloudWatchにストリーミングできます。

  • システムログ
  • 監査ログ
  • ホストログ
  • ipsAlertログ
  • ipsBlockログ
  • reputationBlockログ
  • レピュテーションアラートログ
  • 隔離ログ
  • SSL(TLS)ログ

次のcurlの例は、アプライアンスのipsBlockログを CloudWatchにストリーミングする方法を示しています。 この例では、

  • CloudWatch Log Group変数とStream変数の名前を指定するか、初期設定値をそのまま使用できます。この例では、ロググループ名に network-security-block-events を指定していますが、初期設定のストリーム名を使用します。
  • <YOUR_CLOUDONE_REGION> を、アカウントの Trend Micro Cloud One リージョンに置き換えます。
  • <YOUR_API_KEY> を Trend Micro Cloud One APIキーに置き換えます。
  • <Appliance ID>アプライアンスのIDに置き換えます。
SECRET= "<YOUR_API_KEY>"
region="<YOUR_CLOUDONE_REGION>" # For example: "us-1"
applianceID="<Appliance ID>"

curl --location --request POST "https://network.${region}.cloudone.trendmicro.com/api/appliances/${applianceID}/cloudwatchlogconfig" \
--header "Authorization: ApiKey ${SECRET}" \
--header "api-version: v1" \
--header "Content-Type: application/json" \
--data-raw '{
  "logTypes": [
    {
      "logGroupName": "network-security-block-events",
      "logName": "ipsBlock",
      "enable": true
    }
  ]
}'

この出力の構造の詳細 を参照してください。

3. CloudWatch ログ設定を確認します。

次のcurlの例は、 CloudWatch ログ設定を確認する方法を示しています。 この例では、

  • <YOUR_CLOUDONE_REGION> を、アカウントの Trend Micro Cloud One リージョンに置き換えます。
  • <YOUR_API_KEY> を Trend Micro Cloud One APIキーに置き換えます。
  • <Appliance ID>アプライアンスのIDに置き換えます。
SECRET= "<YOUR_API_KEY>"
region="<YOUR_CLOUDONE_REGION>" # For example: "us-1"
applianceID="<Appliance ID>"

curl --location --request GET "https://network.${region}.cloudone.trendmicro.com/api/appliances/${applianceID}/cloudwatchlogconfig" \
--header "Authorization: ApiKey ${SECRET}" \
--header "api-version: v1"

次のようなAPI応答は、有効になっているログの種類がipsBlockのみであることを示しています。

{
    "next": null,
    "totalCount": null,
    "logTypes": [
        {
            "logGroupName": "ips",
            "logStreamName": "system_{instance_id}",
            "logName": "system",
            "enable": false
        },
        {
            "logGroupName": "ips",
            "logStreamName": "audit_{instance_id}",
            "logName": "audit",
            "enable": false
        },
        {
            "logGroupName": "ips",
            "logStreamName": "host_{instance_id}",
            "logName": "host",
            "enable": false
        },
        {
            "logGroupName": "network-security-block-events",
            "logStreamName": "ipsBlock_{instance_id}",
            "logName": "ipsBlock",
            "enable": true
        },
        {
            "logGroupName": "ips",
            "logStreamName": "ipsAlert_{instance_id}",
            "logName": "ipsAlert",
            "enable": false
        },
        {
            "logGroupName": "ips",
            "logStreamName": "reputationBlock_{instance_id}",
            "logName": "reputationBlock",
            "enable": false
        },
        {
            "logGroupName": "ips",
            "logStreamName": "reputationAlert_{instance_id}",
            "logName": "reputationAlert",
            "enable": false
        },
        {
            "logGroupName": "ips",
            "logStreamName": "quarantine_{instance_id}",
            "logName": "quarantine",
            "enable": false
        }
        {
            "logGroupName": "network-security-block-events",
            "logStreamName": "sslInspection_{instance_id}",
            "logName": "sslInspection",
            "enable": false
        }
    ]
}

さらに、この応答により、 network-security-block-events が前に指定したロググループ変数名と一致することが確認され、Stream name変数には初期設定値の ipsBlock_{instance_id}が表示されます。ログストリームが作成されると、この {instance_id} 値は仮想アプライアンスの実際のIDに置き換えられます。

この出力の構造の詳細 を参照してください。

完全な設定例

次のAPIスクリプトにより、管理対象のすべての仮想アプライアンスでipsBlockログとipsAlertログが有効になります。このスクリプトを実行するには

  1. 前提条件が完了していることを確認します。

  2. 次のサンプルコードを .sh ファイル(例: cloudwatch-api-script.sh)に貼り付け、 <YOUR_API_KEY> を Trend Micro Cloud One APIキーに、 <YOUR_CLOUDONE_REGION> を Trend Micro Cloud One アカウントのリージョンに置き換えて保存します。

    SECRET= "<YOUR_API_KEY>"
    region="<YOUR_CLOUDONE_REGION>" # For example: "us-1"
    url="https://network.${region}.cloudone.trendmicro.com/api/appliances"
    
    echo "Getting list of appliances"
    response=$(curl --location --request GET ${url} \
                    --header "Authorization: ApiKey ${SECRET}" \
                    --header "api-version: v1" \
                    --silent)
    
    parsed=$(echo "${response}" | jq '.appliances')
    len=$(echo "$parsed" | jq '. | length')
    echo "Number of appliances found: $len"
    
    if [[ ${len} == 0 ]]; then
        echo "Try deploying an appliance using CloudFormation Script."
        exit
    else
        appliance="$(echo "${parsed[@]}" | jq -r .[].ID)"
        for id in ${appliance}
        do echo "Configuring AWS CloudWatch log settings on the NSVA ID: $id"
        curl --location --request POST "${url}/${id}/cloudwatchlogconfig" \
            --header "Authorization: ApiKey ${SECRET}" \
            --header "api-version: v1" \
            --header "Content-Type: application/json" \
            --data-raw '{
            "logTypes": [
                {
                    "logGroupName": "network-security-block-events",
                    "logName": "ipsBlock",
                    "enable": true
                },
                {
                    "logGroupName": "network-security-alert-events",
                    "logName": "ipsAlert",
                    "enable": true
                }
            ]
            }'
        done
    fi
  3. 次のいずれかの方法でスクリプトを実行します。

    • sh cloudwatch-api-script.sh
    • bash cloudwatch-api-script.sh

4. CloudWatchでログを表示

仮想アプライアンスで CloudWatch ログが正常に設定されたら、次の手順に従ってAWSマネジメントコンソールを使用してログを表示します。

  1. AWS CloudWatch console: https://console.aws.amazon.com/cloudwatch/.を開きます。
  2. ナビゲーションペインでLog groupsを選択します。
  3. 確認するロググループを選択します。

トラブルシューティングのヒント

ステータスコードは一般に3つのクラスに分類されます。

  • 2xx コードは成功を示します。
  • 4xx コードはクライアントエラーを示します。
  • 5xx コードは、サーバエラーを示します。

前述のすべてのAPIのステータスコードは 200です。

クライアントまたはサーバのステータスコードが返された場合は、次の可能性を検討してください。

  • 400 クライアントコードエラー – APIのPOSTメソッドのペイロードが無効であることを示します。「追加の詳細」フィールドのエラーの詳細な説明については、APIの応答コードを確認してください。 GET および SET ペイロードAPIの詳細を確認してください。
  • 401 クライアントコードエラー –無効なAPIキーを示し、 "Authorization Required" メッセージを表示します。APIキーが正しいことを確認し、APIの呼び出しを再度実行してください。
  • 503 サーバコードエラー –計画的または計画外の停止により、サーバで要求を処理できなかったことを示します。停止が終了してサーバが復元するまでしばらく待ってから、APIを再度呼び出してください。