it-swarm.com.de

So senden Sie TLS-Syslog-Nachrichten per Logger-Befehl

Ich arbeite an Ubuntu 16.0.4. Gibt es eine Möglichkeit, TLS-Syslog-Nachrichten per Logger-Befehl zu senden?

Vielen Dank im Voraus für jeden Vorschlag

Nein.

logger kann Klartextdaten nur an ein UDP-Socket, ein TCP-Socket oder ein lokales UNIX-Domain-Socket senden (wie /dev/log, was die Standardeinstellung ist, wenn logger ist nicht anders angewiesen).

Aber.

Ich gehe davon aus, dass Sie rsyslog auf einem Remote-Server eingerichtet haben (sagen Sie syslog-server.mydomain), um TCP Port 6514 abzuhören, da dies der Standardport ist, wenn Sieverwenden/Syslog über TLS. Ich gehe weiterhin davon aus, dass rsyslog auf diesem Remote-Server wie folgt konfiguriert ist:

# 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")

In der Regel (wenn der Remote-Server nicht für die Verwendung vonSyslog über TLSeingerichtet wurde) kann dies zu Problemen führen

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

aufgrund der Unfähigkeit von logger, mit TLS umzugehen, funktioniert dies jedoch nicht. Stattdessen müssen Sie eine Syslog-Nachricht manuell vorbereiten und über gnutls-cli senden. Kopieren Sie die CA-Datei des Servers auf den lokalen Computer und geben Sie Folgendes aus:

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

Der <142> ist der codierte Wert für local1.info, $HOSTNAME ist der Quellhost und der Text Hello World, $RANDOM ist die eigentliche Protokollmeldung. gnutls-cli liest diesen String aus seinemstdinund sendet ihn unter Verwendung der angegebenen CA an den angegebenen Server und Port.

Die Nachricht sollte auf dem Remote-Server in der Datei /var/log/messages-from-remote.log erscheinen.

Das Tool gnutls-cli ist Teil des Pakets gnutls-bin, das über Sudo apt install gnutls-bin installiert werden kann.


Natürlich können Sie auch Ihrelocalrsyslog fürforwardbestimmte Nachrichten über TLS an die Fernbedienung konfigurieren server und dann logger wie gewohnt verwenden, das heißt: logger die Nachrichten an den lokalen rsyslog Daemon senden (der ohnehin die Standardeinstellung ist) und dann Ihren lokalen rsyslog leiten Sie die verschlüsselte Nachricht weiter.

1
PerlDuck