单位:中国移动智慧家庭运营中心

Part 01

●什么是rsyslog●

作为一个功能强大和高度配置化的系统日志守护进程,rsyslog可以在日志服务器或日志客户端这两种不同的环境中运行。作为日志服务器,rsyslog可以从网络中的其他主机收集日志数据;作为日志客户端,可以过滤并发送内部日志消息至可路由的远程rsyslog服务器。

以下是rsyslog的一些关键特性:

这些特性使rsyslog成为处理和管理系统日志的强大工具。

Part 02

●rsyslog日志类型及等级●

rsyslog日志类型用来定义日志消息的来源,方便对日志进行分类:

配置rsyslog服务_配置rsyslog服务器_rsyslog配置

rsyslog日志等级定义不同消息的级别:

配置rsyslog服务器_配置rsyslog服务_rsyslog配置

Part 03

●如何快速搭建rsyslog●

为了将内部日志消息发送到远程rsyslog服务器,我们可以采用以下拓扑配置:

通过上述配置,我们可以实现内部日志的集中管理和存储,以便进行后续的分析和监控。

配置rsyslog服务器_配置rsyslog服务_rsyslog配置

3.1 rsyslog日志服务端配置

– 检查是否安装了rsyslog服务

ps -ef | grep rsyslogrsyslogd -v

– 编辑配置文件

vi /etc/rsyslog.conf$ModLoad imudp$UDPServerRun 514

这个配置使rsyslog守护进程能够通过UDP端口514接收日志消息。UDP是一种速度比TCP更快的协议,但不具备TCP协议的可靠性。如果需要使用可靠的传输机制,可以设置在TCP端口514上接收日志消息。

需要注意的是,可以同时启用TCP和UDP来监听TCP/UDP连接:

$ModLoad imtcp$InputTCPServerRun 514

除了配置接收日志信息的协议和端口外,还需要创建日志接收模板,以告知rsyslog守护进程如何记录从其他客户端机器接收到的消息。

使用文本编辑器打开/etc/rsyslog.conf文件,在GLOBAL DIRECTIVE块之前添加以下模板配置。使用指令$template RemoteLogs指示rsyslog后台进程将日志消息写入独立的本地日志文件/var/log/rsyslogTest中。

$template RemoteLogs,"/var/log/rsyslogTest/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log"  *.* ? RemoteLogs

– 编辑完配置文件后,重启守护进程使更改生效

systemctl restart rsyslog

可以使用netstat命令来验证rsyslog守护进程是否正常工作,运行以下命令:

$ sudo netstat -tulpn | grep rsyslog 如果rsyslog守护进程正在使用UDP监听端口,可以看到类似下面的输出:udp 0 0 0.0.0.0:514 0.0.0.0:* 551/rsyslogdudp6 0 0 :::514 :::* 551/rsyslogd 如果rsyslog守护进程被设置在TCP连接端口,可以看到类似下面的输出:tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN 1891/rsyslogdtcp6 0 0 :::514 :::* LISTEN 1891/rsyslogd以上输出表明rsyslog守护进程正在监听相应的端口,并处于活动状态。

3.2 rsyslog日志客户端配置

– 安装rsyslog守护进程

在CentOS 7上,rsyslog守护进程已经预先安装。可以执行以下命令来验证rsyslog是否已安装到CentOS系统上:

# rpm -qa | grep rsyslog# rsyslogd -v、

如果处于某种原因,rsyslog守护进程没有出现在系统中,可以使用以下命令来安装:

# yum install rsyslog

– 修改配置文件

用文本编辑器打开位于/etc路径下的rsyslog主配置文件:

# vim/etc/rsyslog.conf 开启文件用于编辑后,将IP地址替换为远程rsyslog服务器的IP地址:*.* @172.21.44.245:514 该配置指示rsyslog守护进程将系统上各个设备的各种日志消息路由到远程rsyslog服务器的UDP端口514(IP地址为172.21.44.245)。如果出于某种原因,需要更为可靠的协议TCP,可以如下配置:*.* @@172.21.44.245:514

配置rsyslog服务器_rsyslog配置_配置rsyslog服务

3.3 编辑完配置文件后,重启守护进程使更改生效

systemctl restart rsyslog.service

– 验证远程日志记录

在rsyslog客户端上输入命令:logger -t kern -p err “addddddddddd”,该命令将在客户端上创建一个带有kern类型和err等级的日志消息,内容为”addddddddddd”。

配置rsyslog服务_配置rsyslog服务器_rsyslog配置

rsyslog service查看日志信息,可以看到日志文件中有客户端发送的内容:

rsyslog配置_配置rsyslog服务器_配置rsyslog服务

Part 04

