【syslog入門 第6回】Windows・ネットワーク機器のログ ― イベントログ、監査ポリシー、重要なイベントID、Sysmon、WEF、収集ツール、Cisco・FW・ESXi

syslog入門 第6回 Windows・ネットワーク機器のログ SYSLOG サーバー

「不正ログインの調査で、Windowsサーバーのログを見たら、もう上書きされて消えていました」
「Cisco機器のログのfacilityをLINKで振り分けようとしたら、うまくいきません」

第3回〜第5回はLinuxのログでした。でも社内には、Windowsサーバー、ネットワーク機器、ESXi・vCenterもあります。それぞれログの仕組みや癖が違います。

第6回では、Linux以外のログをどう集めるかを扱います。


Windowsのイベントログの仕組み

Windowsのログは、syslogではなく、イベントログという独自の仕組みで記録されます。

チャネルSecurity(Security.evtx)の1件のイベントは、Provider・EventID 4625・Keywords・TimeCreated(UTC)・Computerなどの共通部分(System)と、TargetUserName・LogonType・IpAddressなどのイベントごとの項目(EventData)を持つXMLの構造で、説明文は見る側がEventIDと項目から組み立てるため表示の言語で変わり、チャネルの容量の上限で古いイベントから上書きされることを示す図
  • ログは「チャネル」ごとに分かれ、%SystemRoot%\System32\winevt\Logsの下の.evtxファイルに保存される
  • 1件のイベントは、記録したプログラム(プロバイダー)、イベントID、レベル、時刻などの共通部分と、イベントごとの項目(EventData)を持つXMLの構造で、syslogの自由な文字列より機械で扱いやすい
  • イベントIDはプロバイダーごとの番号で、プロバイダーが違えば同じ番号でも意味が違う。画面の説明文は、見る側のコンピューターが組み立てるため、言語の設定で変わる
  • チャネルには容量の上限があり、既定では古いイベントから上書きされる

冒頭の「もう上書きされていた」は、このためです。消されたり上書きされたりする前に、別の場所へ集めておく必要があります。集めるときは、説明文ではなくEventIDと項目で扱います。

主なチャネルとレベル

チャネル内容主なイベントの例
Applicationアプリケーション・サービスのログアプリの異常終了(1000)
SystemOS・ドライバー・サービスサービスの状態の変化(7036)、前回の予期しない停止(6008)、ログの消去(104)
Security監査ログ(監査ポリシーで出るもの)ログオン(4624・4625)、プロセスの作成(4688)
Setup役割・機能・更新プログラムの導入更新プログラムの導入
ForwardedEventsWEF で集めたイベント(コレクター側)—
アプリケーションとサービス ログ製品・機能ごとのチャネルMicrosoft-Windows-PowerShell/Operational(4104)、Microsoft-Windows-Sysmon/Operational
レベル(値)syslog の severity への対応の例
重大 Critical(1)crit(2)
エラー Error(2)err(3)
警告 Warning(3)warning(4)
情報 Information(4)info(6)。notice(5)にするツールもある
詳細 Verbose(5)debug(7)

値が0のイベント(LogAlways)もあり、日本語版では「情報」と表示されます。Securityの監査イベントは、レベルではなく「成功の監査」「失敗の監査」というキーワードで区別されます。syslogへの対応はツールごとに違うため、変換後のseverityだけで重要度を判断しないようにします(severityは第2回)。


Get-WinEventとwevtutilで調べる

PS> Get-WinEvent -ListLog Security | Format-List LogName, RecordCount, MaximumSizeInBytes, LogMode
PS> Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625;
      StartTime=(Get-Date).AddDays(-1)} -MaxEvents 20 |
      Select-Object TimeCreated, @{n='User';e={$_.Properties[5].Value}},
                                 @{n='From';e={$_.Properties[19].Value}}
PS> Get-WinEvent -FilterHashtable @{LogName='System'; Level=1,2} -MaxEvents 10
PS> wevtutil qe Security /q:"*[System[(EventID=4625)]]" /c:5 /rd:true /f:text
PS> wevtutil gl Security                    # 設定を表示(logging の maxSize など)
PS> wevtutil sl Security /ms:1073741824      # 上限を 1GB にする
  • Get-WinEventは-FilterHashtableで絞ってから取り出す(Where-Objectで後から絞るより速い)。-MaxEventsで件数を、Level=1,2で重大・エラーだけに絞る。一致するイベントが無いと「指定した選択条件に一致するイベントが見つかりませんでした。」のエラーになるため、スクリプトでは-ErrorAction SilentlyContinueを付ける
  • 4625のProperties[5]はアカウント名、[19]は送信元のIPアドレス。項目はイベントIDごとに違う
  • wevtutil qe(query-events)の/qはXPath、/rd:trueは新しい順、/cは件数。gl(get-log)で設定を見て、sl(set-log)の/msで容量の上限(バイト)を変える
  • Securityを読むには管理者の権限が要る。容量はGPO(イベント ログ)で配るのが確実(連載「Active Directory入門」第9回)

監査ポリシー(高度な監査ポリシー)

PS> auditpol /get /category:*                   # すべてのサブカテゴリの設定(抜粋)
システム監査ポリシー
カテゴリ/サブカテゴリ                               設定
ログオン/ログオフ
  ログオン                                    成功および失敗
  ログオフ                                    成功
  アカウント ロックアウト                            成功
詳細追跡
  プロセス作成                                  成功
PS> auditpol /list /subcategory:* /v             # サブカテゴリの名前と GUID
  • Securityに何が記録されるかは、監査ポリシーで決まる。既定のままでは、必要なイベント(4688など)が出ていないことが多い
  • 基本の監査ポリシー(9項目)ではなく、高度な監査ポリシー(GPOでは10のカテゴリの下に50以上のサブカテゴリ)を使う。auditpolに出るのは、GPOだけにある「グローバル オブジェクト アクセスの監査」を除く9カテゴリ(Windows Server 2016 では57のサブカテゴリ)。GPOの場所は、コンピューターの構成 > ポリシー > Windows の設定 > セキュリティの設定 > 監査ポリシーの詳細な構成
  • 両方を混ぜると意図どおりに効かないため、「監査: 監査ポリシー サブカテゴリの設定 (Windows Vista 以降) を強制して、監査ポリシー カテゴリの設定を上書きする」を有効にする
  • 4688(プロセスの作成)にコマンドラインを残すには、管理用テンプレート > システム > プロセス作成の監査 の「プロセス作成イベントにコマンド ラインを含める」を別に有効にする。既定では「プロセス作成」自体が「監査なし」
  • 上の出力は日本語版の表示(英語版は System audit policy、Logon、Success and Failure など)。表示もサブカテゴリの名前も言語で変わるので、auditpol /setで指定するときはGUIDを使うと言語に左右されない。配布はGPO、auditpolは確認用と使い分ける

重要なイベントID

ID内容記録される場所見るポイント
4624ログオンの成功ログオン先のコンピューターLogonType(2 対話、3 ネットワーク、10 リモートデスクトップ)
4625ログオンの失敗ログオン先のコンピューター短時間の多発は総当たりを疑う。SubStatus と送信元の IP
4672特権の割り当て(管理者相当でログオン)ログオン先のコンピューター想定外のアカウントが管理者相当でログオンしていないか
4688プロセスの作成各コンピューターコマンドラインの記録は別途有効化
4720・4726ユーザーの作成・削除DC(ドメイン)、各コンピューター(ローカル)変更の申請と照合する
4728・4732・4756セキュリティグループへの追加DC、各コンピューターDomain Admins・Administrators への追加
4740アカウントのロックアウトDCロックの元になったコンピューター名
1102・104ログの消去(1102 は Security、104 は System など)各コンピューター痕跡の消去を疑う。必ず通知する

ドメインのアカウントの認証は、DCにも記録されます(Kerberosの4768・4769・4771、NTLMの4776。連載「Active Directory入門」第12回)。4625のSubStatusは、0xC000006Aがパスワードの誤り、0xC0000064が存在しないユーザーです。


Sysmon

Sysmon(System Monitor)は、Sysinternalsの無償のツールで、標準の監査ログより詳しい記録をMicrosoft-Windows-Sysmon/Operationalチャネルに残します。

