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

20

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

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

JamesHannah
источник

Ответы:

19

Вы пробовали 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, обеспечивающего шифрование, не требующее изменений в коде демона.

KPWINC
источник
Это то, что мы используем для отправки системного журнала из нашей DMZ во внутреннюю сеть. Работает хорошо.
Камил Кисиэль
3
Что бы это ни стоило, syslog-ng 3.x изначально поддерживает TLS, так что больше нет необходимости использовать stunnel.
синтезатор
12

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

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

Кевин Куфал
источник
право!; openvpn.net действительно прост в настройке и просто работает.
PQD
Не только это, но и дает вам гораздо больше гибкости для безопасного управления удаленными компьютерами и их мониторинга. OpenVPN (или даже IPSec) будет намного лучше в долгосрочной перспективе.
Кристофер Кашелл
9

Rsyslog может сделать это. Шифрование трафика системного журнала с помощью TLS

Брайан Де Смет
источник
Разве вы еще не открыли порт в Интернет с этим решением? Я все еще не хотел бы делать это для чего-то подобного.
Кевин Куфал
3
Кевин: Предполагается, что ваш сервер системного журнала будет ожидать трафика с определенных предопределенных IP-адресов, что легко сделать с помощью iptables
Мэтт Симмонс
Большинство облачных провайдеров также предоставляют гибкие группы безопасности, которые позволяют вносить в белый список определенные порты с определенных IP-адресов.
Йорфус
1

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

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

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

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

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

Карлито
источник
Системный журнал UDP имеет определенные преимущества, когда он не вызывает сбоев, если пункт назначения отключается в течение более длительных периодов. С syslog-ng не так уж и сложно, но в rsyslog это может стать кошмаром. Ценность шифрования - это не то, что я хочу подвергнуть сомнению, говоря это.
Флориан Хейгл
1

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

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

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

Во всяком случае, Rsyslog является демоном syslog по умолчанию в Debian Lenny (5.0), Ubuntu и Fedora .

jtimberman
источник
Очень жаль, что rsyslog еще не добавил новый (запланированный) синтаксис файла конфигурации. Прямо сейчас настройка rsyslog для чего-либо нетривиального является болезненной по сравнению с syslog-ng.
Кристофер Кашелл
0

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

Мне также нужно было установить rsyslog-gnutls:

sudo apt-get install rsyslog-gnutls

Я также ограничил исходящее соединение системного журнала (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/"))
    );
};
jorfus
источник