Статьи

Шифрование журналов на пути к Elasticsearch

Предположим, вы хотите отправить свои логи в Elasticsearch, чтобы вы могли искать или анализировать их в реальном времени. Если ваш кластер Elasticsearch находится в удаленном месте (EC2?) Или является нашей службой анализа журналов Logsene (которая предоставляет API Elasticsearch), вам может потребоваться пересылать данные по зашифрованному каналу.

Существует более одного способа пересылки через SSL, и этот пост является первой частью серии, объясняющей, как это сделать.

обновление: часть 2 теперь доступна!

Сегодняшний метод заключается в отправке данных по HTTPS в Elasticsearch (или Logsene ) вместо простого HTTP. Для этого вам понадобятся две части:

  1. инструмент, который может отправлять логи по HTTPS
  2. API REST Elasticsearch, предоставляемый через HTTPS

Вы можете создать свой собственный инструмент или использовать существующие. В этом посте мы покажем вам, как использовать вывод Elasticsearch rsyslog для этого. Для API вы можете использовать Nginx или Apache в качестве обратного прокси-сервера для HTTPS перед Elasticseach, или вы можете использовать конечную точку Logsene HTTPS :

Конфигурация Rsyslog

Чтобы получить плагин omelasticsearch для rsyslog, вам нужна как минимум версия 6.6. Поддержка HTTPS была только что добавлена ​​в master, и ожидается, что она появится в версии 8.2.0. Как только это произойдет , вы сможете использовать пакеты Ubuntu , Debian или RHEL / CentOS для установки необходимых вам базовых пакетов rsyslog и rsyslog -asticsearch . В противном случае вы всегда можете установить из исходников:
— клонировать из репозитория rsyslog github
— запустить `autogen.sh –enable -asticsearch && make && make install` (в зависимости от вашей системы может потребоваться наличие некоторых зависимостей)

С omelasticsearch в месте ( ом часть поступает от O utput м МОДУЛЬ, если Вы задаетесь вопросом о странном имени), вы можете попробовать конфигурацию ниже , чтобы принять все ваши файлы журналов с локального / Dev / журнал и направить их Elasticsearch / Logsene:

# load needed input and output modules
module(load="imuxsock.so") # listen to /dev/log
module(load="omelasticsearch.so") # provides Elasticsearch output capability

# template that will build a JSON out of syslog
# properties. Resulting JSON will be in Logstash format
# so it plays nicely with Logsene and Kibana
template(name="plain-syslog"
         type="list") {
           constant(value="{")
             constant(value="\"@timestamp\":\"")
                 property(name="timereported" dateFormat="rfc3339")
             constant(value="\",\"host\":\"")
                 property(name="hostname")
             constant(value="\",\"severity\":\"")
                 property(name="syslogseverity-text")
             constant(value="\",\"facility\":\"")
                 property(name="syslogfacility-text")
             constant(value="\",\"syslogtag\":\"")
                 property(name="syslogtag" format="json")
             constant(value="\",\"message\":\"")
                 property(name="msg" format="json")
             constant(value="\"}")
         }

# send resulting JSON documents to Elasticsearch
action(type="omelasticsearch"
       template="plain-syslog"
 # Elasticsearch index (or Logsene token)
       searchIndex="YOUR-LOGSENE-TOKEN-GOES-HERE"
 # bulk requests
       bulkmode="on"  
       queue.dequeuebatchsize="100"
 # buffer and retry indefinitely if Elasticsearch is unreachable
       action.resumeretrycount="-1"
 # Elasticsearch/Logsene endpoint
       server="logsene-receiver.sematext.com"
       serverport="443"
       usehttps="on"
)

Изучение ваших данных

После перезапуска rsyslog вы сможете увидеть, как текут ваши журналы в пользовательском интерфейсе Logsene , где вы можете искать и отображать их:

Logsene Screnshot

Если вы предпочитаете пользовательский интерфейс Kibana в Logsene или используете свой собственный кластер Elasticsearch, вы можете запустить собственный Kibana для подключения к конечной точке HTTPS, как это делает rsyslog или собственный пользовательский интерфейс Logsene .

Завершение

Если вы используете Logsene, все, что вам нужно сделать, это убедиться, что вы добавили свой токен приложения Logsene в качестве имени индекса Elasticsearch в конфигурации rsyslog .

Если вы используете свой собственный кластер Elasticsearch, есть несколько хороших руководств по настройке обратных прокси HTTPS с Nginx и Apache соответственно. Вы также можете попробовать плагины Elasticsearch, поддерживающие HTTPS, такие как плагины для Jetty и безопасности .

Не стесняйтесь обращаться к нам, если вам нужна помощь. Мы будем рады ответить на любые ваши вопросы по Logsene, а также помочь вам с вашей локальной настройкой с помощью профессиональных услуг и технической поддержки . Если вам просто нравится этот материал, вы можете присоединиться к нам, где бы вы ни находились .

Оставайтесь с нами для части 2 , которая покажет вам, как использовать системный журнал TLS RFC-5425 для шифрования ваших сообщений от одного демона системного журнала к другому .