WindowsサーバーのSysmon(ドライバー+サービス)がXMLの設定ファイルで記録する対象を絞り、ID 1プロセスの作成(コマンドライン・親・ハッシュ)、ID 3ネットワーク接続(既定は無効)、ID 11ファイルの作成、ID 22 DNSの問い合わせをMicrosoft-Windows-Sysmon/Operationalに記録し、WEF・エージェントで集約先(第7回・第8回)へ送ることを示す図
  • 代表的なイベントは、プロセスの作成(ID 1、コマンドラインと親プロセス、ハッシュ付き)、ネットワーク接続(ID 3、既定は無効)、ファイルの作成(ID 11)、DNSの問い合わせ(ID 22)
  • 記録する対象はXMLの設定ファイルで絞り込む。すべて記録すると量が膨大になる
  • 2026年2月からは、Windows 11とWindows Server 2025に機能として組み込まれ、Enable-WindowsOptionalFeatureで有効にしてsysmon -iで導入でき、Windows Updateで更新される。単体版とは併用できず、組み込み版は説明文が日本語になるため、収集ではXMLの項目を使う

Sysmonのチャネルも、ほかのイベントログと同じ道で集めます。


Windowsイベント転送(WEF)の仕組み

Windowsイベント転送(WEF)は、Windowsに標準で備わるイベントログの収集の仕組みです。

DCがGPOでコレクターの場所とサブスクリプションを配り、ソース起動のsrv01・srv02・pc01〜pc03がWinRM 5985/tcp(Kerberosで認証・暗号化)でwec01(コレクター)のForwardedEventsに送り、送れない間はソースにたまるが上書きされた分は消え、wec01からエージェントでSIEM・ログ基盤へ転送し、ソースを増やしてもGPOの対象に入れるだけで集まることを示す図
  • 各コンピューター(ソース)が、選んだイベントをコレクター(WEC)と呼ぶWindowsサーバーへ送り、ForwardedEventsチャネルに保存する
  • 通信はWinRM(既定はHTTPの5985/tcp)だが、ドメインの中ではKerberosで相互に認証し、暗号化される
  • 何を集めるかはサブスクリプションで決め、コレクターが相手を指定して取りに行く方式と、GPOで配った設定に従ってソースから送るソース起動の方式がある。大規模ではソース起動を使う
  • 送れない間はソースのイベントログがバッファーになるが、上書きされた分は失われ、欠けたことも通知されない
  • Microsoftの目安では、コレクター1台あたり平均で毎秒3,000件程度までを計画する

WEFの設定手順

手順場所設定
① コレクターの準備コレクターwecutil qc(収集サービスの設定)、WinRM の待ち受けと 5985/tcp の許可
② サブスクリプションの作成コレクター(イベント ビューアー > サブスクリプション)ソース起動を選び、対象のコンピューターのグループと、集めるイベント(XPath)を指定
③ コレクターの場所を配るGPO:管理用テンプレート > Windows コンポーネント > イベント転送「ターゲット サブスクリプション マネージャーを構成する」に下の値
④ WinRM を動かすGPO:システム サービスWindows Remote Management を自動で開始
⑤ Security を読めるようにするGPO:制限されたグループ等NETWORK SERVICE を Event Log Readers に加える
⑥ 確認コレクター・ソースwecutil gr、ソースの Microsoft-Windows-Forwarding/Operational
Server=http://wec01.corp.example.jp:5985/wsman/SubscriptionManager/WEC,Refresh=60
PS> wecutil es                              # サブスクリプションの一覧
PS> wecutil gr "Baseline"                   # 各ソースの状態(Active など)
PS> wecutil ss "Baseline" /cf:Events        # 説明文を付けない形式で送り、量を減らす
PS> Get-WinEvent -LogName ForwardedEvents -MaxEvents 5

既定の形式(RenderedText)は説明文を付けて送るため、量が2〜3倍になります。コレクターのForwardedEventsの容量も大きくします。サブスクリプションに参加したソースが延べ1,000台を超えると、イベント ビューアーの表示が遅くなり、5万台を超えるとwecutilでの管理が必須になります。


syslog・ログ基盤への変換(収集ツール)

ツール(例)読み取り送り先特徴
NXLog Community Editionim_msvistalogsyslog(RFC 3164・5424)を UDP・TCP・TLS で無償版。商用版は NXLog Platform
Winlogbeat(Elastic)Windows のイベントログElasticsearch・Logstash・Kafka などsyslog への出力は持たない
Fluent Bitwinevtlog 入力syslog(UDP・TCP・TLS、RFC 3164・5424)、HTTP、クラウドなど軽量。Linux と同じ設定の考え方で使える
OpenTelemetry Collectorwindowseventlog レシーバー(contrib 版、alpha)OTLP、syslog などログ・メトリクス・トレースを1つにまとめる(第7回)
クラウドのエージェントCloudWatch エージェント、Azure Monitor エージェント各クラウドのログサービス第9回
①各サーバー(win01〜win03)にエージェントを入れてsyslog・HTTPで集約先(ログサーバーrsyslog・SIEM)へ送る方法と、②win04〜win06はWEFでwec01に集め、wec01の1台だけにエージェントを入れて送る方法を比べ、違いはエージェントを入れて保守する台数であることを示す図
  • 製品名は例。WEFで1台のコレクターに集め、そこにだけエージェントを入れて転送する構成にすると、各サーバーにエージェントを入れずに済む
  • syslogに変換すると構造(EventData)が失われやすいため、JSONのまま送れる経路(HTTP・OTLP等)も検討する(第7回)
  • 時刻は、UTCとタイムゾーン付きの形で送る

