rsyslog

更新日2016-01-30 (土) 13:50:31

rsyslogでsyslogデータを転送

syslog Server

IP 192.168.10.227

/etc/rsyslog.conf

# Provides UDP syslog reception
$ModLoad imudp   ←コメントを外す(UDPで受信)
$UDPServerRun 514  ←コメントを外す

# Provides TCP syslog reception
$ModLoad imtcp           ←コメントを外す(TCPで受信)
$InputTCPServerRun 514   ←コメントを外す

# 許可送信サーバを指定
$AllowedSender TCP, 192.168.10.0/24  

ログの保存場所を指定

ファシリティ(local1,local2など)により保存場所を指定

/etc/rsyslog.d/test.conf作成

# Save log from remote server
local1.*        /var/log/local1.log
local2.*        /var/log/local2.log
authpriv.*      /var/log/vine6x_secure.log

rsyslogを再起動

# /etc/rc.d/init.d/rsyslog restart

クライアントでログファイルを分ける

/etc/rsyslog.d/test.conf

# Save log from remote server

$template local2-204,"/var/log/local2_204_%fromhost%_%$year%%$month%%$day%.log"
$template local2-227,"/var/log/local2_227_%fromhost%_%$year%%$month%%$day%.log"
$template local2-log,"/var/log/local2__%fromhost%_%$year%%$month%%$day%.log"

local1.*        /var/log/local1.log

# local2.*      -?local2-log        ← (1)

:fromhost-ip, isequal, "192.168.10.204"    -?local2-204
& ~
:fromhost-ip, isequal, "192.168.10.227"    -?local2-227
& ~
# local2.*,       /var/log/local2_204.log
authpriv.*      /var/log/vine6x_secure.log

$templateでlogfileのパスを指定

この例はIPごとにファイル名を変えてかつそのファイル名にもIPが入るので(1)のように1行で行えば、ファイル名にIPは入るが、ファイルはホストごとになる

ログのローテーション

''/etc/logrotate.d/horizon

/var/log/message_horizon {
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}

確認

以下でエラーがないことを確認

# logrotate -dv /etc/logrotate.d/horizon
reading config file /etc/logrotate.d/horizon

Handling 1 logs

rotating pattern: /var/log/message_horizon  1048576 bytes (no old logs will be kept)
empty log files are rotated, old logs are removed
considering log /var/log/message_horizon
  log does not need rotating
not running postrotate script, since no logs were rotated

logrotate確認

logrotateを実行

# /usr/sbin/logrotate /etc/logrotate.conf

結果を確認

# cat /var/lib/logrotate.status
logrotate state -- version 2
"/var/log/named.log" 2015-6-16
"/var/log/snmpd.log" 2015-6-16
"/var/log/rpmpkgs" 2015-6-28
"/var/log/message_horizon" 2015-7-4  <=確認
"/var/log/cups/error_log" 2015-7-4
"/var/log/boot.log" 2015-6-28
"/var/log/wtmp" 2015-6-16
"/var/log/spooler" 2015-6-28
"/var/log/btmp" 2015-7-1
"/var/log/xferlog" 2015-6-16
"/var/log/maillog" 2015-6-28
"/var/log/cups/*_log" 2015-6-16
"/var/log/wpa_supplicant.log" 2015-6-16
"/var/log/secure" 2015-6-28
"/var/log/apache2/*log" 2015-6-16
"/var/log/messages" 2015-6-28
"/var/log/cron" 2015-6-28

/var/lib/logrotate.statusを変更

"/var/log/message_horizon" 2015-6-27

実行

# /usr/sbin/logrotate /etc/logrotate.conf

syslog Client

IP 192.168.10.204

ログ転送先のIPとプロトコルを指定

/etc/rsyslog.d/test.conf作成

# Send log to remote server
local1.*        @192.168.10.227  # UDP で送信する
local2.*        @@192.168.10.227 # TCP で送信する
# Login情報を送信(ファシリティ:authpriv プライオリティ:*)
authpriv.*      @@192.168.10.227

@の数でTCP/UDPを決める

rsyslogを再起動

# /etc/rc.d/init.d/rsyslog restart

動作確認

Clientで手動ログ作成

UDPでログ作成

ファシリティ:local1 プライオリティ:debugで「TEST MESSAGE BY UDP」というlogを作成

# logger -p local1.debug TEST MESSAGE BY UDP

TCPでログ作成

# logger -p local2.debug TEST MESSAGE BY TCP

Serverで

# less /var/log/local1.log
Feb 19 20:06:15 localhost okada: TEST MESSAGE BY UDP
# less /var/log/local2.log
Feb 19 20:06:24 localhost okada: TEST MESSAGE BY TCP

ClientにTeratermでloginすると

# less /var/log/vine6x_secure.log
Feb 19 20:13:54 localhost sshd[21024]: pam_winbind(sshd:account): valid_user: wbcGetpwnam gave WBC_ERR_DOMAIN_NOT_FOUND
Feb 19 20:13:54 localhost sshd[21024]: Accepted password for okada from 192.168.10.47 port 51344 ssh2
Feb 19 20:13:54 localhost sshd[21024]: pam_unix(sshd:session): session opened for user okada by (uid=0)
Feb 19 20:14:38 localhost sshd[21048]: Received disconnect from 192.168.10.47: 2: disconnected by server request
Feb 19 20:14:38 localhost sshd[21024]: pam_unix(sshd:session): session closed for user okada

tcpdumpでも確認

#  tcpdump -nnn -i any port 514
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes
07:47:13.912620 IP 192.168.10.204.44777 > 192.168.10.205.514: Flags [P.], seq \
1892027751:1892027813, ack 2952925955, win 115, options [nop,nop,TS val  
820873399 ecr 600031034], length 62
07:47:13.912681 IP 192.168.10.205.514 > 192.168.10.204.44777: Flags [.], ack \
62, win 114, options [nop,nop,TS val 600191526 ecr 820873399], length 0
^C
2 packets captured
2 packets received by filter
0 packets dropped by kernel

Facility/PRIORITY

Facility

コードFacility意味
0kernカーネルメッセージ
1userユーザーレベルメッセージ
2mailメール
3daemonデーモン
4authセキュリティ認証
5syslogsyslogサーバメッセージ
6lprランプリター
7newsネットニューズ
8uucpUUCP
9cronクーロンまどクロックデーモン
10authprivセキュリティ認証(プライベート)
11ftpFTP
16~23local0~7ローカルの予約(任意の用途で利用可能)

PRIORITY

コードPRIORITY意味
0emerg致命的
1alert警戒
2crit危機的
3errエラー
4warning警告
5notice通知
6info情報提供
7debugデバック

CentOS7のファイアウォール

以下のコマンドで停止

# systemctl stop firewalld

またはport514解放

# firewall-cmd --zone=public --add-port=514/udp --permanent
success
# firewall-cmd --zone=public --add-port=514/tcp --permanent
success
# firewall-cmd --reload
success

参考


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS