Включить Rsyslog с TLS на Graylog2

Моя проблема в том, что я не могу получить журналы из своего удаленного приложения для входа на вход Graylog2 с использованием TLS. Удаленное приложение регистрировалось просто отлично, прежде чем я попытался включить TLS с самозаверяющими сертификатами, поэтому я почти уверен, что у меня просто проблема с конфигурацией.

Вот некоторая предыстория. Сначала я создал несколько самоподписанных сертификатов, выполнив следующие действия:

$ openssl genrsa -out CA.key 2048
$ openssl req -x509 -new -nodes -key CA.key -sha256 -days 3650 -out rootCA.crt
$ openssl genrsa -out graylog-server.key 2048
$ openssl req -new -key graylog-server.key -out graylog-server.csr
$ openssl x509 -req -in graylog-server.csr -CA rootCA.crt -CAkey CA.key -CAcreateserial -out graylog-server.crt -days 3640 -sha256

источник: https://gist.github.com/fntlnz/cf14feb5a46b2eda428e000157447309

Где я заполнил DNS-имя для сервера Graylog в файле graylog-server.crt

Затем я импортировал rootCA.crt в хранилище ключей на сервере Graylog:

$ keytool -importcert -keystore ./graylog-cacerts -alias graylogRootCaCert -file rootCa.crt

Затем я вхожу в веб-интерфейс Graylog и перенастраиваю поля ввода следующим образом:

port: 51xx
TLS Cert File: /path/to/certs/graylog-server.csr
TLS Private Key File: /path/to/certs/graylog-server.key
Enable TLS: True
TLS Client authentication: Optional
TLS Client Auth Trusted Certs: /path/to/certs*

все созданные сертификаты находятся в каталоге /path/to/certs/, который принадлежит Graylog. Все ключи доступны только для чтения.

Удаленное приложение, работающее в Ubuntu 16.04, имеет конфигурацию rsyslog, которая выглядит следующим образом:

$ cat 60-remote-rsyslog.conf

$DefaultNetstreamDriver gtls

$DefaultNetstreamDriverCAFile /etc/ssl/graylog/rootCA.pem
$ActionSendStreamDriverAuthMode anon
$ActionSendStreamDriverMode 1 # run driver in TLS-only mode
#$ActionSendStreamDriverPermittedPeer graylog.name.com

. @@graylog.name.com:51XX;RSYSLOG_SyslogProtocol23Format

Что касается rsyslog.conf на сервере, то он использует все значения по умолчанию. Я видел решение, в котором TLS настраивается напрямую через rsyslog, а затем Graylog забирает журналы оттуда, но это не идеально для моего приложения. Нам нужно использовать входы. Это решение находится здесь: https://serverfault.com/questions/807651/forwarding-logs-from-rsyslog-to-graylog-over-tls

Я попытался выполнить шаги по этим ссылкам, но они все еще не работают: https://community.graylog.org/t/rsyslog-over-tls/263/4 https://community.graylog.org/t/encrypt-traffic-from-rsyslog/5649

Я ожидаю, что журналы будут поступать от клиентского TLS, защищенного на настроенном вводе. Происходит то, что логи не поступают на вход, а в логах Graylog-сервера нет никаких ошибок, о которых можно было бы говорить.

Любая помощь или предложения приветствуются. Спасибо.


person battibatch    schedule 24.05.2019    source источник


Ответы (2)


У меня была точно такая же проблема. Отсутствие подробных журналов ошибок подключения для входов TLS, настроенных серым журналом, раздражает, когда что-то не работает...

Помните, что Graylog нуждается в настроенном ключе PKCS8, поэтому вы можете столкнуться с проблемой совместимости ключа PKCS8. Начните с простого ключа для первоначальной настройки и устранения неполадок...

Преобразовать существующий ключ в pkcs8

sudo openssl pkcs8 -in my.key -topk8 -nocrypt -out my.key.plain.pem
sudo openssl pkcs8 -in my.key.plain.pem -topk8 -out my.key.encrypted.pem -passout pass:secret

В моем Centos Box есть rsyslog, а файл /etc/rsyslog.d/rsyslog-tls.conf настроен следующим образом:

# certificate files
$DefaultNetstreamDriverCAFile /etc/pki/tls/certs/my-CA.pem
$DefaultNetstreamDriverCertFile /etc/pki/tls/certs/server-01.domain.com.crt.pem
$DefaultNetstreamDriverKeyFile /etc/pki/tls/certs/server-01.domain.com.key.plain.pem
# set up the action
$DefaultNetstreamDriver gtls
$ActionSendStreamDriverMode 1
$ActionSendStreamDriverAuthMode x509/name
$ActionSendStreamDriverPermittedPeer *.domain.com
*.* @@(o)graylog.domain.com:6514

Мой ввод Graylog SyslogTCP (TLS)

tls_cert_file: /etc/graylog/ssl/shadowCA/graylog.domain.com/graylog.domain.com.crt.pem
tls_client_auth: optional
tls_client_auth_cert_file: <empty>
tls_enable: true
tls_key_file: /etc/graylog/ssl/shadowCA/graylog.domain.com/graylog.domain.com.key.plain.pem

Устранение неполадок TLS с помощью OpenSSL S_CLIENT

PS. Полезный шаг по устранению неполадок — убедиться, что вход правильно настроен для TLS, ПРОСЛУШИВАНИЯ, ОТВЕТА и ПРИЕМА СООБЩЕНИЙ.

openssl s_client -connect localhost:1514 -tls1_2 -tlsextdebug

-tlsextdebug позволяет вводить тестовые сообщения в Graylog через TLS.

person Michael Zietlow    schedule 30.05.2019
comment
Это отличный тест. Я смог запустить эту команду и увидеть сообщение журнала в моей консоли Graylog. Так что это может исключить мою мысль о том, что у меня проблема с сертификатом. - person battibatch; 31.05.2019
comment
Также опубликовано в сообществе Graylog: community.graylog.org/ t/enable-rsyslog-with-tls-to-graylog2/ - person battibatch; 31.05.2019

Основной причиной этого было то, что я не установил дополнительные пакеты, необходимые для rsyslog отправки журналов TLS. После того, как я их установил, все заработало как часы. Спасибо.

person battibatch    schedule 09.07.2019