一元化されたログサーバーをセットアップしようとしています。中央サーバー(A)がポート514のリモートサーバー(B)を介してログを受信しています。これらを受信していることはわかっています。ポート514のtcpdump
からのエントリをいくつか示します。
# tcpdump port 514
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
10:49:52.136520 IP IP_FROM_SERVER_B.55558 > IP_FROM_SERVER_A.syslog: SYSLOG local0.notice, length: 474
10:49:52.136792 IP IP_FROM_SERVER_B.55558 > IP_FROM_SERVER_A.syslog: SYSLOG user.notice, length: 671
10:49:52.136838 IP IP_FROM_SERVER_B.55558 > IP_FROM_SERVER_A.syslog: SYSLOG user.info, length: 79
これは、ログに記録する必要があるファイルの外観です(私はそれを/var/log/test.log
と呼びます)。
May 16 10:43:19 SERVER_A kernel: imklog 3.22.1, log source = /proc/kmsg started.
May 16 10:43:19 SERVER_A rsyslogd: [Origin software="rsyslogd" swVersion="3.22.1" x-pid="12974" x-info="http://www.rsyslog.com"] (re)start
May 16 10:49:08 SERVER_A kernel: device eth0 entered promiscuous mode
May 16 10:49:53 SERVER_A kernel: device eth0 left promiscuous mode
そして、これが私のrsyslog.conf
です
# Use traditional timestamp format
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
# Provides kernel logging support (previously done by rklogd)
$ModLoad imklog
# Provides support for local system logging (e.g. via logger command)
$ModLoad imuxsock
$ModLoad imtcp
$ModLoad imudp
$InputTCPServerRun 514
$UDPServerRun 514
# Write everything to test.log
*.* /var/log/test.log
*.info;mail;.none;authpriv.none;cron.none /var/log/messages
#----------DEFAULT-SETTINGS-----------#
#----------HAVE-NOT-CHANGED------------#
# 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 /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 *
# 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
rsyslog.conf
を編集するたびに、必ずrsyslogを再起動し、現在のバージョンでは非推奨ですが、-r
フラグと-t
フラグを指定してstartデーモンを実行しています。
では、なぜポート514に着信するものがtest.log
に書き込まれないのでしょうか。
編集: MadHatterが私のiptables
出力を表示するように要求しました:
# iptables -L -n -v
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
33 2988 udp -- eth0 * IP_ADDRESS_A 0.0.0.0/0
725K 420M RH-Firewall-1-INPUT all -- * * 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 RH-Firewall-1-INPUT all -- * * 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT 231K packets, 189M bytes)
pkts bytes target prot opt in out source destination
Chain RH-Firewall-1-INPUT (2 references)
pkts bytes target prot opt in out source destination
135K 92M ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
17 1808 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmp type 255
0 0 ACCEPT esp -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT ah -- * * 0.0.0.0/0 0.0.0.0/0
66 9195 ACCEPT udp -- * * 0.0.0.0/0 224.0.0.251 udp dpt:5353
0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:631
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:631
90284 11M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
7 420 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
500K 317M REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-Host-prohibited
ps -eaf | grep syslog
を実行して、オプション-r
で実行されることを確認します。
それ以外の場合は、オプションを使用して/etc/default/rsyslog
を編集する必要があります。
RSYSLOGD_OPTIONS="-m 0 -r"
Syslogdを再起動し、確認します。
ファイアウォールが、少なくともポート514では、任意のインバウンドUDPを受け入れていないことを明確にしましたが、これは間違いなく問題になります。
iptables -L -n -v
の出力を質問に貼り付けたい場合は、開くiptables
行を提案できます。 rsyslogの着信UDP。それが失敗すると、
iptables -I INPUT 1 -p udp --dport 514 -j ACCEPT
おそらくその仕事をするでしょう。
編集:iptables
出力に感謝しますが、server_AからのUDPを許可しますが、eth0
インターフェースでのみ許可します。それが正しいインターフェースであることを確認できますか?