¿Cómo enviaría syslog * de forma segura * a través de Internet público?

20

Así que tengo algunos servidores que me gustaría registrar centralmente, pero obviamente no quiero pasar los datos de forma insegura a través de Internet.

He intentado syslog-ng pero no puedo hacer que funcione de forma segura, un ssh -L PORT:localhost:PORT user@hosttúnel SSH normal no funcionará porque creo que parece que los registros provienen de la máquina local, y una VPN parece un poco exagerada .

JamesHannah
fuente

Respuestas:

19

¿Has probado syslog-ng y stunnel?

  1. Instalar Stunnel
  2. Crear archivos de certificado para syslog-ng sobre Stunnel
  3. Configure Stunnel para usar con syslog-ng
  4. Instalar syslog-ng
  5. Configurar syslog-ng
  6. ¡HECHO!

NOTA:

Stunnel ( http://www.stunnel.org ) es un programa que le permite encriptar conexiones TCP arbitrarias dentro de SSL (Secure Sockets Layer) disponible en Unix y Windows. Stunnel puede permitirle proteger demonios y protocolos que no son compatibles con SSL (como POP, IMAP, LDAP, etc.) haciendo que Stunnel proporcione el cifrado, sin requerir cambios en el código del demonio.

KPWINC
fuente
Esto es lo que usamos para enviar syslog desde nuestra DMZ a nuestra red interna. Funciona bien.
Kamil Kisiel
3
Por lo que vale, syslog-ng 3.x es compatible con TLS de forma nativa, por lo que ya no es necesario usar stunnel.
sintetizador
12

Respuesta corta: VPN

Puede parecer excesivo, pero es la respuesta correcta y no es tan complicado de configurar.

Kevin Kuphal
fuente
¡Derecha!; openvpn.net es realmente simple de configurar y simplemente funciona.
pQd
No solo eso, sino que también le brinda mucha más flexibilidad para administrar y monitorear las máquinas remotas de forma segura. OpenVPN (o incluso IPSec) será mucho mejor a largo plazo.
Christopher Cashell
9

Rsyslog puede hacer esto. Cifrar el tráfico de Syslog con TLS

Brian De Smet
fuente
¿Todavía no estás abriendo un puerto a Internet con esta solución? Todavía detestaría hacer eso por algo como esto.
Kevin Kuphal 05 de
3
Kevin: Se supone que su servidor syslog esperaría tráfico de ciertas IP predeterminadas, lo cual es fácil de lograr a través de iptables
Matt Simmons
La mayoría de los proveedores de la nube también permiten grupos de seguridad flexibles que le permiten incluir en la lista blanca puertos específicos de IP específicas.
jorfus
1

Utilice syslog-ng u otro demonio syslog que admita TCP.

Enviar los datos a través de un túnel encriptado. No use un túnel ssh, es demasiado complicado.

UDP syslog es un protocolo histórico con daño cerebral que debería haberse eliminado hace mucho tiempo. Si su proveedor lo proporciona de manera predeterminada, apóyese en ellos.

Si su proveedor no proporciona una solución de syslog que firme cada mensaje antes de enviarlo, apóyese en ellos.

El software es fácil, los algoritmos son fáciles. La política de instalarlo por defecto no lo es.

carlito
fuente
UDP syslog tiene ciertas ventajas cuando se trata de no causar interrupciones si el destino se cae por períodos más largos. No es un gran problema con syslog-ng, pero puede ser una pesadilla en rsyslog. El valor del cifrado no es nada que quiera cuestionar al decir eso.
Florian Heigl
1

Probablemente, en primer lugar, no enviaría datos de registro a través de Internet, sino que instalaría un registro centralizado en las ubicaciones donde fuera necesario.

En estos días, prefiero rsyslog a syslog-ng. Es un reemplazo cercano a la caída, y tiene una variedad de documentos y procedimientos, incluido uno sobre el envío de datos cifrados con TLS / SSL (a partir de v3.19.0), las versiones anteriores aún pueden usar stunnel .

En mi experiencia con rsyslog y syslog-ng, rsyslog gana en facilidad de configuración, especialmente porque puede usar su syslog.conf existente y agregarlo.

Para lo que vale, Rsyslog es el demonio syslog predeterminado en Debian Lenny (5.0), Ubuntu y Fedora .

jtimberman
fuente
Es una pena que rsyslog aún no haya agregado la nueva sintaxis del archivo de configuración (planificada). En este momento, configurar rsyslog para cualquier cosa no trivial es doloroso en comparación con syslog-ng.
Christopher Cashell
0

Estoy usando rsyslog con tls. Hay algunos trabajos de preparación fuera del alcance: Implemente una CA local, agregue el certificado de la CA a cada host, genere certs individuales para cada host. (ahora todos sus anfitriones pueden hablar ssl entre sí)

También necesitaba instalar rsyslog-gnutls:

sudo apt-get install rsyslog-gnutls

También restringí la conexión saliente de syslog (tcp 514) para que mis hosts solo puedan conectarse a mi servidor rsyslog, y creé una lista blanca entrante en el lado del servidor rsyslog para que solo mis hosts puedan conectarse.

en /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

Parece que la configuración para syslog-ng es aún más fácil. (aunque no he probado esto) 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
fuente