結構、外部からの攻撃が遮断されていることがわかります。上図でもIPv6のUDPパケットが2つブロックされています。
またネットワークのトラブルの際、ルータのログを見ると、原因を切り分けるのにとても役立ちますが。ルータの電源を切ると、ログも消えたりするため、実用性が低いと思います。
ログが消えないように、ルータのログをRaspberry Piに転送、Raspberry Pi側に保存する設定を記録させて頂こうと思います。
目次
Raspberry Pi OSのrsyslogdリモートロギング設定
というわけで、Raspberry Piにrsyslogdをインストールして、リモートロギングが可能になるように設定します。またログが大きくなりすぎないように、logrotatedでローテートする設定も行います。
Wi-Fiルータのログ転送設定
まずは、Wi-Fiルータの設定を変更して、ログをRaspberry Piへ転送するように設定しておきます。syslogサーバにRaspberry PiのIPアドレスを設定します。
ルータの機種によって、ファシリティ(local0~local10)を設定できる機種もありますが、使用しません。テンプレートを使用して、ログの送信側のホスト名/IPアドレスごとにログファイルを分けるようにしますので、ファシリティは気にする必要ありません。
rsyslogd設定
rsyslogインストール
rsyslogdですが、Raspberry Pi OSの場合は、最初からインストールされているようです。
sudo apt install -y rsyslog
リモートロギング用のrsyslog設定ファイル作成
また/etc/rsyslog.d/*.confファイルが既定で有効のため。
設定ファイルは、/etc/rsyslog.d/ディレクトリ内に作成しようと思います。
ずばり。次の内容になります。
cat << EOF | sudo tee /etc/rsyslog.d/01_incoming.conf
# enable UDP
module(load="imudp")
input(type="imudp" port="514")
# enable TCP
module(load="imtcp")
input(type="imtcp" port="514")
# template for remote-iincoming-logs
\$template remote-incoming-logs, "/var/log/remote/%HOSTNAME%"
*.* ?remote-incoming-logs
:fromhost-ip, !isequal, "127.0.0.1" -?remote-incoming-logs
&stop
EOF
- UDPとTCPのポート番号514によるロギングを有効化
- /var/log/remote/ディレクトリ内に、ホスト名のファイルを作成するテンプレート
- ローカルホスト以外のログはテンプレートを適用して処理を停止
- *.*はすべてのファシリティ.プライオリティの意味
- ローカルホストのログは引き続き処理を続行
rsyslogd再起動
rsyslogdを再起動して設定を反映します。
sudo systemctl restart rsyslog.service
sudo systemctl status.rsyslog.service
リモートログは、/var/log/remoteディレクトリに、ホスト名のファイルができるように設定しました。
ルータにログインしてみて、このような感じでルータのホスト名のログが作成されればOKです。
もしもログを外付けストレージ等に保存したい場合は、rsyslog設定のテンプレートを変更すれば、任意のディレクトリに保存が可能です。
logrotate設定
記録したリモートログが大きくなりすぎないように、ローテート設定を行おうと思います。
logrotateインストール
sudo apt install -y logrotate
logrotateも既定でインストールされているかと思います。
リモートロギング用のlogrotate設定ファイル作成
/etc/logrotate.dディレクトリが有効のため、こちらに設定ファイルを作成しようと思います。
cat << EOF |sudo tee /etc/logrotate.d/01_incoming.conf
/var/log/remote/* {
weekly
rotate -1
create
}
EOF
- 週ごとにログを分ける
- ログは無限に保存(-1)
- 0に設定すると毎週消去
- たとえば5にすれば5週保存
- ローテート時に空のファイルを作成
- 圧縮は特に設定なし
ローテートの設定確認
logrotatedを再起動後、デバッグオプションでlogrotateを実行して設定を確認します。
sudo systemctl restart logrotate.service
sudo systemctl status logrotate.service
logrotate -d -v /etc/logrotate.d/01_incoming.conf
/var/log/remoteディレクトリ内にあるファイルを認識して、ファイル個別にローテートを行うことが確認できました。
ログを残すデバイスとしては、ルータやWi-Fiアクセスポイント、スイッチ等のネットワーク機器が多い感じでしょうか。
今回はRaspberry Piにリモートログを残すように設定しましたが、ネットワーク機器のログは、どこかに集約して記録したほうが、何かネットワークのトラブルが発生したとき、解析が楽に進むと思います。
というのも、ネットワーク機器本体に保存したログは消える場合があったり、そもそもネットワークトラブル時は、ログが転送できなくなったりして、ログの扱いに影響が及ぶためです。
そのような理由から、Raspberry Piにログを残すのは大変良い管理方法だと思います。
またrsyslogの設定ファイルに、@(UDP)や@@(TCP)によるログの再転送設定を行えば、2重・3重のログ保存が可能になります。
ログの内容も、様々な情報が含まれているため、見ていて勉強になります。
よろしければ設定してみて下さい。