需配置rsyslog服务端监听UDP/TCP 514端口并按源IP分类存日志,客户端通过@或@@转发日志,支持TLS加密增强安全,最后通过端口监听、服务状态、日志落盘和测试消息验证传输。

如果您希望将多台Linux主机的日志集中收集到一台专用服务器上进行统一分析与审计,则需要配置rsyslog作为远程日志接收端与发送端。以下是实现该目标的具体步骤:
一、配置rsyslog服务端(日志服务器)
服务端需启用UDP/TCP监听,接收来自客户端的syslog消息,并按主机名或IP地址分类存储日志文件。默认rsyslog配置文件为/etc/rsyslog.conf,模块加载和规则需显式启用。
1、编辑主配置文件:sudo nano /etc/rsyslog.conf
2、取消以下两行的注释(启用UDP和TCP接收模块):module(load="imudp") 和 module(load="imtcp")
3、在模块加载下方添加监听规则:input(type="imudp" port="514") 与 input(type="imtcp" port="514")
4、添加模板定义以支持按来源主机分离日志:$template RemoteLogs,"/var/log/%FROMHOST-IP%/%PROGRAMNAME%.log"
5、应用模板并指定接收规则:*.* ?RemoteLogs
6、创建日志目录并赋权:sudo mkdir -p /var/log/192.168.1.0/ && sudo chown syslog:adm /var/log/192.168.1.0/
7、重启服务生效:sudo systemctl restart rsyslog
二、配置rsyslog客户端(日志发送端)
客户端需将本地日志通过网络转发至服务端,可选择UDP(轻量、无确认)或TCP(可靠、支持TLS加密)。配置前应确保服务端防火墙放行514端口。
1、编辑客户端rsyslog配置:sudo nano /etc/rsyslog.d/50-remote-logging.conf
2、追加UDP转发规则(替换192.168.1.100为服务端真实IP):*.* @192.168.1.100:514
3、若需使用TCP并启用队列缓存(防止网络中断丢日志),改写为:*.* @@192.168.1.100:514;RSYSLOG_ForwardFormat
4、添加全局队列参数(提升可靠性):$ActionQueueFileName fwdRule1、$ActionQueueMaxDiskSpace 1g、$ActionQueueSaveOnShutdown on
5、保存后重启客户端rsyslog:sudo systemctl restart rsyslog
三、启用TLS加密传输(安全增强方案)
当日志包含敏感信息时,明文传输存在泄露风险。rsyslog支持通过gnutls模块实现端到端TLS加密,需在服务端生成证书并在客户端验证服务端身份。
1、安装依赖包:sudo apt install gnutls-bin -y(Debian/Ubuntu)或 sudo yum install gnutls-utils -y(RHEL/CentOS)
2、在服务端生成CA及服务端证书:sudo certtool --generate-privkey --outfile /etc/ssl/private/ca-key.pem
3、生成CA证书:sudo certtool --generate-self-signed --load-privkey /etc/ssl/private/ca-key.pem --outfile /etc/ssl/certs/ca.pem
4、生成服务端密钥与证书请求:sudo certtool --generate-privkey --outfile /etc/ssl/private/rsyslog-key.pem
5、签署服务端证书:sudo certtool --generate-certificate --load-privkey /etc/ssl/private/rsyslog-key.pem --load-ca-certificate /etc/ssl/certs/ca.pem --load-ca-privkey /etc/ssl/private/ca-key.pem --outfile /etc/ssl/certs/rsyslog-cert.pem
6、修改服务端rsyslog.conf,加载gnutls模块并配置TLS输入:module(load="imtcp" StreamDriver.Name="gtls" StreamDriver.Mode="1" StreamDriver.AuthMode="x509/name")
7、添加TLS参数:$InputTCPServerStreamDriverAuthMode x509/name 与 $InputTCPServerStreamDriverPermittedPeer *.example.com
8、在客户端配置中改用TLS转发语法:*.* @@(o)192.168.1.100:6514;RSYSLOG_ForwardFormat
四、验证日志传输状态与排错
传输链路是否正常需从协议连通性、服务监听状态、日志内容落盘三个层面交叉验证。rsyslog内置工具和系统命令可快速定位常见故障点。
1、检查服务端514端口监听情况:sudo ss -tuln | grep :514
2、查看rsyslog服务运行状态:sudo systemctl status rsyslog
3、实时监控服务端日志接收:sudo tail -f /var/log/192.168.1.50/auth.log(替换为实际客户端IP)
4、手动触发一条测试日志:logger "Test message from client $(hostname)"
5、检查客户端rsyslog队列状态:sudo rsyslogd -N1(语法校验)与 sudo journalctl -u rsyslog -f(运行日志)
6、若使用TLS,验证证书路径与权限:sudo ls -l /etc/ssl/certs/rsyslog-cert.pem /etc/ssl/private/rsyslog-key.pem










