Я работаю над человечностью 16.0.4. Там какой-либо путь состоит в том, чтобы отправить сообщение системного журнала TLS командой регистратора?
Спасибо в усовершенствованном для любого предложения
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
фактический logmessage. gnutls-cli
чтения эта строка от ее stdin и отправляют его на данный сервер и порт с помощью данного Приблизительно.
Сообщение должно появиться на удаленном сервере в файле /var/log/messages-from-remote.log
.
Инструмент gnutls-cli
часть пакета gnutls-bin
который может быть установлен через sudo apt install gnutls-bin
.
Конечно, можно также настроить локальное rsyslog
передавать определенные сообщения через TLS к удаленному серверу и затем использовать logger
как обычно, это: иметь logger
отправьте сообщения в локальное rsyslog
демон (который является значением по умолчанию так или иначе) и затем позволил Вашему локальному rsyslog
передайте зашифрованное сообщение.