高度なログ コレクター管理

この記事では、Defender for Cloud Apps のクラウド検出ログ コレクターの詳細オプションを構成する方法について説明します。

Defender for Cloud Apps の Cloud Discovery では引き続き、基本ファイアウォール形式に重点を置きます。 ファイアウォール レベルで転送されるログに対する変更は、機能しなくなったり解析の問題を引き起こしたりする可能性があります。 この種のエラーが見つかった場合は、基本ファイアウォール形式を引き続き使用するか、カスタム ログ コレクターのオプションを使用することをお勧めします。 詳細については、「カスタム ログ パーサーの使用」を参照してください。

この記事では、Defender for Cloud Apps のクラウド検出 Docker の構成を変更する方法について説明します。

ログ コレクターの FTP 構成を変更する

次のセクションの手順に従って、Defender for Cloud Apps Cloud Discovery Docker の構成を変更します。

ログ コレクターのバージョンを確認する

システムに現在インストールされているログ コレクターのバージョンを確認するには、ログ コレクター ホストに接続して以下を実行します。

cat /var/adallom/versions | grep columbus-

FTP パスワードの変更

この手順では、ログ コレクター ファイルへのアクセスに使用するパスワードを変更する方法について説明します。

  1. ログ コレクター ホストに接続し、以下を実行します。

    docker exec -it <collector name> pure-pw passwd <ftp user>
    
  2. 新しいパスワードを入力し、確認のためにもう一度入力します。

  3. 次のコマンドを実行して、変更を適用します。

    docker exec -it <collector name> pure-pw mkdb
    

次の内容を表示できる必要があります。

  • run_logs
  • ssl_update
  • config.json

証明書ファイルのカスタマイズ

この手順では、Cloud Discovery Docker インスタンスへのセキュリティで保護された接続で使用する証明書ファイルをカスタマイズする方法について説明します。

  1. FTP クライアントを開き、ログ コレクターほホストに接続します。

  2. ssl_update ディレクトリに移動し、次のファイルを含む新しい証明書ファイルをアップロードします。

    レシーバーの種類 必要なファイル
    FTP - pure-ftpd.pem: キーと証明書データが含まれます
    Syslog - ca.pem: クライアントの証明書の署名に使用された証明機関の証明書。
    - server-key.pem および server-cert.pem: ログ コレクターの証明書とキー

    Syslog メッセージは TLS 経由でログ コレクターに送信されます。これには、クライアント証明書とサーバー証明書の両方の認証を含む相互 TLS 認証が必要です。

    ファイル名は必須です。 いずれかのファイルがない場合、更新は失敗します。

  3. ターミナル ウィンドウで、以下を実行します。

    docker exec -t <collector name> update_certs
    

    出力は次のコードのようになります。

    root@DockerPlayground:~# docker exec -t columbus update_certs
    rsyslog: stopped
    rsyslog: started
    ftpd: stopped
    ftpd: started
    root@DockerPlayground:~#
    
  4. ターミナル ウィンドウで、以下を実行します。

    docker exec <collector name> chmod -R 700 /etc/ssl/private/
    

プロキシの背後でログ コレクターを有効にする

プロキシの背後で実行している場合、ログ コレクターで Defender for Cloud Apps へのデータの送信で問題が発生する可能性があります。 たとえば、これはプロキシのルート証明機関がログ コレクターに信頼されていないため、Microsoft Defender for Cloud Apps に接続してその構成を取得したり、受信したログをアップロードしたりできないことが原因となっている可能性があります。

次の手順では、プロキシの背後でログ コレクターを有効にする方法について説明します。

ヒント

Syslog または FTP のログ コレクターに使用される証明書を変更したり、ファイアウォールとプロキシからログ コレクターへの接続の問題を解決したりすることもできます。 詳細については、「ログ コレクターの FTP 構成を変更する」を参照してください。

プロキシの背後でログ コレクターを設定する

Windows または Linux マシンで Docker を実行するために必要な手順に従い、Defender for Cloud Apps Docker イメージをホスト マシンに正常にダウンロードしていることを確認します。

詳細については、「継続的なレポートのために自動ログ アップロードを構成する」をご覧ください。

ログ コレクターの Docker コンテナーの作成を確認する

コンテナーが作成され、実行されていることを確認します。 シェルで、以下を実行します。

docker ps

次のような出力結果が表示されます。

実行中の Docker コンテナーのスクリーンショット。

プロキシのルート CA 証明書をコンテナーにコピーする

