Wie würden Sie Syslog * sicher * über das öffentliche Internet senden?

20

Ich habe also ein paar Server, die ich zentral anmelden möchte, aber natürlich möchte ich die Daten nicht unsicher über das Internet übertragen.

Ich habe syslog-ng ausprobiert, kann es aber nicht auf sichere Weise zum ssh -L PORT:localhost:PORT user@hostLaufen bringen. Ein normaler SSH-Tunnel funktioniert nicht, da die Protokolle meines Erachtens vom lokalen Computer stammen und ein VPN ein wenig übertrieben zu sein scheint .

JamesHannah
quelle

Antworten:

19

Haben Sie Syslog-ng und Stunnel ausprobiert?

  1. Installieren Sie Stunnel
  2. Erstellen Sie Zertifikatsdateien für syslog-ng über Stunnel
  3. Konfigurieren Sie Stunnel für die Verwendung mit syslog-ng
  4. Installieren Sie syslog-ng
  5. Konfigurieren Sie syslog-ng
  6. GETAN!

HINWEIS:

Stunnel ( http://www.stunnel.org ) ist ein Programm, mit dem Sie beliebige TCP-Verbindungen innerhalb von SSL (Secure Sockets Layer) verschlüsseln können, das sowohl unter Unix als auch unter Windows verfügbar ist. Mit Stunnel können Sie nicht SSL-fähige Daemons und Protokolle (wie POP, IMAP, LDAP usw.) sichern, indem Stunnel die Verschlüsselung bereitstellt, ohne dass Änderungen am Code des Daemons erforderlich sind.

KPWINC
quelle
Dies verwenden wir, um Syslog von unserer DMZ an unser internes Netzwerk zu senden. Funktioniert gut.
Kamil Kisiel
3
Für das, was es wert ist, unterstützt Syslog-ng 3.x TLS nativ, so dass keine Notwendigkeit mehr besteht, stunnel zu verwenden.
Synthesizer
12

Kurze Antwort: VPN

Es mag übertrieben erscheinen, aber es ist die richtige Antwort und nicht so kompliziert einzurichten.

Kevin Kuphal
quelle
Recht!; openvpn.net ist sehr einfach einzurichten und funktioniert einfach.
pQd
Darüber hinaus erhalten Sie viel mehr Flexibilität bei der sicheren Verwaltung und Überwachung der Remotecomputer. OpenVPN (oder sogar IPSec) wird auf lange Sicht viel besser sein.
Christopher Cashell
9

Rsyslog kann dies tun. Verschlüsseln des Syslog-Verkehrs mit TLS

Brian De Smet
quelle
Öffnen Sie mit dieser Lösung nicht immer noch einen Port zum Internet? Ich würde es immer noch ablehnen, das für so etwas zu tun.
Kevin Kuphal
3
Kevin: Es wird davon ausgegangen, dass Ihr Syslog-Server Datenverkehr von bestimmten vorgegebenen IP-Adressen erwartet, was über iptables einfach zu bewerkstelligen ist
Matt Simmons,
Die meisten Cloud-Anbieter erlauben auch flexible Sicherheitsgruppen, mit denen Sie bestimmte Ports von bestimmten IP-Adressen auf die Whitelist setzen können.
Jorfus
1

Verwenden Sie syslog-ng oder einen anderen Syslog-Daemon, der TCP unterstützt.

Senden Sie die Daten über einen verschlüsselten Tunnel. Verwenden Sie keinen SSH-Tunnel, es ist zu umständlich.

UDP-Syslog ist ein Protokoll, das in der Vergangenheit einen Gehirnschaden erlitten hat und das längst hätte beseitigt werden müssen. Wenn Ihr Anbieter dies standardmäßig anbietet, stützen Sie sich bitte darauf.

Wenn Ihr Anbieter keine Syslog-Lösung zur Verfügung stellt, die jede Nachricht vor dem Senden signiert, verlassen Sie sich auf diese.

Die Software ist einfach, die Algorithmen sind einfach. Die Politik, es standardmäßig installieren zu lassen, ist es nicht.

carlito
quelle
UDP-Syslog hat bestimmte Vorteile, wenn es nicht zu Ausfällen kommt, wenn das Ziel für längere Zeit ausfällt. Keine allzu große Sache mit syslog-ng, kann aber in rsyslog ein Albtraum sein. Der Wert der Verschlüsselung ist nichts, was ich damit in Frage stellen möchte.
Florian Heigl
1

Ich würde wahrscheinlich nicht in erster Linie Protokolldaten über das Internet senden, sondern an den erforderlichen Stellen einen zentralen Protokollhost installieren.

In diesen Tagen bevorzuge ich rsyslog gegenüber syslog-ng. Der Austausch ist nahezu abgeschlossen und es gibt eine Vielzahl von Dokumenten und Anleitungen, einschließlich einer Anleitung zum Senden von verschlüsselten Daten mit TLS / SSL (ab Version 3.19.0). Ältere Versionen können weiterhin stunnel verwenden .

Nach meiner Erfahrung mit rsyslog und syslog-ng überzeugt rsyslog durch einfache Konfigurierbarkeit, zumal Sie Ihre vorhandene syslog.conf verwenden und diese erweitern können.

Rsyslog ist der Standard-Syslog-Daemon unter Debian Lenny (5.0), Ubuntu und Fedora .

jtimberman
quelle
Es ist nur schade, dass rsyslog die neue (geplante) Syntax der Konfigurationsdatei noch nicht hinzugefügt hat. Gegenwärtig ist die Konfiguration von rsyslog für alles, was nicht trivial ist, im Vergleich zu syslog-ng schmerzhaft .
Christopher Cashell
0

Ich benutze rsyslog mit tls. Es gibt einige Vorbereitungsarbeiten außerhalb des gültigen Bereichs: Bereitstellen einer lokalen Zertifizierungsstelle, Hinzufügen des Zertifizierungsstellenzertifikats zu jedem Host, Generieren individueller Zertifikate für jeden Host. (Jetzt können alle Ihre Hosts SSL miteinander sprechen.)

Ich musste auch rsyslog-gnutls installieren:

sudo apt-get install rsyslog-gnutls

Ich habe auch die ausgehende Syslog-Verbindung eingeschränkt (TCP 514), sodass meine Hosts nur eine Verbindung zu meinem Syslog-Server herstellen können, und habe eine eingehende Whitelist auf der Seite des Syslog-Servers erstellt, sodass nur meine Hosts eine Verbindung herstellen können.

in /etc/rsyslog.conf

# make gtls driver the default
$DefaultNetstreamDriver gtls

# certificate files
$DefaultNetstreamDriverCAFile /etc/my_keys/internal_CA.crt
$DefaultNetstreamDriverCertFile /etc/my_keys/my_hostname.crt
$DefaultNetstreamDriverKeyFile /etc/my_keys/my_hostname.key

$ActionSendStreamDriverAuthMode x509/name
$ActionSendStreamDriverPermittedPeer my_syslog_server.com
$ActionSendStreamDriverMode 1 # run driver in TLS-only mode
*.* @@my_syslog_server.com:514 # forward everything to remote server

Es sieht so aus, als ob die Konfiguration für syslog-ng noch einfacher ist. (obwohl ich das nicht ausprobiert habe) syslog-ng /etc/syslog-ng/conf.d/99-graylog2.conf

destination remote-server {  
    tcp ("my_syslog_server.com" port(514)
        tls(ca_dir("/etc/my_keys/"))
    );
};
Jorfus
quelle