Je travaille sur Ubuntu 16.0.4. Existe-t-il un moyen d'envoyer un message TLS syslog à l'aide d'une commande logger?
Merci d'avance pour toute suggestion
logger
peut uniquement envoyer des données en clair à un socket UDP, un socket TCP ou un socket de domaine UNIX local (comme /dev/log
, qui est la valeur par défaut si logger
n'est pas instruit autrement).
Je suppose que vous avez configuré rsyslog
sur un serveur distant (par exemple syslog-server.mydomain
) pour écouter sur TCP port 6514 car il s'agit du port par défaut lorsque vous utilisez Syslog sur TLS . Je suppose en outre que rsyslog
sur ce serveur distant est configuré de la manière suivante:
# 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")
Généralement (si le serveur distant n’était pas configuré pour utiliser Syslog sur TLS ), vous pouvez émettre
logger --tcp --server syslog-server.mydomain --port 6514 -p local1.info "Hello World, $RANDOM"
mais en raison de l'incapacité de logger
à gérer TLS, cela ne fonctionne pas. Au lieu de cela, vous devez préparer manuellement un message syslog et l'envoyer via gnutls-cli
. Copiez le fichier d'autorité de certification du serveur sur l'ordinateur local, puis lancez:
echo "<142>$HOSTNAME Hello World, $RANDOM" | \
gnutls-cli syslog-server.mydomain --port=6514 --x509cafile=/path/to/root-ca.crt
Le <142>
est la valeur codée pour local1.info
, $HOSTNAME
est l'hôte source et le texte Hello World, $RANDOM
est le message de consignation actuel. gnutls-cli
lit cette chaîne à partir de son stdin et l'envoie au serveur et au port donnés à l'aide de l'autorité de certification donnée.
Le message doit apparaître sur le serveur distant dans le fichier /var/log/messages-from-remote.log
.
L'outil gnutls-cli
fait partie du paquetage gnutls-bin
qui peut être installé via Sudo apt install gnutls-bin
.
Bien sûr, vous pouvez également configurer votre local rsyslog
pour transférer certains messages via TLS sur le serveur distant, puis utilisez logger
comme d'habitude, c'est-à-dire que logger
envoie les messages au démon local rsyslog
(qui est par défaut de toute façon), puis laissez votre rsyslog
local transmettre le message chiffré.