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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 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日志并进行多维度分析。
相关文章
|
6月前
|
Linux 应用服务中间件 nginx
【PUSDN】centos查看日志文件内容,包含某个关键字的前后5行日志内容,centos查看日志的几种方法
【PUSDN】centos查看日志文件内容,包含某个关键字的前后5行日志内容,centos查看日志的几种方法
150 0
|
7天前
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
35 3
|
15天前
|
存储 Linux Docker
centos系统清理docker日志文件
通过以上方法,可以有效清理和管理CentOS系统中的Docker日志文件,防止日志文件占用过多磁盘空间。选择合适的方法取决于具体的应用场景和需求,可以结合手动清理、logrotate和调整日志驱动等多种方式,确保系统的高效运行。
16 2
|
18天前
|
网络协议 算法 网络性能优化
计算机网络常见面试题(一):TCP/IP五层模型、TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议
计算机网络常见面试题(一):TCP/IP五层模型、应用层常见的协议、TCP与UDP的区别,TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议、ARP协议
|
1月前
|
缓存 Linux 编译器
【C++】CentOS环境搭建-安装log4cplus日志组件包及报错解决方案
通过上述步骤,您应该能够在CentOS环境中成功安装并使用log4cplus日志组件。面对任何安装或使用过程中出现的问题,仔细检查错误信息,对照提供的解决方案进行调整,通常都能找到合适的解决之道。log4cplus的强大功能将为您的项目提供灵活、高效的日志管理方案,助力软件开发与维护。
54 0
|
3月前
|
存储 安全 Python
[python]使用标准库logging实现多进程安全的日志模块
[python]使用标准库logging实现多进程安全的日志模块
|
5月前
|
SQL 安全 关系型数据库
关系性数据库错误日志安全审计
【6月更文挑战第4天】
65 8
|
6月前
|
Linux
linux centos7查看linux的登录日志
linux centos7查看linux的登录日志
219 2
linux centos7查看linux的登录日志
|
6月前
|
网络协议 应用服务中间件 Linux
centos7 Nginx Log日志统计分析 常用命令
centos7 Nginx Log日志统计分析 常用命令
267 2
|
6月前
|
监控 网络协议 Unix
centos7 zabbix安装客户端agent -配置监控远程主机 在需要监控的电脑上安装
centos7 zabbix安装客户端agent -配置监控远程主机 在需要监控的电脑上安装
192 0