仮想マシンから Defender for Cloud Apps コンテナーに CA 証明書をコピーします。 次の例では、コンテナーの名前は Ubuntu-LogCollector、CA 証明書の名前は Proxy-CA.crt となっています。

次のコマンドは、実行中のコンテナー内のフォルダーに証明書をコピーします。 Ubuntu ホストで次のコマンドを実行します。

docker cp Proxy-CA.crt Ubuntu-LogCollector:/var/adallom/ftp/discovery

CA 証明書と連携するよう構成を設定する

  1. コンテナーに移動します。 次のコマンドを実行して、ログ コレクター コンテナーで bash を開きます。

    docker exec -it Ubuntu-LogCollector /bin/bash
    
  2. コンテナー内の bash ウィンドウから、Java jre フォルダーに移動します。 バージョンに関するパスのエラーを回避するために、以下のコマンドを使用します。

    cd "$(find /opt/jdk/*/jre -name "bin" -printf '%h' -quit)"
    cd bin
    
  3. 先ほどコピーしたルート証明書を、discovery フォルダーから Java のキーストアにインポートし、パスワードを定義します。

    既定のパスワードは changeitです。 詳細については、「Java キーストアのパスワードを変更する」を参照してください。

    ./keytool --import --noprompt --trustcacerts --alias SelfSignedCert --file /var/adallom/ftp/discovery/Proxy-CA.crt --keystore ../lib/security/cacerts --storepass <password>
    
  4. 証明書が CA キーストアに正しくインポートされたことを確認します。 次のコマンドを実行して、インポート時に指定したエイリアス (SelfSignedCert) を検索します。

    ./keytool --list --keystore ../lib/security/cacerts | grep self
    

インポートしたプロキシの CA 証明書が表示されます。 次に例を示します。

keytool インターフェイスのスクリーンショット。

Linux 上のログ コレクターに syslog メッセージを送信する IP アドレスを制限する

Docker イメージをセキュリティで保護し、ログ コレクターに syslog メッセージを送信できる IP アドレスが 1 つだけであることを確認するには、ホスト マシンに IP テーブル ルールを作成して入力トラフィックを許可し、TCP/601 や UDP/514 などの特定のポートを経由するトラフィックを展開に応じて削除します。

次のコマンドは、ホスト マシンに追加できる IP テーブル ルールを作成する方法の例を示しています。 このテーブル ルールでは、IP アドレス "1.2.3.4" が TCP ポート 601 経由でログ コレクター コンテナーに接続し、同じポート経由で他の IP アドレスから送信される他のすべての接続を削除します。

iptables -I DOCKER-USER \! --src 1.2.3.4 -m tcp -p tcp --dport 601 -j DROP

新しい構成で実行されるようログ コレクターを設定する

コンテナーの準備が整いました。

ログ コレクターの作成中に使用した API トークンを使用して、collector_config コマンドを実行します。 次に例を示します。

[ログ コレクターの作成] ダイアログのスクリーンショット。

コマンドを実行するとき、collector_config abcd1234abcd1234abcd1234abcd1234 ${CONSOLE} ${COLLECTOR} などの自分の API トークンを指定します。

次に例を示します。

構成の更新例のスクリーンショット。

これでログ コレクターと Defender for Cloud Apps の通信ができるようになりました。 Defender for Cloud Apps にデータを送信した後、ログ コレクターの状態が [正常] から [接続 済み] に変わります。 次に例を示します。

アップロード状態のスクリーンショット。

Note

ログ コレクターの構成を更新する必要がある場合 (たとえば、データ ソースを追加または削除する場合) は、通常はコンテナーを削除して、前の手順をもう一度実行する必要があります。

これを回避するには、Defender for Cloud Apps ポータルで生成された新しい API トークンを使用して、collector_config ツールを再実行します。

Java キーストアのパスワードを変更する

  1. Java キーストア サーバーを停止します。

  2. コンテナー内で bash シェルを開き、appdata/conf フォルダーに移動します。

  3. サーバーのキーストア パスワードを変更するには、以下を実行します。

    keytool -storepasswd -new newStorePassword -keystore server.keystore
    -storepass changeit
    

    既定のサーバー パスワードは changeit です。

  4. 証明書のパスワードを変更するには、以下を実行します。

    keytool -keypasswd -alias server -keypass changeit -new newKeyPassword -keystore server.keystore -storepass newStorePassword
    

    既定のサーバー エイリアスは server です。

  5. テキスト エディターで、server-install\conf\server\secured-installed.properties ファイルを開きます。 次のコード行を追加し、変更を保存します。

    1. サーバーの新しい Java キーストア パスワード、server.keystore.password=newStorePassword を指定します。
    2. サーバーの新しい証明書パスワードを指定します。server.key.password=newKeyPassword
  6. サーバーを起動します。

