Как отправить сообщение системного журнала TLS через команду регистратора

Я работаю над человечностью 16.0.4. Там какой-либо путь состоит в том, чтобы отправить сообщение системного журнала TLS командой регистратора?

Спасибо в усовершенствованном для любого предложения

1
задан 10 November 2018 в 15:14

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 фактический 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 передайте зашифрованное сообщение.

2
ответ дан 7 December 2019 в 13:20

Другие вопросы по тегам:

Похожие вопросы: