您将如何通过公共Internet安全地发送syslog?


20

因此,我有一些服务器要集中记录,但显然我不想在互联网上不安全地传递数据。

我已经尝试过syslog-ng,但是不能使其以安全的方式工作,普通的ssh -L PORT:localhost:PORT user@hostSSH隧道将无法工作,因为我认为这会使日志似乎来自本地计算机,而VPN似乎有点过头了。

Answers:


19

您是否尝试过syslog-ng和stunnel?

  1. 安装隧道
  2. 在Stunnel上为syslog-ng创建证书文件
  3. 配置Stunnel与syslog-ng一起使用
  4. 安装syslog-ng
  5. 配置系统日志
  6. 完成!

注意:

Stunnel(http://www.stunnel.org)是一个程序,可让您加密Unix和Windows上可用的SSL(安全套接字层)内的任意TCP连接。通过让Stunnel提供加密,无需更改守护程序的代码,Stunnel可以允许您保护不支持SSL的守护程序和协议(例如POP,IMAP,LDAP等)的安全。


这就是我们用来从DMZ向内部网络发送系统日志的方法。效果很好。
卡米尔·基西尔

3
值得一提的是,syslog-ng 3.x本机支持TLS,因此,不再需要使用tunnel。
合成器

12

简短答案:VPN

可能看起来有些矫kill过正,但这是正确的答案,并且设置起来并不那么复杂。


对!; openvpn.net的设置非常简单,并且可以正常运行。
pQd

不仅如此,但它也给你一个很多更灵活地管理和安全监控远程计算机。从长远来看,OpenVPN(甚至是IPSec)会更好。
Christopher Cashell

9

Rsyslog可以做到这一点。使用TLS加密Syslog流量


您是否还通过此解决方案打开了互联网端口?我仍然不愿意这样做。
凯文·库帕尔

3
凯文:它假定您的系统日志服务器,将某些预定的IP地址预期的流量,这是很容易通过iptables来完成
西蒙斯

大多数云提供商还允许灵活的安全组,使您可以将来自特定IP的特定端口列入白名单。
jorfus


1

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

通过加密的隧道发送数据。不要使用ssh隧道,这太麻烦了。

UDP syslog是一个历史悠久的破坏性协议,应该早就取消。如果您的供应商默认提供它,请依靠他们。

如果您的供应商未提供在发送每个消息之前对其进行签名的系统日志解决方案,请依靠它们。

软件简单,算法简单。默认情况下安装它的策略不是。


如果目标长时间关闭,UDP syslog不会造成中断,则具有某些优势。与syslog-ng的关系不是很大,但是在rsyslog中可能是一场噩梦。加密的价值无非是我要说的。
Florian Heigl

1

首先,我可能不会通过Internet发送日志数据,而是在需要的位置安装集中式日志主机。

这些天,我更喜欢rsyslog而不是syslog-ng。它几乎是替代品,并且有各种论文和方法,包括一篇关于使用TLS / SSL 发送加密数据的文章(自v3.19.0起),较旧的版本仍可以使用stunnel

根据我在rsyslog和syslog-ng方面的经验,rsyslog在易于配置方面胜出,尤其是因为您可以使用现有的syslog.conf并添加到其中。

值得一提的是,Rsyslog是Debian Lenny(5.0),UbuntuFedora上的默认syslog守护程序。


rsyslog尚未添加新的(计划的)配置文件语法,这太糟糕了。现在,与syslog-ng相比,为任何琐碎的事情配置rsyslog都很痛苦
Christopher Cashell

0

我在tls中使用rsyslog。有一些超出范围的准备工作:部署本地CA,将CA的证书添加到每个主机,为每个主机生成单独的证书。(现在您的所有主机都可以彼此对话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/"))
    );
};
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.