AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 579709
Accepted
Bruno9779
Bruno9779
Asked: 2014-03-05 05:46:36 +0800 CST2014-03-05 05:46:36 +0800 CST 2014-03-05 05:46:36 +0800 CST

通过 TLS 的 Rsyslog

  • 772

到目前为止,我一直试图让 rsyslog 通过 TLS 传输,但没有成功。

我的配置似乎有问题,但我无法确定它。

这是我的服务器配置文件:

# rsyslog v5 configuration file

# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
# If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html

#### MODULES ####

$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imklog   # provides kernel logging support (previously done by rklogd)
$ModLoad immark  # provides --MARK-- message capability
$ModLoad imgssapi # provides GSSAPI syslog reception

# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 10514
$InputTCPServerStreamDriverMode 1 # run driver in TLS-only mode
$InputTCPServerStreamDriverAuthMode anon # client is NOT authenticated

# make gtls driver the default
$DefaultNetstreamDriver gtls

# certificate files
$DefaultNetstreamDriverCAFile /etc/pki/tls/private/ca-cert.pem
$DefaultNetstreamDriverCertFile /etc/pki/tls/private/rslserver-cert.pem
$DefaultNetstreamDriverKeyFile /etc/pki/tls/private/rslserver-key.pem

# specify senders you permit to access
$AllowedSender TCP, 127.0.0.1, 10.111.1.0/24, *.evoltek.test.com 

#add: define logfiles
## /var/log/secure
$template Auth_log,"/var/log/secure.d/%fromhost%/%$year%-%$month%.secure"
## /var/log/messages
$template Msg_log,"/var/log/secure.d/%fromhost%/%$year%-%$month%.messages"
## /var/log/maillog
$template Mail_log,"/var/log/secure.d/%fromhost%/%$year%-%$month%.maillog"
## /var/log/cron
$template Cron_log,"/var/log/secure.d/%fromhost%/%$year%-%$month%.cron"
## /var/log/spooler
$template Spool_log,"/var/log/secure.d/%fromhost%/%$year%-%$month%.spooler"
## /var/log/boot.log
$template Boot_log,"/var/log/secure.d/%fromhost%/%$year%-%$month%.boot.log"
## emergency messages "*.emerg"
$template Emerg_log,"/var/log/secure.d/%fromhost%/%$year%-%$month%.emerg"

#### GLOBAL DIRECTIVES ####

# Use default timestamp format
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

