送信元IPごとにディレクトリを振り分けて保存するSyslogサーバの構築(rsyslog)

ルータやアクセスポイントに搭載されているsyslog送信機能を使って、Ubuntuサーバにsyslogを送信して、
Ubuntuサーバではログを送信デバイスごとにフォルダ分けし、年月ごとにファイル作成して保存していきます。

syslog(シスログ)は、ログメッセージをネットワーク上で転送するための標準規格で、他のデバイスからネットワークでログデータを送信することができます。

rsyslogはLinuxでつかわれているロギングシステムで、システムログの保存や他のデバイスへの送信、受信ができるソフトウェアです。

ルータはメモリ容量が少なく古いログが削除されるため、サーバ上に保存しておくことで過去にさかのぼって確認することが可能になります。また、デバイスが故障した際にほかデバイスにSyslogを送信しておくことで、故障の特定に役立つ可能性もあります。

(過去にルータの設定を間違えていて、外部からアクセスが可能になっていたことがありました。アクセスがあったかどうかはログが残っていなかったのでわからなかったので、最近はログを残すようにしています。)

環境

  • Ubuntu Server 22.04
  • proxmox上にCT(コンテナ)としてインストール
  • ローカルネットワーク上でのみ動作させる
  • 固定IPアドレスを設定

事前準備

  • サーバのIPアドレスを固定IPに変更

rsyslogのインストール

Ubuntuであればデフォルトでインストールされていると思いますが、以下のコマンドでインストールできます。

rsyslog.confの編集

まずは、syslogの受信を有効にします。

フォルダ分けを設定します。

1行目で振り分けるディレクトリ名、ファイル名を決めています。ここを変えれば、日付ごとのディレクトリの下にデバイスごとに分けたり、日付ごとにディレクトリを分けたりできます。

ファイルは/var/log/下にsyslog_dumpディレクトリを作成して、その下に保存しています。logディレクトリ直下はrsyslogからディレクトリやファイルを作成できないため、rsyslogが所有権を持つディレクトリの下に設定します。(syslog_dump/の作成、権限設定は後述します)

%fromhost-ip%送信元IPアドレス
%fromhost%送信元hostname
%syslogtag%
%$year%年(4桁)
%$month%月(2桁)
%$day%日(2桁)
%$hour%時間(2桁)
%$minute%分(2桁)

その他は↓

https://www.rsyslog.com/doc/configuration/properties.html

ログ保存フォルダの設定

ログを保存するフォルダを作成します。

設定ファイルは/var/log/下にsyslog_dumpディレクトリを作成して、その下に保存しています。/var/log/ディレクトリ直下はrsyslogを実行するsyslogユーザからディレクトリやファイルを作成できないため、rsyslogが権限を持つディレクトリの下に設定します。

rsyslogの再起動、サービス登録

送信元デバイスの設定

ルータなどお好きなデバイスでrsyslogを設定してください。

Buffaloのルータの場合は、以下の場所で設定しました。

動作確認

しばらく経って(ルータの場合は1分ぐらい?)ログが溜まったらディレクトリを確認します。ディレクトリが作られていて、その下に日付名のlogファイルが作られていれば成功です。

動作しない際は、sudo systemctl status rsyslogでsyslogが動作しているかやエラーを確認してみてください。問題ない場合は、Firewallの設定を確認してみてください。また、/var/log/syslogを確認して、ログが保存されている場合は振り分け設定が正しくできていないようです。

参考URL

https://qiita.com/Higemal/items/532010bb7bea8ea1a7b5

https://qiita.com/h_tyokinuhata/items/c6733aed3a576a78a38b

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください