Azure Monitor エージェントを使用して Syslog と CEF のメッセージを Microsoft Sentinel に取り込む

この記事では、AMA 経由の Syslog コネクタと AMA 経由の Common Event Format (CEF) コネクタを使って、Linux マシンから、またネットワークとセキュリティ デバイスおよびアプライアンスから、Common Event Format (CEF) のものを含む Syslog メッセージをすばやくフィルター処理して取り込む方法について説明します。 これらのデータ コネクタの詳細については、「Microsoft Sentinel 用の AMA を介した Syslog と AMA を介した Common Event Format (CEF)」を参照してください。

前提条件

開始する前に、リソースを構成し、このセクションで説明されている適切なアクセス許可を取得する必要があります。

Microsoft Sentinel の前提条件

  • 適切な Microsoft Sentinel ソリューション (SyslogCommon Event Format のどちらか一方または両方) を有効にする必要があります。 詳細については、「Microsoft Sentinel のすぐに利用できるコンテンツを検出して管理する」を参照してください。

  • ご使用の Azure アカウントには、次の Azure ロールベースのアクセス制御 (Azure RBAC) の各ロールが必要です。

    組み込みのロール Scope 理由
    - Virtual Machine Contributor
    - Azure Connected Machine
       リソース管理者
  • 仮想マシン
  • Virtual Machine Scale Sets
  • Azure Arc 対応サーバー
  • エージェントをデプロイするため
    次のアクションを含む任意のロール
    Microsoft.Resources/deployments/*
  • サブスクリプション
  • Resource group
  • 既存のデータ収集ルール
  • Azure Resource Manager テンプレートをデプロイするには
    Monitoring Contributor
  • サブスクリプション
  • Resource group
  • 既存のデータ収集ルール
  • データ収集ルールを作成または編集するには

ログ フォワーダーの前提条件

ログ フォワーダーからメッセージを収集する場合は、次の追加の前提条件が適用されます。

  • ログを収集するには、指定された Linux VM (ログ フォワーダー) が必要です。

  • ログ フォワーダーが Azure 仮想マシン "でない" 場合、Azure Arc Connected Machine エージェントがインストールされている必要があります。

  • Linux ログ フォワーダー VM に Python 2.7 または 3 がインストールされている必要があります。 python --version または python3 --version コマンドを使用して確認してください。 Python 3 を使用している場合は、マシンで既定のコマンドとして設定されていることを確認するか、'python' ではなく 'python3' コマンドを使用して次のスクリプトを実行します。

  • ログ フォワーダーでは、syslog-ng または rsyslog デーモンのいずれかが有効になっている必要があります。

  • ログ フォワーダーの領域要件については、「Azure Monitor エージェントのパフォーマンス ベンチマーク」を参照してください。 また、スケーラブルなインジェストの設計に関する記載を含むこのブログ投稿も確認することをお勧めします。

  • ログ ソース (セキュリティ デバイスとアプライアンス) は、ローカル Syslog デーモンではなく、ログ フォワーダーの Syslog デーモンにログ メッセージを送信するように構成する必要があります。

データ インジェストの重複を回避する

Syslog メッセージと CEF メッセージの両方に同じ機能を使用すると、CommonSecurityLog テーブルと Syslog テーブル間でデータ インジェストが重複する可能性があります。

このシナリオを回避するには、次のいずれかの方法を使用します。

  • ソース デバイスでターゲット ファシリティの構成を有効にする場合: CEF 形式でログ フォワーダーにログを送信する各ソース マシンで、Syslog 構成ファイルを編集し、CEF メッセージの送信に使用されているファシリティを削除します。 これで、CEF で送信されるファシリティは、Syslog では送信されません。 次の手順で構成する各 DCR で、CEF または Syslog の該当するファシリティがそれぞれ使用されていることを確認してください。

    同じエージェントから Syslog と CEF 両方のメッセージを取り込むように DCR を調整する方法の例については、この記事で後述する「同じ DCR での Syslog と CEF のストリーミング」をご覧ください。

  • ソース アプライアンスのファシリティを変更できない場合: 次のクエリ例で示すように、取り込み時の変換を使って、Syslog ストリームから CEF メッセージを除外し、重複を回避します。 データはコレクター マシンからワークスペースに 2 回送信されます。

    source |
    where ProcessName !contains "CEF"
    

マシンのセキュリティを構成する

組織のセキュリティ ポリシーに従って、コンピューターのセキュリティを構成してください。 たとえば、企業のネットワーク セキュリティ ポリシーに合わせてネットワークを構成し、デーモンのポートとプロトコルを要件に合わせて変更することができます。 マシンのセキュリティ構成を向上させるには、Azure で VM をセキュリティで保護するか、ネットワーク セキュリティに関するこれらのベスト プラクティスを確認してください。

デバイスが TLS 経由で Syslog および CEF ログを送信する場合 (ログ フォワーダーがクラウド内にある場合など) は、TLS で通信するように Syslog デーモン (rsyslog または syslog-ng) を構成する必要があります。

データ コネクタを設定する

適切なタブを選択して、syslog または CEF の手順を確認します。

AMA 経由の Syslog コネクタを設定する

AMA 経由の Syslog コネクタの設定プロセスには、次の 2 つの部分があります。

  1. Azure Monitor エージェントをインストールし、データ収集ルール (DCR) を作成します。

  2. ログ フォワーダーを使って他のマシンからログを収集する場合は、ログ フォワーダーで "インストール" スクリプトを実行して、他のマシンからのメッセージをリッスンするように Syslog デーモンを構成し、必要なローカル ポートを開きます。

AMA をインストールし、データ収集ルール (DCR) を作成する

この手順は、次の 2 つの方法のいずれかで実行できます。

  • Microsoft Sentinel ポータルで、 AMA を介し Syslog、または AMA を介し Common Event Format (CEF) データ コネクタをデプロイし、構成します。 このセットアップでは、ワークスペースごとに DCR を作成、管理、削除できます。 AMA は、コネクタ構成で選択した VM に自動的にインストールされます。
    —または—
  • ログ インジェスト API に HTTP 要求を送信します。 このセットアップでは、DCR を作成、管理、削除できます。 このオプションは、ポータルよりも柔軟です。 たとえば、API では、特定のログ レベルでフィルター処理できます。一方、UI で選択できるのは、最小ログ レベルのみです。 欠点は、DCR を作成する前に、ログ フォワーダーに Azure Monitor エージェントを手動でインストールする必要があることです。

下の適切なタブを選択して、それぞれの方法の手順を表示します。

コネクタ ページを開き、DCR ウィザードを開始する

  1. Azure portal を開き、Microsoft Sentinel サービスに移動します。

  2. ナビゲーション メニューから [データ コネクタ] を選択します。

  3. [検索] ボックスに、「Syslog」と入力します。 結果から AMA 経由の Syslog コネクタを選びます。

  4. 詳細ウィンドウで [コネクタ ページを開く] を選択します。

  5. [構成] 領域で、[+データ収集ルールの作成] を選びます。

    AMA コネクタを介した CEF のページを示すスクリーンショット。

  6. [基本] タブで次の操作を行います。

    • DCR 名を入力します。
    • サブスクリプションを選択します。
    • DCR を置くリソース グループを選びます。

    [基本情報] タブの DCR の詳細を示すスクリーンショット。

  7. [次へ: リソース]> を選択します。

リソースの定義 (VM)

[リソース] タブで、AMA をインストールするマシン (この場合はログ フォワーダー マシン) を選択します。 (ログ フォワーダーが一覧に表示されない場合は、Azure Connected Machine エージェントがインストールされていない可能性があります。)

  1. 使用可能なフィルターまたは検索ボックスを使用して、ログ フォワーダー VM を見つけます。 一覧でサブスクリプションを展開するとそのリソース グループを表示でき、リソース グループを展開するとその VM を表示できます。

  2. AMA をインストールするログ フォワーダー VM を選択します。 (VM 名にマウス ポインターを合わせると、VM 名の横にチェック ボックスが表示されます。)

    DCR を設定するときにリソースを選択する方法を示すスクリーンショット。

  3. 変更内容を確認し、[Next: Collect > (次へ: 収集 >) を選択します。

機能と重大度を選択し、DCR を作成する

Note

Syslog メッセージと CEF メッセージの両方に同じファシリティを使用すると、データ インジェストで重複が発生する場合があります。 「データ インジェストの重複を回避する」方法をご確認ください。

  1. [収集] タブで、各機能の最小ログ レベルを選択します。 ログ レベルを選択すると、Microsoft Sentinel によって、選択したレベルと、重大度がより高いその他のレベルのログが収集されます。 たとえば、[LOG_ERR] を選択すると、Microsoft Sentinel によって、LOG_ERRLOG_CRITLOG_ALERTLOG_EMERG レベルのログが収集されます。

    DCR を設定するときにログ レベルを選択する方法を示すスクリーンショット。

  2. 選択内容を確認し、[次へ: 確認と作成] を選択します。

  3. [レビューと作成] タブで、 [作成] を選択します。

    DCR の構成をレビューして作成する方法を示すスクリーンショット。

  • コネクタにより、DCR の作成時に選択したマシンに Azure Monitor エージェントがインストールされます。

  • DCR が作成され、エージェントがインストールされると、Azure portal から通知が表示されます。

  • コネクタ ページで [最新の情報に更新] を選択して、DCR が一覧に表示されていることを確認します。

機能とログ レベルのセクションの例

機能とログ レベルの設定について、次の例をご確認ください。 name フィールドにはフィルター名が含まれます。

CEF メッセージのインジェストの場合、"streams" の値は "Microsoft-Syslog" ではなく "Microsoft-CommonSecurityLog" にする必要があります。

この例では、crondaemonlocal0local3、および uucp の各機能から WarningErrorCriticalAlert、および Emergency の各ログ レベルのイベントを収集します。

    "dataSources": {
      "syslog": [
        {
        "name": "SyslogStream0",
        "streams": [
          "Microsoft-Syslog"
        ],
        "facilityNames": [ 
          "cron",
          "daemon",
          "local0",
          "local3", 
          "uucp"
        ],
        "logLevels": [ 
          "Warning", 
          "Error", 
          "Critical", 
          "Alert", 
          "Emergency"
        ]
      }
    ]
  }
同じ DCR での Syslog と CEF のストリーミング

この例では、同じ DCR で Syslog と CEF のメッセージを収集する方法を示します。

1 つのエージェントと DCR を使って Syslog と CEF のメッセージを取り込む場合の手順について詳しくは、この記事で前に出てきた「データ インジェストの重複を回避する」をご覧ください。

DCR は、次の場合に CEF イベント メッセージを収集します。

  • InfoNoticeWarningErrorCriticalAlert、および Emergency の各ログ レベルの authpriv および mark 機能
  • WarningErrorCriticalAlert、および Emergency の各ログ レベルの daemon 機能

次の場合に Syslog イベント メッセージを収集します。

  • CriticalAlert、および Emergency の各ログ レベルの kernlocal0local5、および news 機能
  • Emergency ログ レベルの mail および uucp 機能
    "dataSources": {
      "syslog": [
        {
          "name": "CEFStream1",
          "streams": [ 
            "Microsoft-CommonSecurityLog"
          ],
          "facilityNames": [ 
            "authpriv", 
            "mark"
          ],
          "logLevels": [
            "Info",
            "Notice", 
            "Warning", 
            "Error", 
            "Critical", 
            "Alert", 
            "Emergency"
          ]
        },
        {
          "name": "CEFStream2",
          "streams": [ 
            "Microsoft-CommonSecurityLog"
          ],
          "facilityNames": [ 
            "daemon"
          ],
          "logLevels": [ 
            "Warning", 
            "Error", 
            "Critical", 
            "Alert", 
            "Emergency"
          ]
        },
        {
          "name": "SyslogStream3",
          "streams": [ 
            "Microsoft-Syslog"
          ],
          "facilityNames": [ 
            "kern",
            "local0",
            "local5", 
            "news"
          ],
          "logLevels": [ 
            "Critical", 
            "Alert", 
            "Emergency"
          ]
        },
        {
          "name": "SyslogStream4",
          "streams": [ 
            "Microsoft-Syslog"
          ],
          "facilityNames": [ 
            "mail",
            "uucp"
          ],
          "logLevels": [ 
            "Emergency"
          ]
        }
      ]
    }

"インストール" スクリプトを実行する

"インストール" スクリプトは実際には何かをインストールするのではなく、ログを収集するようにログ フォワーダーで Syslog デーモンを適切に構成します。

  1. コネクタ ページで、横にある "コピー" アイコンを選択して、[次のコマンドを実行して、CEF コレクターをインストールして適用します] の下に表示されるコマンド ラインをコピーします。

    コネクタ ページのコマンド ラインのスクリーンショット。

    ここからコピーすることもできます。

    sudo wget -O Forwarder_AMA_installer.py https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/DataConnectors/Syslog/Forwarder_AMA_installer.py&&sudo python Forwarder_AMA_installer.py
    
  2. AMA をインストールしたばかりのログ フォワーダー マシンにログインします。

  3. 最後の手順でコピーしたコマンドを貼り付けて、インストール スクリプトを起動します。
    スクリプトは、必要なプロトコルを使用するように rsyslog または syslog-ng デーモンを構成し、デーモンを再起動します。 このスクリプトは、UDP および TCP プロトコルの両方で受信メッセージをリッスンするために、ポート 514 を開きます。 この設定を変更するには、マシン上で実行されているデーモンの種類に応じた Syslog デーモン構成ファイルを参照してください。

    • Rsyslog: /etc/rsyslog.conf
    • Syslog-ng: /etc/syslog-ng/syslog-ng.conf

    Note

    エージェントが機能できないディスクがいっぱいになるシナリオを回避するため、不要なログを格納しないように syslog-ng または rsyslog の構成を設定することをお勧めします。 ディスクがいっぱいになるシナリオでは、インストールされている AMA の機能が中断されます。 RSyslog または Syslog-ng の詳細をご確認ください。

接続をテストする

  1. syslog デーモンが UDP ポートで実行されていること、および AMA がリッスンしていることを検証するには、次のコマンドを実行します。

    netstat -lnptv
    

    rsyslog または syslog-ng デーモンがポート 514 でリッスンしていることが示されます。

  2. ロガーまたは接続されているデバイスから送信されたメッセージをキャプチャするには、バックグラウンドで次のコマンドを実行します。

    tcpdump -i any port 514 -A -vv &
    
  3. 検証が完了したら、fg を入力し、Ctrl+C を選択して tcpdump を停止することをお勧めします。

  4. デモ メッセージを送信するには、次のいずれかを実行します。

    • netcat ユーティリティを使用します。 この例では、ユーティリティは、改行スイッチをオフにして、echo コマンドで投稿されたデータを読み取ります。 次に、このユーティリティは、タイムアウトなしで localhost の UDP ポート 514 にデータを書き込みます。 netcat ユーティリティを実行するには、追加のパッケージをインストールすることが必要な場合があります。

      echo -n "<164>CEF:0|Mock-test|MOCK|common=event-format-test|end|TRAFFIC|1|rt=$common=event-formatted-receive_time" | nc -u -w0 localhost 514
      
    • ロガーを使用します。 この例では、ローカル ホスト上のポート 514 に対して重大度レベル Warninglocal 4 機能に CEF RFC 形式でメッセージを書き込みます。 -t--rfc3164 フラグは、予期されている RFC 形式に準拠するために使用されます。

      logger -p local4.warn -P 514 -n 127.0.0.1 --rfc3164 -t CEF "0|Mock-test|MOCK|common=event-format-test|end|TRAFFIC|1|rt=$common=event-formatted-receive_time"
      
  5. コネクタが正しくインストールされていることを確認するには、次のコマンドのいずれかを使用してトラブルシューティング スクリプトを実行します。

    • CEF ログの場合は、次を実行します。

       sudo wget -O Sentinel_AMA_troubleshoot.py https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/DataConnectors/Syslog/Sentinel_AMA_troubleshoot.py&&sudo python Sentinel_AMA_troubleshoot.py --cef
      
    • Cisco Adaptive Security Appliance (ASA) ログの場合は、次を実行します。

      sudo wget -O Sentinel_AMA_troubleshoot.py https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/DataConnectors/Syslog/Sentinel_AMA_troubleshoot.py&&sudo python Sentinel_AMA_troubleshoot.py --asa
      
    • Cisco Firepower Threat Defense (FTD) ログの場合は、次を実行します。

      sudo wget -O Sentinel_AMA_troubleshoot.py https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/DataConnectors/Syslog/Sentinel_AMA_troubleshoot.py&&sudo python Sentinel_AMA_troubleshoot.py --ftd