RHEL9系でrsyslogを使用したシスログ受信サーバを設定する場合のメモです。
以下のファイルを新規で作成します。
# vi /etc/rsyslog.d/1-module.conf
module(load=”imudp”)
input(type=”imudp” port=”514″)
module(load=”imtcp”)
input(type=”imtcp” port=”514″)
次に、以下のファイルも新規で作成します。まずはテスト用に仮で作成します。
※ログの監視をする場合があるため出力先のファイル名は固定、送信元のIPアドレスで振り分け
# vi /etc/rsyslog.d/2-template.conf
$template ABC-FW01, “/var/log/rsyslog/ABC-FW01/ABC-FW01.log”
:fromhost-ip, isequal, “127.0.0.1” -?ABC-FW01
$template ABC-FW02, “/var/log/rsyslog/ABC-FW02/ABC-FW02.log”
:fromhost-ip, isequal, “127.0.0.1” -?ABC-FW02
rsyslogを再起動します。
# systemctl restart rsyslog
再起動後にログの保存先ディレクトリが作成され、自サーバのシスログが出力されていることを確認します。
# cat /var/log/rsyslog/ABC-FW01/ABC-FW01.log
# cat /var/log/rsyslog/ABC-FW02/ABC-FW02.log
確認できたら対象ログのローテート設定を入れます。
※日付でローテートして圧縮し、1年間保存
# vi /etc/logrotate.d/rsyslog-rcv
/var/log/rsyslog/ABC-FW01/ABC-FW01.log
/var/log/rsyslog/ABC-FW02/ABC-FW02.log
{
missingok
compress
dateext
weekly
rotate 53
sharedscripts
postrotate
/usr/bin/systemctl -s HUP kill rsyslog.service >/dev/null 2>&1 || true
endscript
}
強制ローテートさせ、日付がファイル名に付いた圧縮ファイルが保存されていることを確認します。
# logrotate -fv /etc/logrotate.d/rsyslog-rcv
# ll /var/log/rsyslog/*
ローテートの確認が出来たら、設定内のIPアドレスを受信対象の機器に変更します。
※ABC-FW01:172.16.10.254、ABC-FW02:172.16.20.254 の場合
# vi /etc/rsyslog.d/2-template.conf
$template ABC-FW01, “/var/log/rsyslog/ABC-FW01/ABC-FW01.log”
:fromhost-ip, isequal, “172.16.10.254” -?ABC-FW01
$template ABC-FW02, “/var/log/rsyslog/ABC-FW02/ABC-FW02.log”
:fromhost-ip, isequal, “172.16.20.254” -?ABC-FW02
テストで使用したファイルは削除します。
# rm /var/log/rsyslog/*/*
rsyslogを再起動します。
# systemctl restart rsyslog
PowershellでUDPのテスト送信(UDP/514)をする場合には以下の内容で実行します。
※シスログ受信サーバ:172.16.10.200、送信元IPアドレス: 172.16.10.254の場合
function Send-Syslog {
param (
[string]$Server = “172.16.10.200”,
[int]$Port = 514,
[string]$Message
)
$Client = New-Object System.Net.Sockets.UdpClient
$Encoded = [System.Text.Encoding]::UTF8.GetBytes($Message)
try {
$Client.Send($Encoded, $Encoded.Length, $Server, $Port)
} finally {
$Client.Close()
}
}
Send-Syslog -Message “PowerShellからのUDPテスト送信”
PowershellでTCPのテスト送信(TCP/514)をする場合には以下の内容で実行します。
※シスログ受信サーバ:172.16.10.200、送信元IPアドレス: 172.16.10.254の場合
function Send-TcpLog {
param (
[string]$Server = “172.16.10.200”,
[int]$Port = 514,
[string]$Message
)
try {
$Client = [System.Net.Sockets.TcpClient]::new($Server, $Port)
$Stream = $Client.GetStream()
$Bytes = [System.Text.Encoding]::UTF8.GetBytes(($Message + “`n”))
$Stream.Write($Bytes, 0, $Bytes.Length)
$Client.Dispose()
} catch {
Write-Error “TCP送信失敗: $_”
}
}
Send-TcpLog -Message “PowerShellからのTCPテスト送信”
Linuxから同様にloggerでテスト送信する場合は、それぞれ以下のコマンド実行になります。
※シスログ受信サーバ:172.16.10.200、送信元IPアドレス: 172.16.10.254の場合
# logger -n 172.16.10.200 -P 514 “UDP test”
# logger -n 172.16.10.200 -P 514 –tcp “TCP test”
テスト後、受信したログを確認します。
# cat /var/log/rsyslog/ABC-FW01/ABC-FW01.log
受信できない場合は、firewallの設定等を見直します。






