标签: syslog-ng

如何配置日志聚合器来验证数据?

背景:远程日志聚合被视为提高安全性的一种方式。通常,这解决了危害系统的攻击者可以编辑或删除日志以阻碍取证分析的风险。我一直在研究常用日志工具中的安全选项。

但是感觉有些不对劲。我看不到如何配置任何常见的远程记录器(例如 rsyslog、syslog-ng、logstash)来验证传入的消息确实来自声称的主机。如果没有某种策略约束,一个日志发起者可以代表另一个日志发起者伪造消息。

rsyslog 的作者似乎对验证日志数据发出警告

最后要提醒一句:transport-tls 保护发送方和接收方之间的连接。它不一定能抵御存在于消息本身中的攻击。特别是在中继环境中,消息可能源自恶意系统,该系统将无效的主机名和/或其他内容放入其中。如果没有针对此类内容的配置,这些记录可能会显示在接收者的存储库中。-transport-tls 不能防止这种情况(但它可能会有所帮助,正确使用)。请记住,syslog-transport-tls 提供逐跳安全性。它不提供端到端的安全性,也不验证消息本身(只是最后一个发送者)。

所以接下来的问题是:什么是好的/实用的配置(在您选择的任何常用日志工具中——rsyslog、syslog-ng、logstash 等),它提供了一定程度的真实性?

或者...如果没有人验证日志数据,那为什么不呢?

——

(旁白:在讨论/比较时,使用RFC 5424 中的一些图表或术语可能会有所帮助:第 4.1 节:部署场景示例——例如“发起者”与“中继”与“收集者”)

security logging syslog-ng rsyslog logstash

8
推荐指数
1
解决办法
821
查看次数

Solaris 10 上的 syslog-ng(如何安装和配置)

如果有人在 Solaris 10 上使用了 syslog-ng,您是否有我可以遵循的一组说明来安装和运行它?

我尝试按照这个http://opensystems.wordpress.com/2006/06/01/replacing-syslog-on-solaris-10-with-syslog-ng/但卡住了 syslog-ng 服务卡在重启没有任何迹象为什么。

谢谢你的帮助。尼克B

solaris-10 syslog-ng

6
推荐指数
1
解决办法
7940
查看次数

以 root 用户身份以 777 模式打开文件时权限被拒绝

我正在尝试安装和运行 syslog-ng,但由于以下错误而被阻止。

Error opening configuration file; filename='/etc/syslog-ng/syslog-ng.conf', error='Permission denied (13)'
Run Code Online (Sandbox Code Playgroud)

我用 sudo 运行它,文件和目录现在都有 777 权限。我使用过 strace,它绝对是一个公开调用,但 EACCESS 失败了。据我们所知,它不会更改为另一个用户。

更新:根据要求:strace 输出

