ルータやアクセスポイントに搭載されているsyslog送信機能を使って、Ubuntuサーバにsyslogを送信して、
Ubuntuサーバではログを送信デバイスごとにフォルダ分けし、年月ごとにファイル作成して保存していきます。
syslog(シスログ)は、ログメッセージをネットワーク上で転送するための標準規格で、他のデバイスからネットワークでログデータを送信することができます。
rsyslogはLinuxでつかわれているロギングシステムで、システムログの保存や他のデバイスへの送信、受信ができるソフトウェアです。
ルータはメモリ容量が少なく古いログが削除されるため、サーバ上に保存しておくことで過去にさかのぼって確認することが可能になります。また、デバイスが故障した際にほかデバイスにSyslogを送信しておくことで、故障の特定に役立つ可能性もあります。
(過去にルータの設定を間違えていて、外部からアクセスが可能になっていたことがありました。アクセスがあったかどうかはログが残っていなかったのでわからなかったので、最近はログを残すようにしています。)
環境
- Ubuntu Server 22.04
- proxmox上にCT(コンテナ)としてインストール
- ローカルネットワーク上でのみ動作させる
- 固定IPアドレスを設定
事前準備
- サーバのIPアドレスを固定IPに変更
rsyslogのインストール
Ubuntuであればデフォルトでインストールされていると思いますが、以下のコマンドでインストールできます。
1 2 |
sudo apt update sudo apt install rsyslog |
rsyslog.confの編集
1 |
sudo vim /etc/rsyslog.conf |
まずは、syslogの受信を有効にします。
1 2 3 4 5 6 7 |
# provides UDP syslog reception module(load="imudp") ←文頭の#を削除 input(type="imudp" port="514") ←文頭の#を削除 # provides TCP syslog reception module(load="imtcp") ←文頭の#を削除 input(type="imtcp" port="514") ←文頭の#を削除 |
フォルダ分けを設定します。
1 2 3 |
$template remote-incoming-logs,"/var/log/syslog_dump/%fromhost-ip%/%$year%-%$month%.log" *.* ?remote-incoming-logs & ~ |
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が権限を持つディレクトリの下に設定します。
1 2 |
sudo mkdir /var/log/syslog_dump/ sudo chown syslog:adm /var/log/syslog_dump |
rsyslogの再起動、サービス登録
1 2 |
sudo systemctl enable rsyslog sudo systemctl restart 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