Comment configurer un agrégateur de journaux pour authentifier les données?

8

Contexte : l'agrégation de journaux à distance est considérée comme un moyen d'améliorer la sécurité. En règle générale, cela réduit le risque qu'un attaquant qui compromet un système puisse modifier ou supprimer des journaux afin de contrecarrer l'analyse judiciaire. J'ai recherché des options de sécurité dans les outils de journalisation courants.

Mais quelque chose ne va pas. Je ne vois pas comment configurer l'un des enregistreurs distants courants (par exemple rsyslog, syslog-ng, logstash) pour authentifier qu'un message entrant provient vraiment de l'hôte présumé. Sans une sorte de contrainte de stratégie, un expéditeur de journal pourrait forger des messages au nom d'un autre expéditeur de journal.

L'auteur de rsyslog semble mettre en garde contre l'authentification des données de journal :

Un dernier mot de prudence: transport-tls protège la connexion entre l'expéditeur et le récepteur. Il ne protège pas nécessairement contre les attaques présentes dans le message lui-même. Surtout dans un environnement de relais, le message peut provenir d'un système malveillant, qui y a placé des noms d'hôte non valides et / ou d'autres contenus. S'il n'y a pas de provisioning contre de telles choses, ces enregistrements peuvent apparaître dans le référentiel des récepteurs. -transport-tls ne protège pas contre cela (mais cela peut aider, correctement utilisé). Gardez à l'esprit que syslog-transport-tls fournit une sécurité bond par bond. Il ne fournit pas de sécurité de bout en bout et il n'authentifie pas le message lui-même (uniquement le dernier expéditeur).

La question de suivi est donc la suivante: qu'est-ce qu'une configuration bonne / pratique (dans tout outil de journalisation commun de votre choix - rsyslog, syslog-ng, logstash, etc.) qui fournit une certaine authenticité?

Ou ... si personne n'authentifie les données du journal, alors pourquoi pas ?

-

(À part: En discutant / en comparant, il peut être utile d'utiliser certains diagrammes ou la terminologie de la RFC 5424: Section 4.1: Exemples de scénarios de déploiement - par exemple, "initiateur" vs "relais" vs "collecteur")

Tim Otten
la source
Quelle partie essayez-vous de sécuriser? L'agrégat de journaux recevant des données d'un hôte correct, ou les données elles-mêmes?
Shane Andrie
Réception de l'hôte correct. Si Alice et Bob sont tous deux des créateurs de journaux et que Trent est le collecteur de journaux, Alice devrait être en mesure de fournir des journaux Trent avec "hostname = alice" mais pas "hostname = bob". Mais je pense que la configuration par défaut est conçue pour supposer qu'Alice pourrait être un relais de journal, donc ils lui permettraient de soumettre n'importe quoi.
Tim Otten

Réponses:

1

c'est une excellente question.

J'utilise logstash pour accomplir quelque chose comme ce que vous proposez. À l'aide de logstash (ou logstash-forwarder) pour expédier les journaux à votre système de collecte central, ajoutez une configuration logstash pour ajouter un champ clé au message, sa valeur étant une longue chaîne aléatoire unique à chaque serveur.

Ensuite, du côté de la réception, vous pouvez ajouter une règle correspondante pour supprimer (ou alerter) tous les messages où la clé d'un hôte spécifique ne correspond pas à ce que vous attendez pour son nom d'hôte.

Ce n'est pas à l'épreuve des balles, mais c'est un pas solide dans la bonne direction.

EEAA
la source
3

La bonne chose à utiliser pour cela est TLS avec les certificats clients de la machine.

rsyslog le fait depuis environ 2008 et contient d'excellentes instructions: http://www.rsyslog.com/doc/v8-stable/tutorials/tls_cert_summary.html

Le processus est extrêmement simple, car ces choses vont:

  1. Configurer une autorité de certification
  2. Émettez des certificats à tous vos ordinateurs dont vous souhaitez que les journaux
  3. Configurer rsyslog pour utiliser cette authentification

Ensuite, vos ordinateurs ne peuvent pas se faire passer pour un autre et personne ne peut se connecter à votre serveur de journaux sans l'un de vos certificats.

Je vois que vous l'avez déjà trouvé, mais vous êtes toujours inquiet de leur mise en garde. Je ne m'inquiéterais pas trop de ça. L'injection de journaux est certainement une chose, mais il y a beaucoup de choses, y compris l'injection via l'application et l'injection dans le processus de journalisation. Rsyslog authentifié ne vous protégera pas si quelqu'un a une attaque par injection de journaux dans votre logiciel d'application, mais rien ne le fera ou ne le pourra; seule la correction de l'application peut aider cela. Cela vous protégera simplement contre les journaux falsifiés.

Les autres mises en garde peuvent être facilement atténuées en n'utilisant pas de relais, ce qui n'a vraiment aucune raison de le faire de toute façon. Si vous n'avez pas de relais et que vous utilisez l'option x509 / name pour le pilote de connexion gtls dans le serveur rsyslog, vous ne devriez avoir aucun problème.

Voir aussi le document de configuration gtls: http://www.rsyslog.com/doc/v8-stable/concepts/ns_gtls.html

Falcon Momot
la source