ログ コレクターを Linux 上の別のデータ パーティションに移動します

多くの企業では、データを別のパーティションに移動する必要があります。 この手順では、Defender for Cloud Apps Docker ログ コレクター イメージを Linux ホスト上のデータ パーティションに移動する方法について説明します。

この手順では、データストアと呼ばれるパーティションへのデータの移動について説明します。パーティションが既にマウントされていることを前提としています。 次に例を示します。

Linux パーティションの一覧。

Linux ホストでの新しいパーティションの追加と構成は、このガイドの範囲外です。

ログ コレクターを別のパーティションに移動するには:

  1. Docker サービスを停止します。 実行 (Run):

    service docker stop
    
  2. ログ コレクター データを新しいパーティションに移動します。 実行 (Run):

    mv /var/lib/docker /datastore/docker
    
  3. 古い Docker ストレージ ディレクトリ (/var/lib/docker) を削除し、新しいディレクトリ (/datastore/docker) へのシンボリック リンクを作成します。 実行 (Run):

    rm -rf /var/lib/docker && ln -s /datastore/docker /var/lib/
    
  4. Docker サービスを開始します。 実行 (Run):

    service docker start
    
  5. 必要に応じて、ログ コレクターの状態を確認します。 実行 (Run):

    docker ps
    

Linux 上のログ コレクター ディスクの使用状況を調べる

この手順では、ログ コレクターのディスクの使用状況と場所を確認する方法について説明します。

  1. ログ コレクター データが格納されているディレクトリへのパスを特定します。 実行 (Run):

    docker inspect <collector_name> | grep WorkDir
    

    次に例を示します。

    ログ コレクター ディレクトリを識別する方法のスクリーンショット。

  2. "/work" サフィックスなしで特定されたパスを使用して、ログ コレクターのディスク上のサイズを取得します。 実行 (Run):

    du -sh /var/lib/docker/overlay2/<log_collector_id>/
    

    ディスク上のログ コレクターのサイズを識別する方法のスクリーンショット。

    Note

    ディスク上のサイズのみを知る必要がある場合は、代わりに docker ps -s コマンドを使用できます。

ログ コレクターをアクセス可能なホストに移動する

規制された環境では、ログ コレクター イメージがホストされている Docker ハブへのアクセスがブロックされる場合があります。 その場合、Defender for Cloud Apps によってログ コレクターからデータをインポートできなくなります。これはログ コレクターのイメージをアクセス可能なホストに移動することで解決できます。

この手順では、Docker Hub にアクセスできるコンピューターを使用してログ コレクター イメージをダウンロードし、それを宛先ホストにインポートする方法について説明します。

ダウンロードしたイメージは、プライベート リポジトリにインポートすることも、ホストに直接インポートすることもできます。 この手順では、ログ コレクター イメージを Windows コンピューターにダウンロードし、WinSCP を使用してログ コレクターを宛先ホストに移動する方法について説明します。

前提条件

  1. ホストに Docker がインストールされていることを確認します。 たとえば、次のいずれかのダウンロードを使用します。

  2. ダウンロード後、Docker の「オフライン インストール ガイド」を使用してオペレーティング システムをインストールします。

    ログ コレクター イメージをエクスポートしてプロセスを開始し、宛先ホストにイメージをインポートします。

Docker Hub からログ コレクター イメージをエクスポートする

次の手順では、Linux または Windows を使用してログ コレクター イメージをエクスポートする方法について説明します。

Linux でイメージをエクスポートする

  1. Docker Hub にアクセスできる Linux コンピューターで、次のコマンドを実行して Docker をインストールし、ログ コレクター イメージをダウンロードします。

    curl -o /tmp/MCASInstallDocker.sh https://adaprodconsole.blob.core.windows.net/public-files/MCASInstallDocker.sh && chmod +x /tmp/MCASInstallDocker.sh; /tmp/MCASInstallDocker.sh
    
  2. ログ コレクター イメージをエクスポートします。 実行 (Run):

    docker save --output /tmp/mcasLC.targ mcr.microsoft.com/mcas/logcollector
    chmod +r /tmp/mcasLC.tar
    

    重要

    STDOUT の代わりに、必ず出力パラメーターを使用してファイルに書き込みます。

  3. WinSCP を使用して、C:\mcasLogCollector\ で Windows コンピューターにログ コレクター イメージをダウンロードします。 次に例を示します。

    Windows コンピューターにログ コレクターをダウンロードしている画面のスクリーンショット。

