なにかの技術メモ置き場

なにかの技術メモ置き場

@インフラエンジニア

SYSLOGの設定

20年もの歴史があるらしいsyslogだが、CentOS6ではrsyslogが標準実装されている。
reliable(信頼できる) syslogだそうな。

SYSLOGサーバの設定

ログを受信する範囲を設定。

[root@【SYSLOGサーバ】 ~]# vi /etc/rsyslog.conf
# コメント解除
13:	$ModLoad imudp
14:	$UDPServerRun 514

# その下に下記を追加
15:	$AllowedSender UDP, 127.0.0.1, 192.168.0.0/24

# コメント解除
17:	$ModLoad imtcp
18:	$InputTCPServerRun 514

# その下に下記を追加
19:	$AllowedSender TCP, 127.0.0.1, 192.168.0.0/24

これでUDP,TCPのポート514番で自身とローカルネットワークからのログを受信する。

設定を反映する。

[root@【SYSLOGサーバ】 ~]# /etc/init.d/rsyslog restart

SYSLOGクライアントの設定

今回は思い切って全てのログをSYSLOGサーバに送信する。なお、ローカルにも出力する。

[root@【SYSLOGクライアント】 ~]# vi /etc/rsyslog.conf
# 35行目に下記を追加
34:	#### RULES ####
35:	*.*							@@【SYSLOGサーバIP】:514

# コメント解除
72:	$WorkDirectory /var/lib/rsyslog # where to place spool files
73:	$ActionQueueFileName fwdRule1 # unique name prefix for spool files
74:	$ActionQueueMaxDiskSpace 1g   # 1gb space limit (use as much as possible)
75:	$ActionQueueSaveOnShutdown on # save messages to disk on shutdown
76:	$ActionQueueType LinkedList   # run asynchronously
77:	$ActionResumeRetryCount -1    # infinite retries if host is down

設定を反映する。

[root@【SYSLOGクライアント】 ~]# /etc/init.d/rsyslog restart

事後確認

クライアントにて人工的にログを生成する。

[root@【SYSLOGクライアント】 ~]# logger -p authpriv.warn "AUTH.WARN"

すると、クライアントとサーバの"/var/log/secure"に以下のログが書き込まれるはずだ。

Jun 15 23:44:33 【SYSLOGクライアント】 ssh: AUTH.WARN

これでSYSLOGサーバでのログ集中管理が実現した。

補足

今回は好みで以下のように管理方法を変えてみる。

[root@【SYSLOGサーバ】 ~]# vi /etc/rsyslog.conf
34:	#### RULES ####
35:	:fromhost-ip, isequal, "【SYSLOGクライアントIP】"			/var/log/【SYSLOGクライアントIP】.log
36:	:fromhost-ip, isequal, "【SYSLOGクライアントIP】"			~

行頭の「:」でフィルタ条件の記載を開始。
fromhost-ipはログ送信元のIPアドレスを表し、それが【SYSLOGクライアントIP】に等しければ(isequal)、/var/log/【SYSLOGクライアントIP】.logに書き込む。

ただ、このままではいただけない。というのも、rsyslogは設定ファイルのルールを上から順に読み取って実行していくため、標準の出力先にも同じログが出力されるままになる。
これを防ぐために、直後に同条件で出力先に「~」を指定する。すると以降はフィルタ条件に一致したログの出力が抑止される。

ひとまずの目的は達成。