• 客户端rsyslog配置文件详解


    客户端rsyslog配置文件详解

    最近再开发一个rsyslog的接收服务端,支持udp,tcp和tls三种协议。所以去仔细研究了一下rsyslog.conf的配置文件,下面来详细说一下。

    因为我这儿重点在于怎么将信息发送到我的服务器,所以只讲了一些发送应该配置的内容,至于rsyslog.conf配置的详细内容,大家可以去rsyslog的官网自行查看。


    准备

    系统: centos 7.4

    rsyslog版本: 8.24.0


    UDP和TCP

    udp和tcp都比较简单

    UDP

    cd /etc/rsyslog.d
    vim udp.conf
    
    # udp.conf
    $template myFormat,"192.168.82.129_34 %syslogpriority% %timestamp% %hostname% %syslogtag% %msg%"
    # *.*           /var/log/tls
    *.*             @192.168.92.1:9898;myFormat
    

    TCP

    cd /etc/rsyslog.d
    vim udp.conf
    
    # tcp.conf
    $template myFormat,"192.168.82.129_34 %syslogpriority% %timestamp% %hostname% %syslogtag% %msg%"
    *.*             @@192.168.92.1:9898;myFormat
    

    现在来讲一下各个参数的意义

    • template:这是配置的模板,rsyslog发送的日志信息都会按照这个模板的格式来发送
    • *.* :将本机所有的日志全部发送
    • @:udp为一个“@,tcp为两个“@@”
    • 192.168.92.1:我的服务端地址
    • 9898:我指定的服务端用哪个端口来接收信息
    • ;myFormat:设定按这个模板来发送信息,如果你不设置,会按照默认的格式来发送

    最后别忘记重启下rsyslog服务:

    # centos7
    systemctl restart rsyslog.service
    

    TLS

    TLS才是真正麻烦的地方,让我纠结了很久。

    首先你想使用tls协议必须要有一个证书还有密钥来进行加密。这个证书怎么生成我下次会开一个单章来讲(因为太长了)。然后我这儿现在是有一个.crt的文件(文章末尾会提供下载地址,如果想偷懒可以直接用我这个):

    server.crt
    

    然后在官网给出的client端中的配置是这么写的:

    # make gtls driver the default
    $DefaultNetstreamDriver gtls
    
    # certificate files
    $DefaultNetstreamDriverCAFile /rsyslog/protected/ca.pem
    $DefaultNetstreamDriverCertFile /rsyslog/protected/machine-cert.pem
    $DefaultNetstreamDriverKeyFile /rsyslog/protected/machine-key.pem
    
    $ActionSendStreamDriverAuthMode x509/name
    $ActionSendStreamDriverPermittedPeer central.example.net
    $ActionSendStreamDriverMode 1 # run driver in TLS-only mode
    *.* @@central.example.net:10514 # forward everything to remote server
    

    可以大致分为三块:

    • 第一块设置使用gtls
    • 第二块设置证书
    • 第三块设置发送信息

    然后我就按照自己的需求改成了这个样子:

    cd /etc/rsyslog.d
    vim tls.conf
    
    # tls.conf
    $DefaultNetstreamDriver gtls
    
    $DefaultNetstreamDriverCAFile /root/test/server.crt
    
    $ActionSendStreamDriverAuthMode x509/name
    $ActionSendStreamDriverPermittedPeer 192.168.92.1
    $ActionSendStreamDriverMode 1 
    $template myFormat,"unique %syslogpriority% %timestamp% %hostname% %syslogtag% %msg%"
    *.* @@192.168.92.1:9898;myFormat
    

    重启服务后发现什么都没有,去查看日志/var/log/message,找到一条可能是问题的原因的记录:

    Dec  1 22:18:16 here rsyslogd-2066: could not load module '/usr/lib/rsyslog/lmnsd_gtls.so', dlopen: /usr/lib/rsyslog/lmnsd_gtls.so: cannot open shared object file: No such file or directory
     [try http://www.rsyslog.com/e/2066 ]
    Dec  1 22:18:56 here rsyslogd-2066: last message repeated 4 times
    

    然后去看了看这个/usr/lib/rsyslog/lmnsd_gtls.so到底是什么东西,在这儿找到了答案 could not load module '/usr/lib/rsyslog/lmnsd_gtls.so',原来是它这儿少了一些包和依赖,需要去安装一下:

    sudo yum install -y rsyslog-gnutls
    

    问题解决。

    然后再运行,发现还是什么日志都没有,然后去查看记录,也没有报错,这时候就很纳闷了。这时候只能又去面向google编程了,翻了一大圈翻到了这篇文章 gtls Network Stream Driver,里面对于配置的第三大部分做了详细的解答。贴上一段问题所在:

    Supported Authentication Modes

    • anon - anonymous authentication as described in IETF's draft-ietf-syslog-transport-tls-12 Internet draft
    • x509/fingerprint - certificate fingerprint authentication as described in IETF's draft-ietf-syslog-transport-tls-12 Internet draft
    • x509/certvalid - certificate validation only
    • x509/name - certificate validation and subject name authentication as described in IETF's draft-ietf-syslog-transport-tls-12 Internet draft

    意思就是说,x509/name这种模式是需要进行身份认证的,但我这儿提供的证书(即server.crt)是一个公用的证书,这就冲突了,所以只能用anon的模式:

    $ActionSendStreamDriverAuthMode anon
    

    修改完成,重启服务,信息接收成功,大功搞定。

    最终的crt.conf文件:

    # tls.conf
    $DefaultNetstreamDriver gtls
    
    $DefaultNetstreamDriverCAFile /root/test/server.crt
    
    $ActionSendStreamDriverAuthMode anon
    $ActionSendStreamDriverMode 1 
    $template myFormat,"unique %syslogpriority% %timestamp% %hostname% %syslogtag% %msg%"
    *.* @@192.168.92.1:9898;myFormat
    


    附件

    官方文档:https://www.rsyslog.com/doc/v8-stable/tutorials/tls_cert_summary.html

    server.crt文件:https://pan.baidu.com/s/1MyZmTWq03-Nslrt4jlA3GQ

    服务端项目:https://github.com/yisany/syslog-server

  • 相关阅读:
    gain 基尼系数
    luogu P5826 【模板】子序列自动机 主席树 vector 二分
    牛客挑战赛39 树与异或 离线 树上莫队 树状数组 约数
    4.22 省选模拟赛 三元组 manacher 回文自动机
    4.22 省选模拟赛 最优价值 网络流 最大权闭合子图
    4.18 省选模拟赛 消息传递 树剖 倍增 线段树维护等比数列
    luogu P4008 [NOI2003]文本编辑器 splay 块状链表
    牛客挑战赛39 密码系统 后缀数组
    luogu P1526 [NOI2003]智破连环阵 搜索+最大匹配+剪枝
    luogu P4095 [HEOI2013]Eden 的新背包问题 多重背包 背包的合并
  • 原文地址:https://www.cnblogs.com/yisany/p/10183377.html
Copyright © 2020-2023  润新知