不。

不。

我正在使用 ubuntu 16.04。

有没有办法通过 logger 命令发送 TLS 系统日志消息?

答案1

不。

logger只能将明文数据发送到 UDP 套接字、TCP 套接字或本地 UNIX 域套接字(如,若无其他指示,/dev/log则为默认设置)。logger

但。

我假设你已经rsyslog在远程服务器(比如syslog-server.mydomain)上设置了监听 TCP 端口 6514,因为这是使用时的默认端口通过 TLS 传输系统日志。我进一步假设rsyslog远程服务器的配置类似于此:

# Certificate configuration for encrypted transmission:
global(
    defaultNetstreamDriver         = "gtls"
    defaultNetstreamDriverCAFile   = "/path/to/root-ca.crt"
    defaultNetstreamDriverCertFile = "/path/to/certificates/server-certificate.crt"
    defaultNetstreamDriverKeyFile  = "/path/to/keys/server-private.key"
)

# Load input module for encrypted TCP to receive messages from the clients:
module(
    load                  = "imtcp" 
    StreamDriver.Name     = "gtls" 
    StreamDriver.Mode     = "1" 
    StreamDriver.AuthMode = "anon"
)

# Ruleset to write externally received messages to a certain file:
ruleset(name="from_remote") {
    action(type="omfile" File="/var/log/messages-from-remote.log")
}

# Bind above ruleset to the TCP listener on port 6514:
input(type="imtcp" port="6514" ruleset="from_remote")

通常(如果远程服务器未设置为使用通过 TLS 传输系统日志)你可以发出

logger --tcp --server syslog-server.mydomain --port 6514 -p local1.info "Hello World, $RANDOM"

但由于logger无法处理 TLS,因此此方法无效。您必须手动准备系统日志消息并通过 发送gnutls-cli。将服务器的 CA 文件复制到本地计算机,然后发出:

echo "<142>$HOSTNAME Hello World, $RANDOM" | \
    gnutls-cli syslog-server.mydomain --port=6514 --x509cafile=/path/to/root-ca.crt

<142>编码值local1.info$HOSTNAME是源主机,文本Hello World, $RANDOM是实际的日志消息。gnutls-cli从其标准输入并使用给定的CA将其发送到给定的服务器和端口。

该消息应出现在远程服务器上的文件中/var/log/messages-from-remote.log

该工具gnutls-cli是软件包的一部分gnutls-bin,可以通过 安装sudo apt install gnutls-bin


当然你也可以配置你的当地的 rsyslog向前通过 TLS 将某些消息发送到远程服务器,然后logger照常使用,即:将logger消息发送到本地rsyslog守护进程(无论如何这是默认的),然后让本地rsyslog转发加密消息。

答案2

现在还是这样吗?我能够通过 TLS 测试我的系统日志的记录器,logger TEST不同之处在于我有一组规则,如下所示。这会转发所有日志。话虽如此,它将通过 TLS 转发记录器测试,因为它的 rsyslog 转发它而不是记录器。

action(type="omfwd"
queue.type="linkedlist"
queue.filename="example_fwd"
target="192.168.0.123"
port="6514"
protocol="tcp"
StreamDriver.Name="gtls"
StreamDriver.Mode= "1"
StreamDriver.AuthMode="x509/name"
StreamDriverPermittedPeers="rsyslog.lab"

相关内容