[edward.sargisson@apps-mgmt-fe1 syslog-ng]$ sudo strace -f -v -eopen /etc/init.d/syslog-ng start
open("/etc/ld.so.cache", O_RDONLY)      = 3
open("/lib64/libtermcap.so.2", O_RDONLY) = 3
open("/lib64/libdl.so.2", O_RDONLY)     = 3
open("/lib64/libc.so.6", O_RDONLY)      = 3
open("/dev/tty", O_RDWR|O_NONBLOCK)     = 3
open("/usr/lib/locale/locale-archive", O_RDONLY) = 3
open("/proc/meminfo", O_RDONLY)         = 3
open("/usr/lib64/gconv/gconv-modules.cache", O_RDONLY) = 3
open("/etc/init.d/syslog-ng", O_RDONLY) = 3
open("/etc/init.d/functions", O_RDONLY) = 3
Process 4802 attached (waiting for parent)
Process 4802 resumed (parent 4801 …
Run Code Online (Sandbox Code Playgroud)

permissions chef syslog-ng

6
推荐指数
1
解决办法
3712
查看次数

避免来自 cron 作业的日志噪音 - 使用 syslog-ng 而不是 syslog

在我的小型 Debian 挤压网络服务器上,我安装了 syslog-ng(不是syslogd,就像在这个问题中一样)。一般来说,我的原木很好很安静,有

-- MARK -- 
Run Code Online (Sandbox Code Playgroud)

线。/var/log/syslog然而,我的到处都是这个

Sep 23 23:09:01 bookchin /USR/SBIN/CRON[24885]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -delete > /dev/null)
Sep 23 23:09:01 bookchin /USR/SBIN/CRON[24886]: (root) CMD (  [ -d /var/lib/php4 ] && find /var/lib/php4/ -type f -cmin +$(/usr/lib/php4/maxlifetime) -print0 | xargs -r -0 rm > /dev/null)
Sep 23 23:17:01 bookchin /USR/SBIN/CRON[24910]: (root) CMD (   cd / && run-parts …
Run Code Online (Sandbox Code Playgroud)

cleanup syslog cron syslog-ng

6
推荐指数
1
解决办法
4002
查看次数

将 Windows 通知事件日志发送到 linux syslog 服务器并编码为 utf8 的软件

我正在尝试设置 Windows 2008 服务器,以便它能够将事件日志消息发送到运行 linux 的 syslog-ng 服务器。我更喜欢本土的东西,但我想这是不可能的。

更新 第一个答案建议使用圈套,到目前为止,它是我找到的最佳解决方案,设置起来完全没有痛苦,并且在不到五分钟的时间内我就登录到了我的 syslog-ng 服务器。唯一的缺点(不是圈套错误)是日志以 windows-1252 字符集编码发送。所以tail -f除非我以某种方式更改字符集,否则我无法使用它们。如果您使用的是 syslog-ng,这可以通过创建新源轻松解决,在我的情况下:

source src_win {
        udp(
                ip("192.168.1.200")
                port(514)
                encoding("WINDOWS-1252"));
};
Run Code Online (Sandbox Code Playgroud)

在此之后(并将新源分配到正确的位置),您将能够正确查看 Windows 日志。

旧内容

环顾四周,我发现了此页面指出的几个解决方案:http : //www.itbuzzer.net/corner/2008/10/how-to-send-windows-events-to-syslog.asp

有没有人有任何这些或其他方面的经验?

linux windows syslog syslog-ng

5
推荐指数
1
解决办法
5967
查看次数

用于从 Apache 获取日志到 syslog-ng 的 /usr/bin/logger 的替代方法

我们目前使用 logger 将我们的 Apache 访问日志获取到 syslog-ng,在每个 vhost 中使用如下一行:

CustomLog "|/usr/bin/logger -p local1.info  -t www_main" combined
Run Code Online (Sandbox Code Playgroud)

似乎我能找到的几乎所有关于 Apache 和 syslog-ng 的教程或建议都使用这种方法将日志导入 syslog-ng。(示例)。其余的使用命名管道和 pipe() 源。(示例)。

这样做的问题是 logger 拆分任何超过 1024 字节的行并将它们作为单独的日志条目发送,这意味着某些日志条目在日志框的最终目标日志文件中以不同的行结束。

在 syslog-ng 中使用命名管道和 pipe() 源解决了分割线问题,但也带来了一些小问题和烦恼。举几个例子,命名管道必须在 Apache 和 syslog-ng 启动之前创建,syslog-ng 必须在 Apache 启动之前启动,并且标记日志(上面用 完成-t)现在必须在 syslog 中完成-ng 配置文件而不是在 vhost 中。

本页建议编写一个简短的 Perl 脚本来代替 /usr/bin/logger。

我想知道是否有人知道记录器的任何替代方案,最好用本地编译语言编写,或者可能是不将长行分成两半的记录器的更新版本。

我也有兴趣听到有关长日志行被拆分问题的任何其他解决方案,例如在它们到达日志服务器后使用 syslog-ng 将它们组合在一起的方法。

syslog-ng apache-2.2

5
推荐指数
1
解决办法
9082
查看次数

将 rsyslog 转发到 syslog-ng,并使用 FQDN 和设施分离

我正在尝试配置我的 rsyslog 客户端以将消息转发到我的 syslog-ng 日志存储库系统。转发消息“开箱即用”,但我的客户记录的是短名称,而不是 FQDN。因此,系统日志存储库上的消息也使用短名称,这是一个问题,因为人们无法轻松确定消息源自哪个系统。我的客户通过 DHCP/DNS 获取他们的名字。

我尝试了多种解决方案试图使其正常工作,但没有成功。我正在使用 rsyslog 4.6.2 和 syslog-ng 3.2.5。

我尝试将其设置$PreserveFQDN on为 /etc/rsyslog.conf 中的第一个指令(当然还重新启动 rsyslog)。好像没有什么效果。

hostname --fqdn客户端上的 FQDN 返回正确的 FQDN,因此问题不在于系统是否能够真正找出自己的 FQDN。

$LocalHostName <fqdn>看起来很有希望,但该指令在我的 rsyslog 版本中不可用(自 4.7.4+、5.7.3+、6.1.3+ 起可用)。目前无法选择升级。

配置 syslog-ng 服务器以通过 DNS 进行反向查找来填充名称并不是一种选择。反向 DNS 和公共云很复杂。

乍一看,指定转发器使用自定义模板似乎是一个可行的选择。我可以指定以下内容,这会导致本地日志记录开始使用 syslog-ng 存储库上的 FQDN。

$template MyTemplate, "%timestamp% <FQDN> %syslogtag%%msg%"
$ActionForwardDefaultTemplate MyTemplate
Run Code Online (Sandbox Code Playgroud)

但是,当我将其放在适当的位置时,syslog-ng 似乎无法按设施或优先级对消息进行分类。消息以 FQDN 形式传入,但所有内容都放入 user.log 中。当我不使用自定义模板时,消息会根据设施和优先级正确分类,但使用短名称。

因此,总而言之,如果我手动诱使 rsyslog 包含 FQDN,那么优先级和设施就会丢失 syslog-ng 的详细信息。如何让 rsyslog 进行 FQDN 日志记录,该日志记录可以正常工作到 syslog-ng 存储库?

rsyslog 客户端配置:

$ModLoad imuxsock.so    # provides support for local …
Run Code Online (Sandbox Code Playgroud)

syslog-ng rsyslog

5
推荐指数
1
解决办法
1万
查看次数

你如何在 syslog-ng 中使用 patterndb 变量?

我想解析一些自定义(网络设备)系统日志文件来创建我自己的格式化输出。

由于我是 syslog-ng 和 patterndb 的新手,我一直在尝试使用文档构建一个示例 - 到目前为止我的工作在这里:https : //gist.github.com/linickx/8002981

在示例中,我想读取 syslog 文件 (testfile.log):

Accepted password for sampleuser from 10.50.0.247 port 42156 ssh2
Accepted password for user from 10.51.0.27 port 4256 ssh2
Run Code Online (Sandbox Code Playgroud)

并只输出用户名和 IP 地址的列表,例如:

sampleuser; 10.50.0.247;
user; 10.51.0.27;
Run Code Online (Sandbox Code Playgroud)

为了解析日志文件,我创建了以下模式数据库(example.xml):

<patterndb version='4' pub_date='2010-10-17'>
    <ruleset name='ssh' id='123456678'>
        <pattern>ssh</pattern>
            <rules>
                <rule provider='me' id='182437592347598' class='system'>
                    <patterns>
                        <pattern>Accepted @ESTRING:SSH.AUTH_METHOD: @for @ESTRING:SSH_USERNAME: @from @ESTRING:SSH_CLIENT_ADDRESS: @port @NUMBER:SSH_PORT_NUMBER:@ ssh2</pattern>
                    </patterns>
                    <examples>
                        <example>
                            <test_message program="ssh">Accepted password for sampleuser from 10.50.0.247 port 42156 ssh2</test_message>
                            <test_values>
                                <test_value …
Run Code Online (Sandbox Code Playgroud)

syslog syslog-ng

5
推荐指数
0
解决办法
1290
查看次数

如何在 snort 警报上运行 shell 脚本?

我在监听 cisco 交换机的 SPAN 端口时哼了一声。我希望能够在我的网络服务器上添加一个 iptables DROP 规则以用于特定的 snort 警报,但很难找到确切的方法。我希望阻塞实时发生,而不是通过 cron 启动脚本来定期拖网 snort 日志。

我在 Seclists 上找到了一个示例,它使用 syslog-ng 运行 shell 脚本,但它必须用于旧版本的 syslog-ng,因为我在重新启动 syslog-ng 时收到有关不推荐使用的语法的错误。

我对 syslog-ng 过滤器了解不多,因此我打算对此进行更多研究,因为它看起来很有希望,但我想我会在这里提出问题,以防有更好的方法。当 snort 警报通过我的 snort 框的 SPAN 端口时,运行 shell 脚本的好方法是什么?

linux iptables snort syslog-ng

5
推荐指数
1
解决办法
2675
查看次数

Syslog-ng:如何记录严重性/设施?

这是系统:

  • SUSE Linux 企业服务器 10
  • 带有预定义 syslog-ng.conf 的 syslog-ng
  • /var/log/messages 中的消息如下所示:

2 月 8 日 09:29:53 sles1 sshd[17529]:接受来自 10.30.34.64 端口 4855 ssh2 的 root 用户键盘交互/pam

我需要的:

  • 记录事件严重性/设施。例如,在消息的开头添加<PRI>

<15> Feb 8 09:29:53 sles1 sshd[17529]: 接受来自 10.30.34.64 端口 4855 ssh2 的 root 用户键盘交互/pam

我的问题是:

如何更改 syslog-ng.conf 以启用这种日志记录?

谢谢。

sles sles10 syslog-ng

4
推荐指数
1
解决办法
6275
查看次数