CentOS7下使用TCP over TLS方式安全传输远程主机系统日志

简介: CentOS7下使用TCP over TLS方式安全传输远程主机系统日志

CentOS7下使用TCP over TLS方式安全传输远程主机系统日志


之前有介绍CentOS7下搭建Rsyslog Server记录远程主机系统日志,但由于syslog是UDP 514端口明文传输,基于安全考虑,可以采用TCP over TLS(SSL)方式传输日志


640.jpg


如上图拓扑所示 192.168.198.130 作为Rsyslog Client 192.168.198.131 作为Rsyslog ServerClient端通过rsyslog TCP over TLS(SSL)方式向Server端发送系统日志配置步骤如下


1、Client端与Server端均需要安装rsyslog-gnutls


CentOS7.6默认的rsyslog版本为 rsyslog-8.24.0-34.el7.x86_64

640.jpg


可以通过如下方式安装rsyslog-gnutls组件包

cd /etc/yum.repos.d/
wget http://rpms.adiscon.com/v8-stable/rsyslog.repo
yum install rsyslog-gnutls

640.jpg

640.jpg


会自动升级rsyslog到v8.2012版本

由于rsyslog的yum仓库在国外,建议yum keepcache,将缓存下来的rpm打包

上传到其它机器上rpm方式安装rsyslog-gnutls


640.jpg

640.jpg

rpm -Uvh libestr-0.1.11-1.el7.x86_64.rpm
rpm -Uvh libfastjson4-0.99.8-1.el7.centos.x86_64.rpm 
rpm -Uvh rsyslog-8.2012.0-1.el7.x86_64.rpm 
rpm -Uvh rsyslog-gnutls-8.2012.0-1.el7.x86_64.rpm

640.jpg

2、证书制作

1)、CA签证

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

按向导制作ca.pem

640.jpg

640.jpg

Tips 若没有certtool命令,需要安装gnutls-utils


640.jpg

2)、客户端签证


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

640.jpg

640.jpg

640.jpg


3)、证书信息校验

certtool --certificate-info --infile cert.pem

640.jpg


3、证书文件拷贝到服务端及客户端

cp ca.pem cert.pem key.pem /etc/rsyslog.d/
scp ca.pem root@192.168.198.130:/etc/rsyslog.d/

640.jpg


3、Rsyslog Server端修改配置文件


在如下两个位置加入如下行


1)#$InputTCPServerRun 514这一行后面加入如下行

# make gtls driver the default
$DefaultNetstreamDriver gtls
# certificate files
$DefaultNetstreamDriverCAFile /etc/rsyslog.d/ca.pem
$DefaultNetstreamDriverCertFile /etc/rsyslog.d/cert.pem
$DefaultNetstreamDriverKeyFile /etc/rsyslog.d/key.pem
$ModLoad imtcp # load TCP listener
$InputTCPServerStreamDriverMode 1 # run driver in TLS-only mode
$InputTCPServerStreamDriverAuthMode anon # client is NOT authenticated
$InputTCPServerRun 10514 # start up listener at port 10514

2)$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat这一行后面加入如下行

# This one is the template to generate the log filename dynamically, depending on the client's IP address. 
# 根据客户端的IP单独存放主机日志在不同目录,设置远程日志存放路径及文件名格式        
$template Remote,"/var/log/syslog/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log"
# Log all messages to the dynamically formed file.
# 排除本地主机IP日志记录,只记录远程主机日志
:fromhost-ip, !isequal, "127.0.0.1" ?Remote
# 注意此规则需要在其它规则之前,否则配置没有意义,远程主机的日志也会记录到Server的日志文件中
# 忽略之前所有的日志,远程主机日志记录完之后不再继续往下记录
& ~

640.jpg


然后重启rsyslog

systemctl restart rsyslog
tail -f /var/log/messages


tail -f /var/log/messages检查有没有报错

640.jpg

4、 Rsyslog Client端修改配置文件

vi/etc/rsyslog.d/systemlog_to_server_over_tls.conf 
加入如下行
# certificate files - just CA for a client
$DefaultNetstreamDriverCAFile /etc/rsyslog.d/ca.pem
# set up the action
$DefaultNetstreamDriver gtls 
# use gtls netstream driver
$ActionSendStreamDriverMode 1 
# require TLS for the connection
$ActionSendStreamDriverAuthMode anon 
# server is NOT authenticated
*.* @@(o)192.168.198.131:10514 
# send (all) messages
systemctl restart rsyslog
tail -f /var/log/messages

重启rsyslog,tail -f /var/log/messages检查有没有报错

640.jpg

6、验证测试


Rsyslog Client端触发系统日志,在Server端/var/log/syslog/下对应目录进行验证如下图所示,可以看到测试OK

640.jpg


640.jpg

nestat也可以看到Client与Server 10514端口建立了TCP连接


640.jpg

640.jpg

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
25天前
|
关系型数据库 MySQL Linux
卸载、下载、安装mysql(Linux系统centos7)
卸载、下载、安装mysql(Linux系统centos7)
|
3月前
|
Java Linux Shell
linux自动部署jar包,注册系统服务(基于Centos7)
linux自动部署jar包,注册系统服务(基于Centos7)
95 0
|
2月前
|
Shell Linux C语言
【Shell 命令集合 网络通讯 】Linux 查看系统中的UUCP日志文件 uulog命令 使用指南
【Shell 命令集合 网络通讯 】Linux 查看系统中的UUCP日志文件 uulog命令 使用指南
31 0
|
2月前
|
Linux 应用服务中间件 nginx
【PUSDN】centos查看日志文件内容,包含某个关键字的前后5行日志内容,centos查看日志的几种方法
【PUSDN】centos查看日志文件内容,包含某个关键字的前后5行日志内容,centos查看日志的几种方法
50 0
|
9天前
|
Linux
CentOS 系统常用命令详解
本文介绍了CentOS中11个常用的命令,包括`ls`(列出文件和目录)、`cd`(切换目录)、`pwd`(显示当前目录)、`mkdir`(创建目录)、`rm`(删除文件/目录)、`cp`(复制文件/目录)、`mv`(移动/重命名文件)、`cat`(查看文件内容)、`grep`(搜索文件内容)和`top`(显示系统进程信息)以及`yum`(包管理器)。学习这些命令能提升系统管理和操作效率。
17 0
|
14天前
|
JavaScript Java 测试技术
基于Java的公司员工工作日志办公系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的公司员工工作日志办公系统的设计与实现(源码+lw+部署文档+讲解等)
32 3
|
24天前
|
Linux
linux centos7查看linux的登录日志
linux centos7查看linux的登录日志
21 2
linux centos7查看linux的登录日志
|
24天前
|
网络协议 应用服务中间件 Linux
centos7 Nginx Log日志统计分析 常用命令
centos7 Nginx Log日志统计分析 常用命令
40 2
|
28天前
|
Linux
centos7系统自动同步北京时间教程
通过以上步骤,你的CentOS 7系统会自动同步北京时间,并且设置时区为Asia/Shanghai。这将确保你的系统时间始终与北京时间保持同步。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
34 4
|
1月前
|
C++
QT实现一个简单的日志打印系统
QT实现一个简单的日志打印系统