はじめに

この記事では、EC2 (Windows Server) インスタンスへのRDP接続時にアラートを発報する仕組みについて解説します。

本記事では、アラートの作成にNew Relicを利用します。

1.準備

はじめに、以下のNew Relic公式ドキュメントを参照し、監視対象のEC2 (Windows Server) インスタンスにInfrastructure Agentをインストールしてください。

https://docs.newrelic.com/jp/docs/infrastructure/infrastructure-agent/windows-installation/windows-msi-installer/

2.RDP接続に関するログを確認する

Windows ServerへのRDP接続が行われると、その操作はイベントログの「セキュリティ」に記録されます。

  • 場所: イベントビューアー > Windows ログ > セキュリティ

ログオンに成功すると、イベントID 4624 のログが生成されます。

さらに、このログの詳細に含まれる「ログオンタイプ」が 10 の場合、そのログオンがRDP接続によるものであることを示します。

したがって、イベントID 4624 かつ ログオンタイプ 10 のログを監視することで、RDP接続の有無を正確に検知できます。

3.Infrastructure Agentの設定

それでは、イベントID 4624 のセキュリティログをNew Relicに転送するための設定を行いましょう。

①PowerShellを管理者権限で起動

②Infrastructure Agentのステータス確認

以下のコマンドを実行し、newrelic-infra サービスが起動していることを確認してください。

Get-Service -Name newrelic-infra

StatusがRunningであれば起動しています

③logging.dディレクトリに移動

cd "C:\Program Files\New Relic\newrelic-infra\logging.d\"

④rdp-log.ymlファイルの作成

Set-Content -Path "C:\Program Files\New Relic\newrelic-infra\logging.d\rdp-log.yml" -Value @"
logs:
  - name: "win-security-rdp-log-xpath"
    winlog:
      channel: Security
      collect-eventids:
      - 4624
"@

上記のコマンドでrdp-log.ymlというファイルを作成し、中身を書き込みます。

【補足説明】
Infrastructure Agentは、logging.d ディレクトリ内に配置されたYAML形式の設定ファイル(.yml)を読み込みます。この設定に基づき、指定されたログソース(ここではWindowsのセキュリティログ)からデータを収集し、New Relic Logsに転送します。

⑤Infrastructure Agentの再起動

Restart-Service -Name newrelic-infra

上記のコマンドでAgentを再起動し、新しい設定を反映させます。

4.New Relicにてログ確認

次に、ログがNew Relicに正しく転送されているかを確認し、アラートを設定します。

①Infrastructure AgentがインストールされているEC2のLogsを開く

②EventID:4624でフィルタリングする

もしこの時点でログが一件も表示されない場合は、Windows Serverからのログ転送がうまくいっていない可能性があります。

手順3で作成したrdp-log.ymlの設定内容などを見直してください。

ログオンタイプが10のログがあるか確認する

SELECT * FROM Log WHERE EventID = 4624 AND message LIKE '%Logon Type: 10%' SINCE 1 day ago

上記のNRQLを実行し、RDP接続のログが記録されているかを確認します。

【ポイント】
Windows OSの言語設定が日本語の場合、ログメッセージも日本語で記録されるため、Logon Type: 10 の部分は ログオン タイプ: 10 となります。その場合は、以下のようにNRQLを修正してください。

SELECT * FROM Log WHERE EventID = '4624' AND message LIKE '%ログオン タイプ: 10%' SINCE 1 DAY AGO

④Conditionを作成する

RDP接続が1件でも発生した場合にアラートを発報するためのConditionを作成します。
Alerts & AI > Alert conditions で、以下のNRQLを使用したConditionを作成します。

SELECT COUNT(*) FROM Log WHERE EventID = 4624 AND message LIKE '%Logon Type: 10%'

詳細な設定手順は割愛しますが、このNRQLのクエリ結果が「1以上」になった場合に通知が送信されるように閾値を設定してください。

おわりに

今回は、WindowsのイベントログとNew Relicを連携させ、EC2インスタンスへのRDP接続をリアルタイムに検知してアラートを送信する仕組みをご紹介しました。

この設定を行うことで、意図しないリモートアクセスを即座に把握できるようになり、サーバーのセキュリティを一層強化できます。 同様の方法で、ログオン失敗(イベントID 4625)や、その他の重要なセキュリティイベントを監視することも可能ですので、ぜひ応用してみてください。

本記事が、皆様のシステム監視やセキュリティ対策の一助となれば幸いです。 最後までお読みいただき、ありがとうございました。