Buffalo のルータを使っていて、VPNルータ機能を便利に使っているが、最近のセキュリティ問題が増えてきて、VPN サーバに侵入されないか心配になってきた。そこで、VPN 接続があったらメール通知を出すようにしたい。
swatchdog のインストール
Buffalo ルータ側で syslog をサーバに転送させ、local1 のファシリティにて記録させているので /var/log/local1.log を swatchdog でさせることとした。
((( swatchdogをインストール )))
$ sudo apt install swatch
((( /etc/swatchdog/local1.conf )))
watchfor /router xl2tpd\[.*\]: start_pppd: I'm running:/
mail addresses=root,subject=[VPN] start xl2tpd
((( 動作確認 )))
$ sudo /usr/bin/swatchdog -c /etc/swatchdog/local1.conf --daemon -t /var/log/local1.log
swatchdog を systemd に登録
systemd のインスタンス化サービスを使えば、複数の監視の登録の柔軟性もでてくる。(Geminiが教えてくれた)
swatchdog を –daemon で動作させようとしたが、systemd だとうまく動かないので systemd の ExecStart では –daemon は使わない。
((( /etc/swatchdog/swatchdog.service ))) [Unit] Description=swatchdog log monitor for %I After=network.target [Service] Type=simple User=root WorkingDirectory=/etc/swatchdog ExecStart=/usr/bin/swatchdog -c /etc/swatchdog/%i.conf -t /var/log/%i.log Restart=always RestartSec=5s # 標準出力・エラーを systemd のログ(journald)に送る設定 StandardOutput=journal StandardError=journal [Install] WantedBy=multi-user.target ((( systemd 登録作業 ))) $ sudo ln -sf /etc/swatchdog/swatchdog.service /etc/systemd/system/swatchdog@.service $ sudo systemctl enable --now swatchdog@local1.service $ sudo systemctl start swatchdog@local1.service $ sudo systemctl stop swatchdog@local1.service