Windows でイメージをエクスポートする

  1. Docker Hub にアクセスできる Windows 10 コンピューターで、Docker Desktop をインストールします。

  2. ログ コレクター イメージをダウンロードします。 実行 (Run):

    docker login -u caslogcollector -p C0llector3nthusiast
    docker pull mcr.microsoft.com/mcas/logcollector
    
  3. ログ コレクター イメージをエクスポートします。 実行 (Run):

    docker save --output C:\mcasLogCollector\mcasLC.targ mcr.microsoft.com/mcas/logcollector
    

    重要

    STDOUT の代わりに、必ず出力パラメーターを使用してファイルに書き込みます。

ログ コレクター イメージをインポートして宛先ホストに読み込む

この手順では、エクスポートしたイメージを宛先ホストに転送する方法について説明します。

  1. /tmp/ で、ログ コレクター イメージを宛先ホストにアップロードします。 次に例を示します。

    ログ コレクターを宛先ホストにアップロードしている画面のスクリーンショット。

  2. 宛先ホストで、ログ コレクター イメージを Docker イメージ リポジトリにインポートします。 実行 (Run):

    docker load --input /tmp/mcasLC.tar
    

    次に例を示します。

    ログ コレクター イメージを Docker リポジトリにインポートしている画面のスクリーンショット。

  3. 必要に応じて、インポートが正常に完了したことを確認します。 実行 (Run):

    docker image ls
    

    次に例を示します。

    ログ コレクターのインポートが成功したことを確認している画面のスクリーンショット。

    これで、宛先ホストのイメージを使用してログ コレクターの作成に進むことができます。

Linux上のログ コレクター用の Syslog および FTP レシーバーのカスタム ポートを定義する

一部の組織では、Syslog および FTP サービスのカスタム ポートを定義する必要があります。

データ ソースを追加すると、Defender for Cloud Apps ログ コレクターは特定のポート番号を使用して、1 つ以上のデータ ソースからのトラフィック ログをリッスンします。

次の表に、レシーバーの既定のリスニング ポートの一覧を示します。

レシーバーの種類 ポート
Syslog * UDP/514 - UDP/51x
* TCP/601 - TCP/60x
FTP * TCP/21

次の手順に従って、カスタム ポートを定義します。

  1. Microsoft Defender ポータルで、[設定] を選択します。 次に、[クラウド アプリ] を選択します。

  2. [Cloud Discovery]で、[自動ログ アップロード] を選択します。 次に、[ログ コレクター] タブを選択します。

  3. [ログ コレクター] タブで、ログ コレクターを追加または編集し、データ ソースを更新した後、ダイアログから実行コマンドをコピーします。 次に例を示します。

    ログ コレクター ウィザードから実行コマンドをコピーします。

    指定されたとおりに使用する場合、ウィザードで提供されるコマンドによって、ポート 514/udp と 515/udp を使用するようにログ コレクターが構成されます。 次に例を示します。

    (echo <credentials>) | docker run --name LogCollector1 -p 514:514/udp -p 515:515/udp -p 21:21 -p 20000-20099:20000-20099 -e "PUBLICIP='10.0.0.100'" -e "PROXY=" -e "SYSLOG=true" -e "CONSOLE=machine.us2.portal.cloudappsecurity.com" -e "COLLECTOR=LogCollector1" --security-opt apparmor:unconfined --cap-add=SYS_ADMIN --restart unless-stopped -a stdin -i mcr.microsoft.com/mcas/logcollector starter
    

    次に例を示します。

    ログ コレクター ウィザードからのコマンド実行のスクリーンショット。

  4. ホスト マシンでコマンドを使用する前に、カスタム ポートを使用するようにコマンドを変更します。 たとえば、UDP ポート 414 と 415 を使用するようにログ コレクターを構成するには、次のようにコマンドを変更します。

    (echo <credentials>) | docker run --name LogCollector1 -p 414:514/udp -p 415:515/udp -p 21:21 -p 20000-20099:20000-20099 -e "PUBLICIP='10.0.0.100'" -e "PROXY=" -e "SYSLOG=true" -e "CONSOLE=machine.us2.portal.cloudappsecurity.com" -e "COLLECTOR=LogCollector1" --security-opt apparmor:unconfined --cap-add=SYS_ADMIN --restart unless-stopped -a stdin -i mcr.microsoft.com/mcas/logcollector starter
    

    次に例を示します。

    カスタマイズされた実行コマンドのスクリーンショット。

    Note

    Docker マッピングのみが変更されます。 内部的に割り当てられたポートは変更されないため、ホスト上の任意のリスニング ポートを選択できます。

Linux 上のログ コレクターが受信したトラフィックとログ形式を検証する

場合によっては、次のような問題を調査する必要があります。

  • ログ コレクターがデータを受信している: ログ コレクターがアプライアンスから Syslog メッセージを受信しており、ファイアウォールによってブロックされていないことを確認します。
  • 受信したデータのログの形式が正しい: Defender for Cloud Apps で想定されるログの形式をご利用のアプライアンスから送信されるものと比較することによって、ログの形式を検証し、解析エラーのトラブルシューティングに役立てます。

次の手順に従って、トラフィックがログ コレクターによって受信されることを確認します。

  1. Docker コンテナーをホストしているサーバーにサインインします。

  2. 次のいずれかの方法で、ログ コレクターが Syslog メッセージを受信していることを確認します。

    • tcpdump または同様のコマンドを使用して、ポート 514 のネットワーク トラフィックを分析します

      tcpdump -Als0 port 514
      

      すべてが正しく構成されている場合は、アプライアンスからのネットワーク トラフィックが表示されます。 次に例を示します。

      tcpdump を使用したネットワーク トラフィックの分析のスクリーンショット。

    • netcat または同様のコマンドを使用して、ホスト コンピューター上のネットワーク トラフィックを分析します

      1. netcatwget をインストールします。

      2. Microsoft Defender XDR からサンプル ログ ファイルをダウンロードします。 必要に応じて、ログ ファイルを解凍します。

        1. Microsoft Defender XDR の [クラウド アプリ] で、[Cloud Discovery]>[アクション]>[Cloud Discovery スナップショット レポートの作成] の順に選択します。

        2. ログ ファイルのアップロード元にする [データソース] を選択します。

        3. [View and verify] (表示と確認) を選択し、[サンプル ログのダウンロード] を右クリックして、URL アドレス リンクをコピーします。

        4. [閉じる]>[キャンセル] を選択します。

      3. 実行 (Run):

        wget <URL_address_to_sample_log>
        
      4. netcat を実行して、ログ コレクターにデータをストリーム配信します。

        cat <path_to_downloaded_sample_log>.log | nc -w 0 localhost <datasource_port>
        

      コレクターが正しく構成されている場合、ログ データはメッセージ ファイルに存在し、その後すぐに Defender for Cloud Apps ポータルにアップロードされます。

    • 次のように、Defender for Cloud Apps Docker コンテナー内の関連ファイルを検査します

      1. コンテナーにサインインします。 実行 (Run):

        docker exec -it <Container Name> bash
        
      2. Syslog メッセージがメッセージ ファイルに書き込まれているかどうかを判定します。 実行 (Run):

        cat /var/adallom/syslog/<your_log_collector_port>/messages
        

      すべてが正しく構成されている場合は、アプライアンスからのネットワーク トラフィックが表示されます。 次に例を示します。

      cat コマンドを使用したトラフィックの分析のスクリーンショット。

      Note

      このファイルは、サイズが 40 KB になるまで引き続き書き込まれます。 次に例を示します。

  3. /var/adallom/discoverylogsbackup ディレクトリ内の Defender for Cloud Apps にアップロードされたログを確認します。 次に例を示します。

    アップロードされたログ ファイルを確認します。

  4. ログ コレクターが受信したログの形式を検証するには、/var/adallom/discoverylogsbackup に格納されているメッセージを、Defender for Cloud Apps の [ログ コレクターを作成] ウィザードで指定されているサンプル ログの形式と比較します。

メッセージ ファイルの出力をローカル ファイルに書き込む

独自のサンプル ログを使用したいが、アプライアンスにアクセスできない場合は、次のコマンドを使用して、ログ コレクターの syslog ディレクトリにあるメッセージ ファイルの出力をホスト上のローカル ファイルに書き込みます。

docker exec CustomerLogCollectorName tail -f -q /var/adallom/syslog/<datasource_port>/messages > /tmp/log.log

出力ファイル (/tmp/log.log) を /var/adallom/discoverylogsbackup ディレクトリに格納されているメッセージと比較します。

ログ コレクターのバージョンを更新する

ログ コレクターを更新する場合:

  • 新しいバージョンをインストールする前に、必ずログ コレクターを停止し、現在のイメージを削除してください。
  • 新しいバージョンをインストールした後証明書ファイルを更新します。

次のステップ

問題が発生した場合は、私たちがお手伝いいたします。 お使いの製品の問題について支援やサポートを受けるには、サポート チケットを作成してください。