Como você enviaria o syslog * com segurança * pela Internet pública?

20

Então, eu tenho alguns servidores que eu gostaria de registrar centralmente, mas obviamente não quero passar os dados de maneira insegura pela Internet.

Eu tentei o syslog-ng, mas não posso fazê-lo funcionar de maneira segura, um ssh -L PORT:localhost:PORT user@hosttúnel SSH normal não funcionará porque acredito que faz com que os logs pareçam vir da máquina local e uma VPN parece um exagero .

JamesHannah
fonte

Respostas:

19

Você já tentou o syslog-ng e stunnel?

  1. Instalar Stunnel
  2. Crie arquivos de certificado para syslog-ng através do Stunnel
  3. Configurar o Stunnel para uso com o syslog-ng
  4. Instale o syslog-ng
  5. Configurar syslog-ng
  6. FEITO!

NOTA:

O Stunnel ( http://www.stunnel.org ) é um programa que permite criptografar conexões TCP arbitrárias dentro do SSL (Secure Sockets Layer) disponível no Unix e no Windows. O Stunnel pode permitir que você proteja daemons e protocolos que não reconhecem SSL (como POP, IMAP, LDAP etc.), solicitando que o Stunnel forneça a criptografia, sem necessidade de alterações no código do daemon.

KPWINC
fonte
É isso que usamos para enviar o syslog de nossa DMZ para nossa rede interna. Funciona bem.
276 Kamil Kisiel
3
Pelo que vale a pena, o syslog-ng 3.x suporta TLS nativamente, portanto, não é mais necessário usar stunnel.
Sintetizador
12

Resposta curta: VPN

Pode parecer um exagero, mas é a resposta certa e não é tão complicada de configurar.

Kevin Kuphal
fonte
direita!; O openvpn.net é realmente simples de configurar e simplesmente funciona.
pQd
Não apenas isso, mas também oferece muito mais flexibilidade para gerenciar e monitorar as máquinas remotas com segurança. O OpenVPN (ou mesmo o IPSec) será muito melhor a longo prazo.
22620 Christopher Cashell
9

Rsyslog pode fazer isso. Criptografando o tráfego de syslog com TLS

Brian De Smet
fonte
Você ainda não está abrindo uma porta para a Internet com esta solução? Eu ainda detestaria fazer isso por algo assim.
Kevin Kuphal
3
Kevin: É assumido que o servidor syslog estaria esperando o tráfego de determinados IPs pré-determinados, que é fácil de realizar via iptables
Matt Simmons
A maioria dos provedores de nuvem também permite grupos de segurança flexíveis, que permitem incluir listas de permissões em portas específicas de IPs específicos.
jorfus
1

Use syslog-ng ou outro daemon syslog que suporte TCP.

Envie os dados por um túnel criptografado. Não use um túnel ssh, é muito complicado.

O syslog UDP é um protocolo histórico danificado que deveria ter sido eliminado há muito tempo. Se o seu fornecedor fornecer por padrão, inclua-se neles.

Se o seu fornecedor não fornecer uma solução syslog que assine cada mensagem antes de enviá-la, incline-se sobre elas.

O software é fácil, os algoritmos são fáceis. A política de instalá-lo por padrão não é.

Carlito
fonte
O syslog UDP tem certas vantagens quando não causa interrupções se o destino ficar inativo por períodos mais longos. Não é grande coisa com o syslog-ng, mas pode ser um pesadelo no rsyslog. O valor da criptografia não é nada que eu queira questionar dizendo isso.
Florian Heigl 25/03
1

Eu provavelmente não enviaria dados de log pela Internet em primeiro lugar, mas instalaria um host de log centralizado no (s) local (is) onde necessário.

Hoje em dia, prefiro rsyslog a syslog-ng. É quase uma substituição, e possui uma variedade de papéis e instruções, incluindo um sobre o envio de dados criptografados com TLS / SSL (a partir da v3.19.0); as versões mais antigas ainda podem usar stunnel .

Na minha experiência com o rsyslog e o syslog-ng, o rsyslog vence com facilidade na configurabilidade, especialmente porque você pode usar o syslog.conf existente e adicionar isso.

Pelo que vale, Rsyslog é o daemon syslog padrão no Debian Lenny (5.0), Ubuntu e Fedora .

jtimberman
fonte
É uma pena que o rsyslog ainda não tenha adicionado a nova sintaxe do arquivo de configuração (planejada). No momento, configurar o rsyslog para algo não trivial é doloroso em comparação com o syslog-ng.
Christopher Cashell
0

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 conversar com SSL)

Eu também precisava instalar o rsyslog-gnutls:

sudo apt-get install rsyslog-gnutls

Também restringi a conexão syslog de saída (tcp 514) para que meus hosts só possam se conectar ao meu servidor rsyslog e criei uma lista branca de entrada no lado do servidor rsyslog para que apenas meus hosts possam se conectar.

em /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/"))
    );
};
jorfus
fonte