你将如何安全地通过公共互联网发送系统日志?

所以我有几个服务器,我想集中login,但显然我不想通过互联网不安全地传递数据。

我已经尝试了syslog-ng,但不能使其工作在一个安全的方式,一个正常的ssh -L PORT:localhost:PORT user@host SSH隧道将无法正常工作,因为我相信,使日志似乎来自本地机器和VPN似乎有点像矫枉过正。

你有没有尝试过syslog-ng和stunnel?

  1. 安装Stunnel
  2. 通过Stunnel创buildsyslog-ng的证书文件
  3. 使用syslog-ngconfigurationStunnel
  4. 安装syslog-ng
  5. configurationsyslog-ng
  6. DONE!

注意:

Stunnel( http://www.stunnel.org )是一个允许您在Unix和Windows上encryptionSSL(安全套接字层)内的任意TCP连接的程序。 Stunnel允许您通过让Stunnel提供encryption来保护不支持SSL的守护进程和协议(如POP,IMAP,LDAP等),而不需要修改守护进程的代码。

简短的回答:VPN

这看起来似乎有点过分,但这是正确的答案,并不复杂。

Rsyslog可以做到这一点。 使用TLSencryptionSyslogstream量

使用syslog-ng或其他支持TCP的syslog守护进程。

通过encryption隧道发送数据。 不要使用ssh隧道,这太繁琐了。

UDP系统日志是一个历史早已被淘汰的文本协议。 如果您的供应商默认提供它,请依靠它们。

如果您的供应商没有提供在发送之前对每个消息进行签名的系统日志解决scheme,请依靠这些解决scheme。

软件简单,algorithm简单。 默认安装它的政策不是。

我可能不会通过互联网发送日志数据,但在需要的位置安装一个集中的日志主机。

现在,我更喜欢rsyslog到syslog-ng。 这是一个接近下降的替代品,并且有各种各样的论文和howtos,包括用TLS / SSL发送encryption数据 (从v3.19.0开始),老版本仍然可以使用stunnel 。

根据我对rsyslog和syslog-ng的经验,rsyslog在易configuration性方面胜出,特别是因为你可以使用现有的syslog.conf,并添加到这个。

值得一提的是,Rsyslog是Debian Lenny (5.0), Ubuntu和Fedora上的默认syslog守护进程。

我正在用tls使用rsyslog。 有一些超出范围的准备工作:部署本地CA,将CA的证书添加到每个主机,为每个主机生成单独的证书。 (现在所有的主机都可以相互通话)

我还需要安装rsyslog-gnutls:

 sudo apt-get install rsyslog-gnutls 

我也限制了传出的syslog连接(tcp 514),所以我的主机只能连接到我的rsyslog服务器,并在rsyslog服务器端创build了一个传入的白名单,所以只有我的主机可以连接。

在/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的configuration更容易。 (虽然我还没有尝试过)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/")) ); };