Syslog サーバーはクライアント OS を認識できますか?

Syslog サーバーはクライアント OS を認識できますか?

最近、中央 syslog サーバーをセットアップしました。ログは、クライアント マシンにちなんで名付けられたフォルダー (DNS を使用) 内のファイルに整理され、logcheck でスキャンされます。

一部のクライアント マシンには複数の OS (Linux と Windows) が搭載されており、同じ IP アドレスとホスト名を持つことになります。その結果、Windows ログ (メッセージ) と Linux ログが同じファイルに保存され、私と logcheck は非常に不満を感じています。異なる OS のログを別々に保存することに興味があります。

私の解決策は、syslog を複数のポートでリッスンさせ、Linux および Windows クライアント マシン上の syslog/rsyslog が異なるポート番号を使用するように構成することです。この方法により、ログをソースに応じて適切なファイルに簡単にリダイレクトできます。

しかし、私はこのソリューションの洗練性についてはあまり納得していません。nmap は、TCP/IP スタックのフィンガープリントを通じてクライアント OS を検出できます。

クライアント マシンの OS に応じて受信データをリダイレクトするように Syslog-ng を構成する方法はありますか?

答え1

Linux マシンと Windows マシンに異なるポートを使用するというアプローチはまったく悪くありません。

代替案:

  • syslog-ng でプログラムを宛先として使用する (たとえば、クライアント マシンの現在の OS をチェックし、linux.log または windows.log に書き込むカスタム スクリプト) - 遅くて信頼性が低い。
  • syslog-ng フィルターで match(...) を使用して Linux と Windows の syslog 文字列を区別し (クライアントの syslog に何らかのマーカー サブ文字列を挿入できない限り、簡単かつ信頼できるかどうかはわかりません)、そのようなフィルターを使用して宛先ログ ファイルを選択します。

どちらもあまりお勧めできません。

さらに別のトリックとして、Linux クライアントからの syslog に TCP トランスポートを使用し、Windows からは UDP を使用することもできます。その後、プロトコルのフィルターを使用してファイルの送信先を構成できます。

関連情報