介绍
本文从rsyslog服务器搭建前的环境准备开始,详细介绍了如何配置rsyslog、生成TLS认证证书,并指出搭建过程中可能遇到的问题,旨在帮助读者快速在openEuler系统上部署rsyslog服务器。
一、搭建前环境准备
1、确认rsyslog的版本号
本指导基于openEuler系统搭建rsyslog服务器,使用rsyslogd -ver查看rsyslog版本,一般系统上都会自带rsyslog服务,确认rsyslog的版本号为8.2210.0以上。 若版本不符合要求,需要重新安装较新版本的openEuler系统(openEuler22.03SP3及以上的rsyslog版本号为8.2210.0以上)
2、确认rsyslog支持tls功能
检查/usr/lib64/rsyslog目录是否有lmnsd_gtls.so文件,若没有,需要通过openEuler官方https://www.openeuler.openatom.cn/zh/download/下载安装包 如果不希望整个系统进行重装,可以只安装tls的rpm包
rpm包安装方法
(1)上传iso文件
(2)解压iso文件(openEuler的iso文件名称以实际iso文件名称为准)
mkdir /mnt/iso
mount -o loop openEuler-22.03-LTS-SP3-everything-aarch64-dvd.iso /mnt/iso
ls /mnt/iso/(3)进入Packages目录并找到tls安装包
cd /mnt/iso/Packages/
ls | grep syslog(4)安装tls的rpm包(rpm包名称以实际安装包名称为准)
rpm -ivh rsyslog-gnutls-8.2210.0-6.oe2203sp3.aarch64.rpm --nodeps3、确认关闭SELinux
使用sestatus查看SELinux的状态,若为enabled,rsyslog监听非默认端口号(514)时会失败,因此在确认系统安全的前提下,将SELinux关闭
SELinux关闭方法
(1)修改SELinux配置文件
vi /etc/selinux/config 将SELINUX=enforcing修改为SELINUX=disabled
(2)重启系统
重启后查看SELinux状态,应为disabled
4、确认关闭防火墙
使用systemctl status iptables查看iptables服务的状态,若为active,会在报文传输过程中丢弃syslog日志包,因此在确认系统安全的前提下,将iptables关闭。
iptables关闭方法
(1)关闭iptables
systemctl stop iptables查看iptables状态,应为inactive
(2)如果系统重启过后无法接收到tls认证传输的syslog报文,可以尝试使用systemctl start iptables开启防火墙然后再使用systemctl stop iptables关闭防火墙
5、配置rsyslog服务器域名(可选,tls认证非强制要求syslog服务器必须使用域名)
(1)配置域名解析规则
1、配置域名解析规则文件
首先需要找一台域名服务器,修改域名服务器上/etc/named.conf文件,添加域名解析规则,其中xx.xx.xx.xx替换为实际syslog服务器的ip,两处ip需要一致
zone "server.rsyslog.com" IN {
type master;
file "server.rsyslog.com.zone";
allow-transfer { xx.xx.xx.xx;};
allow-query {any;};
allow-update { any; };
notify yes;
also-notify {xx.xx.xx.xx;};
};然后在/var/named/目录下添加server.rsyslog.com.zone文件,文件内容如下所示:(文件名称以实际的syslog服务器域名为准,此处仅为示例,xx.xx.xx.xx替换为实际syslog服务器的ip)
$TTL 600
@ IN SOA dns.server.rsyslog.com dnsadmin.server.rsyslog.com. (
2015031288
1H
2M
2D
1D
)
IN NS dns
IN NS ns2
IN MX 10 mial
ns2 IN A xx.xx.xx.xx
dns IN A xx.xx.xx.xx
mail IN A xx.xx.xx.xx
www IN A xx.xx.xx.xx
pop IN CNAME mail
ftp IN CNAME www2、检查域名解析配置文件的格式是否正确,运行以下命令
named-checkzone server.rsyslog.com server.rsyslog.com.zone运行结果如果返回OK,则代表配置文件无误
3、重启DNS服务
service named restart4、测试域名的访问
在bmc上执行ping操作,确认bmc与syslog服务器域名可以ping通
ping www.server.rsyslog.com(2)在BMC配置DNS服务器地址
通过openUBMC管理->网络配置->DNS->首选服务器设置DNS服务器地址
(3)确认BMC可以ping通rsyslog服务器域名
二、搭建rsyslog服务器
1、TCP协议
(1)在目录/etc/rsyslog.d下新建配置文件,如remote.conf,并写入如下内容
# 开启TCP接收并监听11515端口号
module(load="imtcp")
$InputTCPServerRun 11515
# 定义模板来生成文件路径和格式,将远端日志存放于/var/log/tcp.log
$template Remote, "/var/log/tcp.log"
# 排除本地IP的日志记录,只记录远程日志
:fromhost-ip, !isequal, "127.0.0.1" ?Remote(2)使用systemctl restart rsyslog重启rsyslog服务,使用systemctl status rsyslog查看rsyslog状态无报错
(3)使用netstat -nuplt | grep rsyslog查看是否成功监听相应端口号
(4)查看/var/log/tcp.log,确认成功接收到日志
2、UDP协议
(1)在目录/etc/rsyslog.d下新建配置文件,如remote.conf,并写入如下内容
# 开启UDP接收并监听11516端口号
module(load="imudp")
input(type="imudp" port="11516")
# 定义模板来生成文件路径和格式,将远端日志存放于/var/log/udp.log
$template Remote, "/var/log/udp.log"
# 排除本地IP的日志记录,只记录远程日志
:fromhost-ip, !isequal, "127.0.0.1" ?Remote(2)使用systemctl restart rsyslog重启rsyslog服务,使用systemctl status rsyslog查看rsyslog状态无报错
(3)使用netstat -nuplt | grep rsyslog查看是否成功监听相应端口号
(4)查看/var/log/udp.log,确认成功接收到日志
3、TLS协议
(1)在目录/etc/rsyslog.d下新建配置文件,如remote.conf,并写入如下内容
# 加载gtls驱动,用于实现tls加密
$DefaultNetstreamDriver gtls
#设置CA证书路径,用户可自定义配置路径
$DefaultNetstreamDriverCAFile /etc/rsyslog.d/SyslogCA.crt
#设置服务器证书文件路径,用户可自定义配置路径
$DefaultNetstreamDriverCertFile /etc/rsyslog.d/server.crt
#设置服务器秘钥文件路径,用户可自定义配置路径
$DefaultNetstreamDriverKeyFile /etc/rsyslog.d/server.key
#加载TCP模块
$Modload imtcp
#设置TCP传输模式,TLS传输必须设置为1
$InputTCPServerStreamDriverMode 1
#认证模式,此处设置为证书合法性校验,仅校验证书是否合法
$InputTCPServerStreamDriverAuthMode anon
#服务端侦听端口,必须确保处于侦听状态,并不被其他进程占用,本例使用11514端口
$InputTCPServerRun 11514
#日志存放位置,用户可定义配置日志存放路径
$template Remote,"/var/log/syslog/%fromhost-ip%/%$YEAR%-%$MONTH%-%$DAY%.log"
# 排除本地IP的日志记录,只记录远程日志
:fromhost-ip, !isequal, "127.0.0.1" ?Remote如果使用tls单向认证,那么$DefaultNetstreamDriverCAFile /etc/rsyslog.d/SyslogCA.crt这行内容并非必需配置,可以注释掉
(2)在/etc/rsyslog.d下导入相应证书(此目录需要根据第一步配置的文件路径确认)
SyslogCA.crt为CA证书
server.crt为服务器ssl证书
server.key为服务器ssl证书私钥
如果导入的文件路径不对或者文件名称错误会导致rsyslog服务启动失败
(3)使用systemctl restart rsyslog重启rsyslog服务,使用systemctl status rsyslog查看rsyslog状态无报错
(4)使用netstat -nuplt | grep rsyslog查看是否成功监听相应端口号
(5)查看/var/log/syslog/%fromhost-ip%/%$YEAR%-%$MONTH%-%$DAY%.log,确认成功接收到日志 fromhost-ip为客户端,即bmc的ip,%$YEAR%-%$MONTH%-%$DAY%为传输日期
三、证书制作
证书制作方法可以参考社区wiki可观测环境搭建中2.2 准备证书/密钥文件章节进行,其中证书文件名称替换为第一步中的证书文件名称
只有一点需要特别注意:
制作SSL证书时,如果syslog服务器使用的是域名进行tls认证,那么ssl证书主体中commonName字段的值必须与syslog服务器的域名一致!!!以本指导为例,commonName字段的值需要填为www.server.rsyslog.com
如果使用ip地址进行tls认证,则无此要求。