Como configurar um agregador de log para autenticar dados?

8

Antecedentes : a agregação remota de logs é considerada uma maneira de melhorar a segurança. Geralmente, isso lida com o risco de que um invasor que comprometa um sistema possa editar ou excluir logs para frustrar a análise forense. Pesquisei opções de segurança em ferramentas de log comuns.

Mas algo parece errado. Não consigo ver como configurar qualquer um dos registradores remotos comuns (por exemplo, rsyslog, syslog-ng, logstash) para autenticar que uma mensagem recebida realmente se origina do suposto host. Sem algum tipo de restrição de política, um originador de log pode forjar mensagens em nome de outro originador de log.

O autor do rsyslog parece avisar sobre a autenticação de dados de log :

Uma última palavra de cautela: transport-tls protege a conexão entre o remetente e o destinatário. Ele não protege necessariamente contra ataques presentes na própria mensagem. Especialmente em um ambiente de retransmissão, a mensagem pode ter sido originada de um sistema malicioso, que colocou nomes de host inválidos e / ou outro conteúdo nele. Se não houver provisionamento para essas coisas, esses registros podem aparecer no repositório dos receptores. -transport-tls não protege contra isso (mas pode ajudar, se usado corretamente). Lembre-se de que o syslog-transport-tls fornece segurança salto a salto. Ele não fornece segurança de ponta a ponta e não autentica a mensagem em si (apenas o último remetente).

Portanto, a pergunta a seguir é: o que é uma configuração boa / prática (em qualquer ferramenta de log comum de sua escolha - rsyslog, syslog-ng, logstash etc.) que fornece alguma autenticidade?

Ou ... se ninguém autentica os dados do log, por que não ?

-

(Além: Ao discutir / comparando, ele pode ajudar a usar alguns diagramas ou terminologia de RFC 5424: Secção 4.1: Exemplos de situações de implantação - por exemplo, "remetente" vs "retransmissão" vs "colector")

Tim Otten
fonte
Que parte você está tentando proteger? O log agrega o recebimento de dados de um host correto ou os próprios dados?
Shane Andrie
Recebendo do host correto. Se Alice e Bob são os criadores de log e Trent é o coletor de logs, Alice deve poder fornecer logs de Trent com "hostname = alice", mas não "hostname = bob". Mas acho que a configuração padrão foi projetada para assumir que Alice poderia ser um relé de log, para permitir que ela enviasse qualquer coisa.
Tim Otten

Respostas:

1

Esta é uma grande pergunta.

Eu uso o logstash para realizar algo parecido com o que você está propondo. Usando o logstash (ou logstash-forwarder) para enviar logs para o seu sistema de coleta central, adicione uma configuração de logstash para adicionar um campo-chave à mensagem, com seu valor sendo uma sequência longa e aleatória exclusiva de cada servidor.

Em seguida, no lado do recebimento, você pode adicionar uma regra correspondente para descartar (ou alertar) qualquer mensagem em que a chave de um host específico não corresponda ao que você espera do nome do host.

Isso não é à prova de balas, mas é um passo sólido na direção certa.

EEAA
fonte
3

A coisa certa a ser usada para isso é o TLS com certificados de cliente da máquina.

O rsyslog faz isso desde 2008 e tem ótimas instruções: http://www.rsyslog.com/doc/v8-stable/tutorials/tls_cert_summary.html

O processo é extremamente simples, como segue:

  1. Configurar uma autoridade de certificação
  2. Emita certificados para todos os seus computadores dos quais você deseja que os logs
  3. Configure o rsyslog para usar essa autenticação

Em seguida, seus computadores não podem se representar e ninguém pode fazer logon no servidor de log sem um dos seus certificados.

Vejo que você já descobriu isso, mas ainda está preocupado com a advertência deles. Eu não me preocuparia muito com isso. A injeção de log é certamente uma coisa, mas muitas coisas, incluindo a injeção através do aplicativo e a injeção no processo de log. O rsyslog autenticado não o protegerá se alguém tiver um ataque de injeção de log no software do aplicativo, mas nada o fará ou pode; apenas consertar o aplicativo pode ajudar nisso. Isso apenas o protegerá contra logs falsificados.

As outras advertências podem ser facilmente atenuadas se você não usar relés, o que há muito pouco motivo para fazer. Se você não possui retransmissões e usa a opção x509 / name para o driver de conexão gtls no servidor rsyslog, não deve ter problemas.

Consulte também o documento de configuração do gtls: http://www.rsyslog.com/doc/v8-stable/concepts/ns_gtls.html

Falcon Momot
fonte