ネットワーク機器(Cisco IOSの例)

Router(config)# logging host 192.0.2.50
Router(config)# logging trap informational
Router(config)# logging facility local6
Router(config)# logging source-interface Loopback0
Router(config)# service timestamps log datetime msec localtime show-timezone
Router(config)# service sequence-numbers
Router(config)# logging origin-id hostname
000123: Sep 26 10:15:01.123 JST: %LINK-3-UPDOWN: Interface GigabitEthernet1/0/1, changed state to down
RouterがLoopback0で送信元IPを固定し、UDP 514・facility local6・logging trap informational(0〜6を送る)でログサーバー192.0.2.50へ送り、000123:(①連番)、Sep 26 10:15:01.123 JST:(②ミリ秒・タイムゾーン付きの時刻)、%LINK(③機能の名前でfacilityではない)、3(④severity=err)、UPDOWN(⑤ニーモニック)、説明(⑥)の構造で、送るときのPRIはlocal6(22)×8+3=<179>であり、facilityは転送の設定で決まり行の中には現れないことを示す図
  • logging trap:送る重大度の下限。informational(6)なら0〜6を送る。既定はinformational、facilityは既定でlocal7
  • Ciscoの重大度(0 emergencies 〜 7 debugging)は、syslogのseverityと同じ番号。%LINK-3-UPDOWNのLINKは機能の名前で、syslogのfacilityではない(3がseverity)
  • logging source-interface:送信元のIPアドレスを管理用のLoopbackに固定する。受信側の%FROMHOST-IP%とファイアウォールの許可が安定する
  • service timestamps …:ミリ秒とタイムゾーンを付ける。機器の時刻をNTPでそろえることが前提(連載「NTP入門」第6回)
  • 機器の種類ごとにfacilityを変えておくと、受信側で振り分けやすい(第5回)。書式は機種・OSで異なるため、手引で確かめる

冒頭の「LINKで振り分けられない」は、LINKがfacilityではないからです。facilityはlogging facilityの設定で決まり、行の中には現れません。


ファイアウォールとネットワーク機器のログの注意点

ファイアウォールfw01の状態のログ(設定変更・障害)は514/udpでruleset systemに、全体の大半を占める通信ログ(許可・拒否)は機器側で許可はセッション終了時だけ、ノイズの拒否は出さないと絞ったうえで1514/tcpなどUDPより TCP・TLSでruleset trafficに受けてSIEMにも送り、量の多い通信ログは入口から別の道を通すことを示す図
  • ファイアウォールやプロキシーは、機器の状態のログに加えて、通過や拒否のたびに通信ログを出す。1件は短くても通信の数に比例して増え、集約基盤に入るログの大半を占めることも珍しくない
  • まず何のために集めるかを決め、許可した通信はセッションの終了時だけ記録する、ノイズの多い拒否は出さない、といった絞り込みを機器側で行う
  • 受信側では、通信ログ用に待ち受けのポートとルールセットを分け、他のログの処理を妨げないようにする
  • UDPは量が多いときほど取りこぼすため、TCPやTLSに対応した機器ならそれを使う
  • CEFやLEEFといった「キー=値」形式のログを出せる製品もあり、SIEMに送るならそれを選ぶ
  • ホスト名や年・タイムゾーンを付けずに送る機器も多いため、受信側では送信元のIPで区別し、受信した時刻も残す

ESXi・vCenterのsyslog

[root@esx01:~] esxcli system syslog config set --loghost='tcp://logsv01.corp.example.jp:514,ssl://logsv01.corp.example.jp:6514'
[root@esx01:~] esxcli system syslog reload
[root@esx01:~] esxcli network firewall ruleset set --ruleset-id=syslog --enabled=true
[root@esx01:~] esxcli network firewall refresh
[root@esx01:~] esxcli system syslog config get
esx01〜esx03がFWのsyslogルールを有効にしてtcp://logsv01…:514とssl://logsv01…:6514で送り、vcenter01は管理インターフェース(5480)で設定してTLS/TCP/RELP/UDP(最大3台)でlogsv01に送ることと、ESXiはポート省略時にTCP・SSLが1514、UDPが514なので、ポートとプロトコルを受信側の待ち受けと必ずそろえることを示す図
  • 設定項目はSyslog.global.logHost(vSphere Clientの「システムの詳細設定」でも設定できる)。プロトコル://ホスト:ポートをカンマ区切りで書き、esxcliで変えたらreloadで反映する
  • ポートを省くと、TCPとSSLは1514、UDPは514になる。受信側と食い違わないよう、ポートは必ず明記する
  • 標準のポート(514・1514)は、ファイアウォールのsyslogルールを有効にする。ESXi 8.0 Update 2b以降は、標準外のポートの許可が自動で作られる
  • SSL(TLS)で送るときは、受信側の証明書を発行したCAをESXiに信頼させる。多数のホストは、ホストプロファイル等でそろえる
  • vCenter:管理インターフェース(https://vcenter01.corp.example.jp:5480)> Syslogで、最大3台の転送先をTLS・TCP・RELP・UDPから選ぶ。「テスト メッセージの送信」で確認できる。RFC 3164の形式には変えられない

ESXi(vSphere 9.0からはESX)はUTCで記録します(連載「NTP入門」第6回)。受信側のファイルの時刻の扱いをそろえてください。


考えてみよう

  1. 自分の担当のWindowsサーバーのSecurityは、容量の上限に対して何日分残っていますか。Get-WinEvent -ListLog Securityと、最も古いイベントの時刻で確かめてください。
  2. Windowsのログを集める方法として、WEF+コレクター、各サーバーへのエージェント、クラウドのエージェントのどれを選びますか。台数、既存のAD、送り先で考えてください。
  3. ネットワーク機器・ESXiのログで、時刻(タイムゾーン・ミリ秒)、送信元のアドレス、ポート、重大度の下限はそろっていますか。

ヒント:この記事のGet-WinEventのコマンド、WEFの目安、Ciscoのlogging設定、ESXiのポートの既定値が手がかりです。


まとめ

  • Windowsはイベントログ。チャネルごとの.evtxにXMLの構造で残り、容量の上限で上書きされる
  • 集めるときはEventIDと項目で扱う。説明文は言語で変わる
  • 高度な監査ポリシーを使い、4688にはコマンドラインも。重要なイベントIDを押さえる
  • Sysmonは詳しい記録。2026年からWindows 11・Server 2025に組み込み
  • WEFはWinRMとKerberosで集める標準の仕組み。コレクター1台にエージェントを集約できる
  • Ciscoの%LINK-3-…のLINKはfacilityではない。送信元はLoopbackに固定
  • FWの通信ログは量が桁違い。機器側で絞り、入口と道を分ける
  • ESXiのポートの既定値(1514)に注意し、明記する

次回は、集めたログをどこに、どれだけの期間、どう守って保存するか、集約基盤の設計を扱います。


連載「syslog入門」全11回

全回の目次と、読む順番・目的別の読み方は、syslog入門の入口のページにまとめています。

  1. ログとは・なぜ集めるか
  2. syslogの基本
  3. Linuxのログの仕組み
  4. rsyslog 前編
  5. rsyslog 後編
  6. Windows・ネットワーク機器のログ(この記事)
  7. ログ集約基盤の設計
  8. 分析と監視・SIEM
  9. クラウドのログ
  10. syslogのトラブルシュート
  11. ログ管理の設計演習
seichan

プロフィール詳細は「プロフィール」をご覧ください。
AWS Certified Solutions Architect – Professional (https://www.credly.com/badges/fd8feb88-6f1f-42ff-a94b-445bb6661cb8/public_url)
Nutanix Certified Professional - Multicloud Infrastructure 6 (https://www.credly.com/badges/5c081bef-a425-42e4-809c-85138e676630/public_url)
Palo Alto Networks System Engineer (PSE) - Hardware Firewall Professional (https://www.credly.com/badges/69dc3880-4a51-47eb-8843-47ba6ea7d013/public_url)

seichanをフォローする
SYSLOG サーバー
シェアする
seichanをフォローする

コメント

タイトルとURLをコピーしました