Estou usando o rsyslog com tls.
Há algum trabalho de preparação fora do escopo: implante uma CA local, adicione o certificado da CA a cada host, gere certificados individuais para cada host. (agora todos os seus hosts podem falar ssl uns com os outros)
Eu também precisei instalar o rsyslog-gnutls:
sudo apt-get install rsyslog-gnutls
Também restrinjai a conexão do syslog de saída (tcp 514) para que meus hosts possam se conectar apenas ao meu servidor rsyslog e criar uma lista de permissões no lado do servidor rsyslog para que apenas os hosts possam se conectar.
no /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 a configuração do syslog-ng é ainda mais fácil. (embora eu não tenha tentado isso)
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/"))
);
};