# Include all config files in /etc/rsyslog.d/
$IncludeConfig /etc/rsyslog.d/*.conf

#### RULES ####

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                -?Msg_log

# The authpriv file has restricted access.
authpriv.*                                              -?Auth_log

# Log all the mail messages in one place.
mail.*                                                  -?Mail_log

# Log cron stuff
cron.*                                                  -?Cron_log

# Everybody gets emergency messages
*.emerg                                                 -?Emerg_log

# Save news errors of level crit and higher in a special file.
uucp,news.crit                                          -?Spool_log

# Save boot messages also to boot.log
local7.*                                                -?Boot_log

这是我的客户端配置文件:

# rsyslog v5 configuration file

# certificate files
$DefaultNetstreamDriverCAFile /etc/pki/tls/private/ca-cert.pem
$DefaultNetstreamDriverCertFile /etc/pki/tls/private/rslclient-cert.pem
$DefaultNetstreamDriverKeyFile /etc/pki/tls/private/rslclient-key.pem

$ModLoad imuxsock.so
$ModLoad imklog.so
$ModLoad imtcp


$DefaultNetstreamDriver gtls

$ActionSendStreamDriverAuthMode anon 
$ActionSendStreamDriverMode 1 

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                /var/log/messages

# The authpriv file has restricted access.
authpriv.*                                              /var/log/secure

# Log all the mail messages in one place.
mail.*                                                  -/var/log/maillog

# Log cron stuff
cron.*                                                  /var/log/cron

# Everybody gets emergency messages
*.emerg                                                 *

# Save news errors of level crit and higher in a special file.
uucp,news.crit                                          /var/log/spooler

# Save boot messages also to boot.log
local7.*                                                /var/log/boot.log

*.* @@10.111.1.151:10514

我已经按照本指南创建了证书:http: //kb.kristianreese.com/index.php ?View=entry&EntryID=148

我的测试环境没有 FQDN,因此我将 DN 字段和 FQDN 字段留空,并填写了 IP 字段。

centos
  • 3 3 个回答
  • 15642 Views

3 个回答

  • Voted
  1. Alejandro T
    2017-06-28T10:02:59+08:002017-06-28T10:02:59+08:00

    带有 Centos 6.9 的 Rsyslog 5.8 对我有用

    这是一个视频教程: https ://youtu.be/eb9GlhD8XnY

    在 CA(证书颁发机构)上创建证书

    sudo mkidr /etc/ssl/rsyslog/   
    cd /etc/ssl/rsyslog/
    

    安装 gnutls-utils

    sudo yum install -y gnutls-utils
    

    生成 CA 私钥(保护此密钥!)

    sudo certtool --generate-privkey --outfile CA-key.pem
    sudo chmod 400 CA-key.pem
    

    生成 CA 公钥

    sudo certtool --generate-self-signed --load-privkey CA-key.pem --outfile CA.pem
    
    Common name: CA.EXAMPLE.COM
    The certificate will expire in (days): 3650
    Does the certificate belong to an authority? (Y/N): y
    Will the certificate be used to sign other certificates? (Y/N): y
    Will the certificate be used to sign CRLs? (y/N): y
    

    在 CA(证书颁发机构)上创建 SERVERS 私钥

    sudo certtool --generate-privkey --outfile SERVER-key.pem --bits 2048
    

    为 SERVER 创建证书请求

    sudo certtool --generate-request --load-privkey SERVER-key.pem --outfile SERVER-request.pem 
    
    Common name: SERVER.EXAMPLE.COM
    

    签署 SERVER 密钥并允许密钥对被其他服务器信任

    sudo certtool --generate-certificate --load-request SERVER-request.pem --outfile SERVER-cert.pem --load-ca-certificate CA.pem --load-ca-privkey CA-key.pem
    
    The certificate will expire in (days): 1000
    Is this a TLS web client certificate? (Y/N): y
    Is this also a TLS web server certificate? (y/N): y
    Enter a dnsName of the subject of the certificate: SERVER.EXAMPLE.COM
    

    在 CA(证书颁发机构)上创建 CLIENT 私钥

    sudo certtool --generate-privkey --outfile CLIENT-key.pem --bits 2048
    

    为 CLIENT 创建证书请求

    sudo certtool --generate-request --load-privkey CLIENT-key.pem --outfile CLIENT-request.pem 
    
    Common name: CLIENT.EXAMPLE.ORG
    

    签署 CLIENT 密钥并允许密钥对被其他服务器信任

    sudo certtool --generate-certificate --load-request CLIENT-request.pem --outfile CLIENT-cert.pem --load-ca-certificate CA.pem --load-ca-privkey CA-key.pem
    
    The certificate will expire in (days): 1000
    Is this a TLS web client certificate? (Y/N): y
    Is this also a TLS web server certificate? (y/N): y
    Enter a dnsName of the subject of the certificate: CLIENT.EXAMPLE.ORG
    

    删除请求键

    sudo rm *-request.pem
    

    Scp SERVER private/key 和 CA.pem 到 SERVER.EXAMPLE.COM 使用 scp 或 USB 加密复制证书

    sudo -u root scp -i ~/.ssh/id_rsa CA.pem SERVER-* [email protected]:/etc/ssl/rsyslog/
    

    Scp CLIENT private/key 和 CA.pem 到 CLIENT.EXAMPLE.COM

    sudo -u root scp -i ~/.ssh/id_rsa CA.pem CLIENT-* [email protected]:/etc/ssl/rsyslog/
    

    在 SERVER 和 CLIENT 上安装 gtls 驱动程序

    sudo yum install rsyslog-gnutls -y
    

    配置服务器

    sudo vi /etc/rsyslog.d/rsyslog-tls.conf
    
    # Add
    # Listen for TCP
    $ModLoad imtcp
    # Set gtls driver
    $DefaultNetstreamDriver gtls
    # Certs
    $DefaultNetstreamDriverCAFile /etc/ssl/rsyslog/CA.pem
    $DefaultNetstreamDriverCertFile /etc/ssl/rsyslog/SERVER-cert.pem
    $DefaultNetstreamDriverKeyFile /etc/ssl/rsyslog/SERVER-key.pem
    # Auth mode
    $InputTCPServerStreamDriverAuthMode x509/name
    # Only allow EXAMPLE.COM domain
    $InputTCPServerStreamDriverPermittedPeer *.EXAMPLE.COM
    # Only use TLS
    $InputTCPServerStreamDriverMode 1 
    # Listen on port 6514
    # If you want to use other port configure selinux
    $InputTCPServerRun 6514
    

    在防火墙上打开端口 6514

    sudo vi /etc/sysconfig/iptables
    
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 6514 -j ACCEPT
    
    sudo /etc/init.d/iptables reload
    

    重新启动 rsyslog 守护进程

    sudo /etc/init.d/rsyslog restart
    

    配置客户端

    sudo vi /etc/rsyslog.d/rsyslog-tls.conf
    
    # Add
    # Set gtls driver
    $DefaultNetstreamDriver gtls
    # Certs
    $DefaultNetstreamDriverCAFile /etc/ssl/rsyslog/CA.pem
    $DefaultNetstreamDriverCertFile /etc/ssl/rsyslog/CLIENT-cert.pem
    $DefaultNetstreamDriverKeyFile /etc/ssl/rsyslog/CLIENT-key.pem
    # Auth mode
    $ActionSendStreamDriverAuthMode x509/name
    # Only send log to SERVER.EXAMPLE.COM host
    $ActionSendStreamDriverPermittedPeer SERVER.EXAMPLE.COM
    # Only use TLS
    $ActionSendStreamDriverMode 1
    # Forward everithing to SERVER.EXAMPLE.COM
    # If you use hostnames instead of IP configure DNS or /etc/hosts
    *.* @@SERVER.EXAMPLE.COM:6514
    

    重新启动 rsyslog 守护进程

    sudo /etc/init.d/rsyslog restart
    

    要在 SERVER 上进行测试,请运行 tcpdump 并从客户端发送日志

    sudo yum install tcpdump -y
    sudo tcpdump -i eth0 tcp port 6514 -X -s 0 -nn
    
    • 5
  2. b13n1u
    2014-03-05T05:52:45+08:002014-03-05T05:52:45+08:00

    在 CentOS/RedHat 中,您还可以在 SElinux 中启用 SSL rsyslog 端口。类似的东西 semanage port -a -t syslogd_port_t -p tcp 10514应该可以解决问题。

    您可以使用以下命令检查您当前的系统日志端口 sudo semanage port -l| grep syslog

    您也可以尝试在调试模式下运行 rsyslog,看看发生了什么:停止 rsyslog 守护进程,然后

    export RSYSLOG_DEBUGLOG="/path/to/debuglog"

    export RSYSLOG_DEBUG="Debug"

    现在启动 rsyslog:

    rsyslogd -dn

    要检查使用的语法是否有效,请使用:

    rsyslogd -N 1

    • 3
  3. Best Answer
    Bruno9779
    2014-03-06T03:34:11+08:002014-03-06T03:34:11+08:00

    我找不到 rsyslog 5.8 的工作配置(来自 CentOS 存储库)。

    我已经安装了官方的 rsyslog 存储库,并且使用此配置在几分钟内启动并运行了 rsyslog 7.6.0。

    • 1

相关问题

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 使用 crontab 和 /etc/cron.hourly,daily,weekly 的区别

  • 持续监控许多服务器运行状况的简单方法?

  • Hudson 无法在 tomcat5 中启动

  • CentOS 的依赖挑战

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve