ルータのためのsyslog設定
ルータのログはそんなにたくさん残るものでもない。
再起動したら消える。
ではローカルのlinuxに残せないか。
ログを残したいというよりも、VPNしたりsshしたときに特定のキーワードがログに出力されるから、それを監視させたいというのが一番最初の目的。
windowsでsyslogdもどきを動かすこともできるけど、シェルスクリプトで書いたログ監視をそのまま使いたかったので使わない。
ローカルlinuxで動いているrsyslogdがログを受け付けてくれる。
172.16.17.xxは水際のルータ。機種はrtx1210で外側は固定IP。一般家庭で使うルータが1万円かそこらで買えるけど、勉強のためもあって6万円ほどで購入。そのぶんできることも多く、プログラム必要だけどログの監視とメール送信ができたり、サポート外だけどGoogle CloudにVPN接続する設定まで入れて使ってる。
ローカルlinuxで受け付けるよう設定したのが以下。
centos7の場合
最初はcentos6の頃からやってたけど設定ファイル古すぎてバックアップ残してない。
centos8の頃に使ってた/etc/rsyslog.confの設定。
設定は「:fromhost-ip, isequal, “172.16.17.xx”」っていう記述を足してsyslogのデーモン再起動したはず。
# rsyslog configuration file
# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
# If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html
#### MODULES ####
# The imjournal module bellow is now used as a message source instead of imuxsock.
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imjournal # provides access to the systemd journal
#$ModLoad imklog # reads kernel messages (the same are read from journald)
#$ModLoad immark # provides --MARK-- message capability
# Provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514
# Provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514
$ModLoad imudp
$UDPServerRun 514
$umask 0022
$FileCreateMode 0644
$DirCreateMode 0755
#### GLOBAL DIRECTIVES ####
# Where to place auxiliary files
$WorkDirectory /var/lib/rsyslog
# Use default timestamp format
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
# File syncing capability is disabled by default. This feature is usually not required,
# not useful and an extreme performance hit
#$ActionFileEnableSync on
# Include all config files in /etc/rsyslog.d/
$IncludeConfig /etc/rsyslog.d/*.conf
# Turn off message reception via local log socket;
# local messages are retrieved through imjournal now.
$OmitLocalLogging on
# File to store the position in the journal
$IMJournalStateFile imjournal.state
#### RULES ####
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none;local0.none /var/log/messages
# The authpriv file has restricted access.
authpriv.* /var/log/secure
# Log all the mail messages in one place.
mail.* -/var/log/maillog
# Log cron stuff
cron.* /var/log/cron
# Everybody gets emergency messages
*.emerg :omusrmsg:*
# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler
# Save boot messages also to boot.log
local7.* /var/log/boot.log
# Save network messages to network.log
:fromhost-ip, isequal, "172.16.17.xx" /var/log/network_172.16.17.xx.log
# ### begin forwarding rule ###
# The statement between the begin ... end define a SINGLE forwarding
# rule. They belong together, do NOT split them. If you create multiple
# forwarding rules, duplicate the whole block!
# Remote Logging (we use TCP for reliable delivery)
#
# An on-disk queue is created for this action. If the remote host is
# down, messages are spooled to disk and sent when it is up again.
#$ActionQueueFileName fwdRule1 # unique name prefix for spool files
#$ActionQueueMaxDiskSpace 1g # 1gb space limit (use as much as possible)
#$ActionQueueSaveOnShutdown on # save messages to disk on shutdown
#$ActionQueueType LinkedList # run asynchronously
#$ActionResumeRetryCount -1 # infinite retries if host is down
# remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional
#*.* @@remote-host:514
# ### end of the forwarding rule ###
ubuntu20の場合
無線LANの性能が低くなったなーと感じて買い換えたときに、syslogもいちおう残してみるかと思って設定追加。
172.16.17.yyは無線LANかつローカルLANのルータ。機種はWSR-2533DHP2。
案外、無線LANの電波飛ばせて1万円程度で買えるsyslog転送可能なルータは多くなかった。
centos8に見切りをつけて、ubuntu20に乗り換えた後に作った設定。
同じくrsyslog.confを使うけどバージョン上がってたから設定の内容が違う。
書き方が違うので戸惑った。
「input(type=”imudp” port=”514″ ruleset=”gvisnet”)」って行からの設定が書いた箇所。
module(load="imuxsock") # provides support for local system logging
module(load="imklog")
module(load="builtin:omfile") # output file gvis
#module(load="immark") # provides --MARK-- message capability
# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514" ruleset="gvisnet")
ruleset(name="gvisnet"){
if $fromhost-ip == '172.16.17.xx' then {
action(type="omfile" file="/var/log/network_172.16.17.xx.log")
stop
}
if $fromhost-ip == '172.16.17.yy' then {
action(type="omfile" file="/var/log/network_172.16.17.yy.log")
stop
}
}
# provides TCP syslog reception
# provides kernel logging support and enable non-kernel klog messages
## module(load="imklog" permitnonkernelfacility="on")
###########################
#### GLOBAL DIRECTIVES ####
###########################
#
# Use traditional timestamp format.
# To enable high precision timestamps, comment out the following line.
#
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
# Filter duplicated messages
$RepeatedMsgReduction on
#
# Set the default permissions for all log files.
#
$FileOwner syslog
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$PrivDropToUser syslog
$PrivDropToGroup syslog
#
# Where to place spool and state files
#
$WorkDirectory /var/spool/rsyslog
#
# Include all config files in /etc/rsyslog.d/
#
$IncludeConfig /etc/rsyslog.d/*.conf
ルータ側の設定
rtx1210だと、ブラウザにログインして[管理]⇒[保守 SYSLOGの管理]⇒[設定]から設定。
コマンドラインだと管理権限で設定する。172.16.17.zzはローカルlinux。
syslog host 172.16.17.zz
syslog srcport 514
syslog facility local0
WSR-2533DHP2だと、ブラウザでログインして宛先IPとsyslog有効の設定する。
飛んでくるログの保管状態
こんな具合に保管。溢れないようログローテートも忘れずに実施。
$ pwd
/var/log
$ ls -l network_172.16.17.1*
-rw-r--r-- 1 syslog syslog 1160 6月 17 04:56 network_172.16.17.xx.log
-rw-r--r-- 1 syslog syslog 6532 6月 16 11:56 network_172.16.17.xx.log.1
-rw-r--r-- 1 syslog syslog 1038 6月 15 11:56 network_172.16.17.xx.log.2.gz
-rw-r--r-- 1 syslog syslog 1000 6月 14 11:55 network_172.16.17.xx.log.3.gz
-rw-r--r-- 1 syslog syslog 714 6月 13 08:55 network_172.16.17.xx.log.4.gz
-rw-r--r-- 1 syslog syslog 1592 6月 12 15:45 network_172.16.17.xx.log.5.gz
-rw-r--r-- 1 syslog syslog 1184 6月 11 11:55 network_172.16.17.xx.log.6.gz
-rw-r--r-- 1 syslog syslog 1821 6月 10 11:55 network_172.16.17.xx.log.7.gz
-rw-r--r-- 1 syslog syslog 153 6月 17 04:59 network_172.16.17.yy.log
-rw-r--r-- 1 syslog syslog 1985 6月 16 10:46 network_172.16.17.yy.log.1
-rw-r--r-- 1 syslog syslog 502 6月 15 08:02 network_172.16.17.yy.log.2.gz
-rw-r--r-- 1 syslog syslog 324 6月 14 08:02 network_172.16.17.yy.log.3.gz
-rw-r--r-- 1 syslog syslog 284 6月 12 10:59 network_172.16.17.yy.log.4.gz
-rw-r--r-- 1 syslog syslog 412 6月 11 08:02 network_172.16.17.yy.log.5.gz
-rw-r--r-- 1 syslog syslog 417 6月 10 08:02 network_172.16.17.yy.log.6.gz
-rw-r--r-- 1 syslog syslog 748 6月 9 10:40 network_172.16.17.yy.log.7.gz
$
ローカルlinuxは24時間稼働に近い動かし方をしてたけど、方針変更して稼働時間減らしたので、rtx1210は最終的にはログ監視のシェルを使うのやめて、rtx1210自身に監視スクリプト入れて動かしている。
次のステップとしてはログをGoogleCloudのログ保管庫に入れられないか模索中。そしたらローカルlinuxなくても一定期間のログが残せる。