我正在使用 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"