NXLog受信用AlmaLinuxを構築する

はじめに
普段はLinuxサーバーを触ることが多い僕ですが、最近は勉強も兼てWindows Serverに触れる機会が増えています。ただ、やはり慣れない部分も多く、特に「ログ」の扱いはLinuxとは勝手が違うようです。
Windowsには標準で「イベントログ」という仕組みがありますが、このログをSyslogのように外部サーバーへ転送する機能は標準では提供されていません。
そこで、今回はサードパーティー製のツール「NXLog」を使い、Windows Serverのイベントログを外部のLinuxサーバーへ転送する実験をしています。
この実験は、以下の4つの記事に分けてお届けする予定です。
- Windows ServerへのNXLogインストール
- ログ受信サーバー(Linux)の構築(本記事)
- NXLogの設定(Windows Server側)
- ログ転送の確認
今回の実験環境とゴール
まず、今回の実験で目指す環境を改めて整理します。予算がないため、さくらのVPSの2週間無料お試し期間を最大限に活用します。
- ゴール: Windows Serverのイベントログを、LinuxサーバーへUDPで転送する
- ログ送信側: Windows Server 2022/2025
- ログ受信側: AlmaLinux
- ログ形式: JSON
- プロトコル: UDP / ポート 514
受信サーバーの構築
今回はログの受け皿となるLinuxサーバーを構築していきます。OSにはAlmaLinuxを使用し、スペックは一番低いプランを選択しました。
- OS: AlmaLinux
- メモリ: 512MB
- CPU: 1コア
- ストレージ: 25GB
基本的にはJSON形式のSyslogデータを受け取るだけなので、標準的な環境で十分です。追加のインストール作業はほとんどありません。
jqコマンドの確認
念のため、JSONデータを整形するjqコマンドがインストールされているか確認しておきましょう。さくらのVPSのようなクラウド環境では、最初から入っていることが多いです。
jq --version
もし「コマンドが見つかりません」のように表示されたら、以下のコマンドでインストールしてください。
sudo dnf install jq
rsyslogの設定
Linuxには標準でrsyslogというSyslogを管理する仕組みが入っています。この設定ファイルを編集し、外部からログを受信できるようにします。
まず、設定ファイルを開きます。
sudo vi /etc/rsyslog.conf
ファイルの中から以下の2行を探し、先頭の#(コメントアウト)を削除します。これにより、UDPの514番ポートでSyslogを受け付けられるようになります。
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
受信ログを日付ごとに分割
受信したログは、日付ごとにディレクトリを分けて保存されるように設定すると、後々の管理が楽になります。
/etc/rsyslog.d/ディレクトリに、新しく設定ファイルを作成します。
sudo vi /etc/rsyslog.d/30-nxlog.conf
開いたファイルに、以下の設定を記述してください。
# 動的なファイルパスを生成するためのテンプレートを定義
template(name="DailyLog" type="string"
string="/var/log/syslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/syslog.log"
)
# リモートホストからのログにのみ、このルールを適用する
if $fromhost-ip != '127.0.0.1' then {
# 上で定義したテンプレートを使って、動的に生成されたパスにログを出力
action(type="omfile"
dynaFile="DailyLog"
)
# 処理をここで終了 (他のログファイルに重複して書かない)
stop
}
ログ保存用フォルダの作成
上記の設定で指定した/var/log/syslog/というディレクトリは自動では作成されないため、手動で作っておく必要があります。
sudo mkdir /var/log/syslog/
このディレクトリがないと、ログを受信しても保存先がなく、ファイルが作られないので注意してください。
rsyslogの再起動
設定が完了したら、rsyslogサービスを再起動して設定を反映させます。
sudo systemctl restart rsyslog
ファイアウォールの設定
最後に、外部のWindows Serverからログデータが届くように、ファイアウォールのポートを開放します。
以下のコマンドで、publicゾーンのUDP/514ポートを恒久的に許可し、設定をリロードします。
# publicゾーンでUDP/514ポートを恒久的に許可
sudo firewall-cmd --zone=public --add-port=514/udp --permanent
# 設定を再読み込みして反映
sudo firewall-cmd --reload
まとめ
これで、Windows Serverから送られてくるイベントログを受信するLinuxサーバー側の準備が整いました。
次回は、いよいよWindows Server側に戻り、NXLogの設定ファイルにログの転送ルールを記述していきます。
個人支援・寄付について
サイトラボでは個人支援・寄付を受けております。ご協力いただける方はお願いいたします。当サイトではビットコインで受け付けております。
- ビットコイン:3LHnADwZwUbic2L45EnVJEykiG6KfbqrwS