Назад | Перейти на главную страницу

Как бы вы * безопасно * отправляли syslog через общедоступный Интернет?

Итак, у меня есть несколько серверов, которые я хотел бы регистрировать централизованно, но, очевидно, я не хочу передавать данные через Интернет небезопасно.

Я пробовал syslog-ng, но не могу заставить его работать безопасным способом, нормальный ssh -L PORT:localhost:PORT user@host Туннель SSH не будет работать, потому что я считаю, что это создает впечатление, что журналы приходят с локальной машины, а VPN кажется излишним.

Вы пробовали syslog-ng и stunnel?

  1. Установить Stunnel
  2. Создание файлов сертификатов для syslog-ng через Stunnel
  3. Настройте Stunnel для использования с syslog-ng
  4. Установите syslog-ng
  5. Настроить syslog-ng
  6. СДЕЛАНО!

НОТА:

Stunnel (http://www.stunnel.org) - это программа, которая позволяет шифровать произвольные TCP-соединения внутри SSL (Secure Sockets Layer), доступного как в Unix, так и в Windows. Stunnel может позволить вам защитить демонов и протоколов, не поддерживающих SSL (например, POP, IMAP, LDAP и т. Д.), За счет того, что Stunnel обеспечит шифрование, не требуя изменений в коде демона.

Краткий ответ: VPN

Это может показаться излишним, но это правильный ответ, и его не так сложно настроить.

Вы также можете попробовать бесплатный Kiwi Secure Tunnel http://www.solarwinds.com/products/kiwi_syslog_server/related_tools.aspx

Используйте syslog-ng или другой демон syslog, поддерживающий TCP.

Отправьте данные по зашифрованному туннелю. Не используйте туннель ssh, это слишком неудобно.

Системный журнал UDP - это исторически поврежденный протокол, от которого давно следовало отказаться. Если ваш поставщик предоставляет их по умолчанию, положитесь на них.

Если ваш поставщик не предоставляет решение системного журнала, которое подписывает каждое сообщение перед его отправкой, положитесь на него.

Программа проста, алгоритмы просты. Политика установки по умолчанию - нет.

Я бы, вероятно, не стал отправлять данные журнала через Интернет, но установил бы централизованный лог-хост в том месте (ах), где это необходимо.

В наши дни я предпочитаю rsyslog syslog-ng. Его почти не заменяют, и в нем есть множество документов и советов, в том числе один при отправке зашифрованные данные с TLS / SSL (начиная с v3.19.0) более старые версии все еще могут использовать stunnel.

По моему опыту работы с rsyslog и syslog-ng, rsyslog выигрывает в простоте настройки, тем более что вы можете использовать свой существующий syslog.conf и добавить к нему.

Как бы то ни было, Rsyslog - это демон syslog по умолчанию на Дебиан Ленни (5.0), Ubuntu и Fedora.

Я использую rsyslog с tls. Есть некоторые подготовительные работы, выходящие за рамки объема работ: развертывание локального центра сертификации, добавление сертификата центра сертификации на каждый хост, создание индивидуальных сертификатов для каждого хоста. (теперь все ваши хосты могут разговаривать по ssl друг с другом)

Еще мне нужно было установить rsyslog-gnutls:

sudo apt-get install rsyslog-gnutls

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

в /etc/rsyslog.conf

# make gtls driver the default
$DefaultNetstreamDriver gtls

# certificate files
$DefaultNetstreamDriverCAFile /etc/my_keys/internal_CA.crt
$DefaultNetstreamDriverCertFile /etc/my_keys/my_hostname.crt
$DefaultNetstreamDriverKeyFile /etc/my_keys/my_hostname.key

$ActionSendStreamDriverAuthMode x509/name
$ActionSendStreamDriverPermittedPeer my_syslog_server.com
$ActionSendStreamDriverMode 1 # run driver in TLS-only mode
*.* @@my_syslog_server.com:514 # forward everything to remote server

Похоже, конфиг для syslog-ng еще проще. (хотя я этого не пробовал) syslog-ng /etc/syslog-ng/conf.d/99-graylog2.conf

destination remote-server {  
    tcp ("my_syslog_server.com" port(514)
        tls(ca_dir("/etc/my_keys/"))
    );
};