Как настроить агрегатор журнала для аутентификации данных?

Фон: Удаленное агрегирование журнала рассматривается как способ улучшить безопасность. Обычно это обращается к риску, что взломщик, который ставит под угрозу систему, может отредактировать или удалить журналы для срыва судебного анализа. Я исследовал параметры безопасности в общих инструментах журнала.

Но что-то чувствует себя неправильным. Я не вижу, как настроить любой из общих удаленных регистраторов (например, rsyslog, системный-журнал-ng, logstash) для аутентификации этого, входящее сообщение действительно происходит из подразумеваемого хоста. Без некоторого ограничения стратегии один инициатор журнала мог подделать сообщения от имени другого инициатора журнала.

Автор rsyslog, кажется, предупреждает о проходящих проверку подлинности данных логов:

Одно заключительное предостережение: транспорт-tls защищает соединение между отправителем и получателем. Это не обязательно защищает от нападений, которые присутствуют в самом сообщении. Особенно в релейной среде, сообщение, возможно, было порождено из злонамеренной системы, которая поместила недопустимые имена хостов и/или другое содержание в него. Если нет никакой настройки против таких вещей, эти записи могут обнаружиться в репозитории получателей. - транспорт-tls не защищает от этого (но он может помочь, правильно используемый). Следует иметь в виду, что syslog-transport-tls обеспечивает безопасность транзитного участка транзитным участком. Это не обеспечивает сквозную безопасность, и это не аутентифицирует само сообщение (просто последний отправитель).

Таким образом, развить вопрос: что такое хорошая/практичная конфигурация (в каком-либо общем инструменте журнала по Вашему выбору - rsyslog, системный-журнал-ng, logstash, и т.д.), который обеспечивает некоторую сумму подлинности?

Или... если никто не аутентифицирует данные логов, затем почему нет?

--

(В стороне: В обсуждении/сравнении это может помочь использовать некоторые схемы или терминологию от RFC 5424: Раздел 4.1: Сценарии развертывания В качестве примера - например, "инициатор" по сравнению с "реле" по сравнению с "коллектором")

8
задан 27 August 2015 в 21:46
2 ответа

Это отличный вопрос.

Я использую logstash для выполнения чего-то вроде того, что вы предлагаете. Используя logstash (или logstash-forwarder) для отправки журналов в вашу центральную систему сбора, добавьте конфигурацию logstash для добавления ключевого поля в сообщение, значение которого представляет собой длинную случайную строку, уникальную для каждого сервера.

Затем на принимающей стороне вы можете добавить соответствующее правило для отбрасывания (или предупреждения) любых сообщений, в которых ключ определенного хоста не соответствует тому, что вы ожидаете от его имени хоста.

Это не пуленепробиваемое, но серьезный шаг в правильном направлении.

1
ответ дан 2 December 2019 в 23:06

Правильнее использовать для этого TLS с сертификатами клиента машины.

rsyslog делает это примерно с 2008 года и содержит отличные инструкции: http://www.rsyslog.com/doc/v8- stable / tutorials / tls_cert_summary.html

Процесс чрезвычайно прост, так как следующие вещи идут:

  1. Настройка центра сертификации
  2. Выпуск сертификатов для всех ваших компьютеров, с которых вы хотите вести журналы
  3. Настройте rsyslog для использования этого аутентификация

Тогда ваши компьютеры не смогут олицетворять друг друга, и никто не сможет войти на ваш сервер журналов без одного из ваших сертификатов.

Я вижу, вы это уже обнаружили, но вас все еще беспокоит их предостережение. Я бы особо не беспокоился об этом. Внедрение журнала - это, конечно, вещь, но это много вещей, в том числе внедрение через приложение и внедрение в процесс ведения журнала. Аутентифицированный rsyslog не защитит вас, если кто-то осуществит атаку внедрения журнала в ваше приложение, но ничто не защитит и не сможет; только исправление приложения может помочь в этом. Это просто защитит вас от подделки журналов.

Другие предостережения можно легко смягчить, если не использовать реле, что в любом случае действительно мало причин для этого. Если у вас нет реле и вы используете параметр x509 / name для драйвера подключения gtls на сервере rsyslog, у вас не должно возникнуть проблем.

См. Также документ конфигурации gtls: http: // www .rsyslog.com / doc / v8-stable / concepts / ns_gtls.html

3
ответ дан 2 December 2019 в 23:06

Теги

Похожие вопросы