●如何快速搭建到远程日志服务器的安全日记●

为了提高安全性,可以通过使用TLS进行安全的远程日志记录。使用TLS进行安全的远程日志记录具有以下一些安全优势:

下面将使用两个不同的节点演示如何使用带有TLS证书的rsyslog进行安全的远程日志记录。这两个节点分别是client和server,client节点作为rsyslog客户端,server节点作为远程日志服务器。

4.1 生成CA证书

要创建用于将syslog安全转发到远程日志服务器的自签名证书,需要先安装certtool工具,它是GnuTLS的一部分:

yum -y install gnutls-utils

生成私钥,并设置权限以确保创建的密钥只对root用户可读:

certtool --generate-privkey --outfile ca-key.pemchmod 400 ca-key.pem

创建自签名CA证书:

certtool --generate-self-signed --load-privkey ca-key.pem --outfile ca.pem

关于证书有效性,当该证书过期时,需要重新创建所有证书,我们可以设置一个比较长的时间3650天(大约10年)。

如图所示,ca-key.pem是证书颁发机构的私钥,ca.pem是分发给其他节点的公钥。

4.2 生成机器证书

在此步骤中,我们将生成服务器端(server)的私钥和证书。–outfile反映了将要使用私钥的服务器名称,我们将server端名称命名为node3:

certtool --generate-privkey --outfile node3-key.pem --bits 2048

通过私钥获取签名请求,加载服务端私钥node3-key.pem,并将该私钥签名到node3-request.pem:

certtool --generate-request --load-privkey node3-key.pem --outfile node3-request.pem

完成上述操作后,日志服务器的密钥生成过程已经完成。证书颁发机构的私钥(ca-key.pem)将对即将使用的证书进行签名。

certtool --generate-certificate --load-request node3-request.pem --outfile node3-cert.pem --load-ca-certificate ca.pem --load-ca-privkey ca-key.pem

4.3 分发TLS证书以启用安全的远程日志记录

接下来,我们将密钥复制到远程节点服务端node3。

在复制密钥之前,在服务器节点上创建一个目录rsyslog-key来存储这些密钥,将密钥从client复制到server。

4.4 服务器配置以安全转发系统日志

为了在服务端接受消息,需进行相应的配置:

在/etc/rsyslog.config文件中输入以下信息:#将gtls驱动程序设为默认驱动程序 $ DefaultNetstreamDriver gtls#证书文件 $ DefaultNetstreamDriverCAFile /etc/rsyslog-keys/ca.pem $ DefaultNetstreamDriverCertFile /etc/rsyslog-keys/node3-cert.pem $ DefaultNetstreamDriverKeyFile /etc/rsyslog-keys/node3-key.pem#TCP侦听器$ ModLoad imtcp #在仅TLS模式下运行驱动程序$ InputTCPServerStreamDriverMode 1$ InputTCPServerStreamDriverAuthMode anno#在端口514上启动侦听器$ InputTCPServerRun 514

重启rsyslog服务,检查服务状态:

systemctl status rsyslog.service

4.5 客户端配置以安全地接收日志消息

配置客户端实现将日志安全地传输到远程日志服务器,在客户端创建目录,存储ca.pem。

在/etc/rsyslog.config文件中输入以下信息:

#tls protocol $DefaultNetstreamDriver gtls $DefaultNetstreamDriverCAFile /etc/rsyslog-keys/ca.pem $ActionSendStreamDriverAuthMode anon$ActionSendStreamDriverMode 1 *.* @@172.21.44.245:514

重启rsyslog服务,检查服务状态:

systemctl status rsyslog.service

4.6验证远程日志记录

在客户端rsyslog client输入:logger “hello world”,截图信息可知远程日志服务器接收到了客户端发送的消息。

rsyslog配置_配置rsyslog服务_配置rsyslog服务器

Part 05

●结语●

rsyslog是一个强大而安全的日志处理系统,被广泛用于不同Linux发行版中,如Ubuntu 14.04、CentOS 6及以后的版本。它提供了丰富的功能,可以从不同的源收集日志,并提供过滤和格式化日志的能力。

通过使用rsyslog,我们能够轻松管理和记录系统日志。rsyslog可以集中处理和存储登录认证、系统日志等重要信息,并将其发送到远程日志服务器上。这样做有助于减轻系统的负载并确保日志的集中管理。此外,通过rsyslog,我们可以随时获取最新的日志信息,以进行监控和分析,帮助我们了解系统的运行状况。

总的来说,rsyslog在日志收集方面提供了强大的功能,使我们能够更好地管理和利用系统日志。它是一个可靠且广泛使用的工具,有助于提高系统的安全性、可靠性和可管理性。

限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: lzxmw777

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注