在典型的企业账户中,我看到应用程序开发人员、DevOps和SRE团队的日志管理按以下兴趣顺序排列:
- 来自核心web和后台服务的应用程序日志
- 访问NGINX、Apache、AWS负载均衡器和类似服务的日志
- 来自关键平台的基础设施日志,如SQL数据库、Redis集群、Kafka集群和虚拟化层
然而,还有另外一类日志提供了对现代数字企业面临的一些最严重威胁的必要可见性。这类日志大体上与安全相关,但它们为团队提供了跨整个平台的特定用户/客户端操作的记录。这类日志包括:
- Linux systemd日志
- Security-Enhanced (SE) Linux审计日志
- Windows安全事件日志
- 防火墙日志
在这篇文章中,我将展示如何使用我们的基础设施监控代理将这些日志类型发送到New Relic。
systemd日志
基于Linux的Systemd统一服务配置和行为。在许多Linux Distros运行企业工作负载对于一些世界上一些最大的公司,Systemd控制大多数“核心”Linux进程,例如Cron,网络和防火墙进程。换句话说,它控制系统中发生的大量处理。虽然没有专门的安全性专注,但它发出了一个“安全相邻的”日志,可以告诉您在Linux环境中发生的事情。
例如,SystemD来自安全性的角度,因为它可以:
- 停止防火墙服务
- 重启防火墙服务(可能是在不适当的配置更改之后)
- 停止运行网络接口的服务
- 管理关键的引导进程,如挂载文件系统
通过基础设施代理向New Relic发送systemd日志
我们的基础设施的代理提供一个简单的入口,将各种systemd日志转发到New Relic。贪婪的方法会将输出的几乎所有日志转发给/ var / log /消息
,这是处理systemd控制的日志的通常路径。然而,一种更可控的方法是指定要记录的特定systemd服务。
例如,在New Relic中这样做:
添加以下条目到/etc/newrelic-infra / logging.d / logs.yml
日志:—名称:systemd-firewalld systemd: firewalld
New Relic基础架构代理应该能够识别此更改,并自动开始转发由防火墙进程发出的日志。向配置中添加额外的systemd服务日志很简单:
日志信息:—名称:systemd-firewalld systemd: firewalld—名称:systemd-auditd systemd: auditd
通过这个简单的配置,New Relic将接收与这两个服务相关的每个事件的日志。
下面是一个查询和结果图表,显示了我自己的SSH操作的日志:
SELinux审计日志
SELinux是一个Linux内核安全模块,它允许您设置访问控制安全策略,包括每个用户空间的强制访问控制(MAC)。SELinux日志为各种访问和拒绝与Linux系统资源相关的事件提供了高度细粒度的事件日志。
Selinux日志可以告诉您:
- 未经授权的使用
sudo
- 未经授权或意外的SSH访问
- 未授权访问文件或可执行文件
这些事件并不一定要被视为“入侵检测”——您可以将它们视为访问策略实施日志。例如,即使您的系统管理员可能被授权SSH到某个主机,您仍然希望了解可能导致意外失败的“未归档的热修复程序”。
在现代SRE的环境中,许多聪明的用户不断地协同工作,以保持复杂的系统正常运行。在某些情况下,试图减轻和调查可能本身就是一个漏洞。
让我们假设一个进程或用户试图访问一个他们没有被授权访问的HTML文件。如果审计
守护进程正在运行时,会写入一个默认的SELinux拒绝消息,如下所示/var/log/audit/audit.log
:
dev=dm-0 ino=399185 scontext=unconfined_u:system_r: samba_share_t:s0 tclass=file . conf . conf . conf . conf . conf . conf . conf . conf . conf . conf . conf . conf . conf . conf . conf . conf . conf . conf . conf . conf
此外,SELinux会发送日志/ var / log /消息
:
May 7 18:55:56 localhost se疑难解答:SELinux is preventing httpd (httpd_t)/var/www/html/file1 (samba_share_t)的getattr。获取完整的SELinux消息。执行sealert -l de7e30d6-5488-466d-a606-92c9f40d316d命令
将Selinux审核日志发送给新遗物
首先,确保审计
业务日志正在发送到New Relic。将以下部分添加到/etc/newrelic-infra / logging.d / logs.yml
:
—名称:systemd-auditd systemd: auditd
最后,添加此配置以将详细的审计日志转发到New Relic。
- 名称:审核日志文件:/var/log/audit/audit.log
添加审核日志和系统日志后,您的logs.yml
应该如下所示:
日志:—名称:systemd- firewallsystemd: firewall—名称:systemd-auditd systemd: auditd—名称:审计日志文件:/var/log/audit/audit.log
这是New Relic的一个视图,我正在搜索我的测试主机发送邮件失败的尝试:
Windows安全事件日志
Selinux现代Windows系统跟踪各种与安全相关的活动,并将其注销Windows事件,每个都具有特定的事件代码。没有短缺安全事件Windows的痕迹。例如:
事件代码 | 描述 |
---|---|
4720 | 创建用户帐户 |
4722 | 用户帐户已启用 |
4826. | 加载启动配置数据 |
4825. | 一个用户被拒绝访问远程桌面 |
4624 | 帐户已成功登录 |
4625 | 帐户登录失败 |
4700 | 日志含义启用定时任务 |
4701. | 计划的任务已禁用 |
4702 | 更新了一个计划任务 |
4735 | 日志含义修改了启用安全的本地组 |
要使用它,请创建文件/etc/newrelic-infra / logging.d
命名winlog.yml.
,或编辑您现有的log.yml
文件中,添加以下部分:
我们的基础设施代理从Windows日志通道收集事件并将其转发给New Relic。
日志: - 名称:Windows-Security Winlog:频道:安全Collect-FempIDS: - 4624 - 4265 - 4700-4702 exclude-eventids: - 4735
这是在New Relic的样子,如果我搜索的话频道:“安全性”和“无法登录”
:
防火墙日志
防火墙日志有双重目的:它们可以告诉您网络基础设施何时出现故障,如果发生了某种入侵,它们还可以向您提供早期警告。
防火墙日志的确切内容和输出格式将取决于您使用的供应商,因此没有单尺寸适合所有解决方案。但是,如果您可以将防火墙服务或设备重新配置到转发日志,仍然可以在TCP或UDP上发出Syslog日志。在这种情况下,您可以将Syslog日志直接发送给我们的syslog端点(仅限tpc),或将这些日志发送到转发层,如Fluent Bit、Fluentd或Logstash。
重要的是,所有现代防火墙设备都会发出类似的日志。在这个CISCO的例子中(具体来说Cisco Adaptive Security Appliance (ASA)软件版本7.2),严重程度1最多关于,6或更高的是被视为信息或调试:
思科ID | 严重程度 | 日志的文本 |
---|---|---|
106021 | 1 | 在接口interface_name上拒绝从source_address到dest_address的协议反向路径检查 |
106018 | 2 | ICMP报文类型ICMP_type deny by outbound list acl_ID src inside_address dest outside_address |
106010 | 3. | 禁止入站协议src interface_name:dest_address/dest_port dst |
106100 | 4 | 访问列表acl_id {允许|否认|EST-Abouts}协议interface_name / source_address(source_port) - > interface_name / dest_address(dest_port)hit-cnt编号({first hist |数字 - 第二间隔}) |
106015 | 6 | Deny TCP (no connection) from IP_address/port to IP_address/port flags tcp_flags on interface interface_name |
下面的示例向您展示如何设置基础架构代理的内置日志转发程序,以通过TCP连接接收防火墙日志。请记住,您不需要在任何特定的设备上安装基础设施代理——它可以完全独立于防火墙设备。注意:如果您正在使用不同的防火墙系统,请联系您的新Relic帐户团队获取更具体的信息。
日志:名称:firewall-logs-tcp-raw tcp: uri: tcp: / / 0.0.0.0:1234 #使用tcp: / / LISTEN_ADDRESS:港口格式格式:#原始文本-这是没有一个默认的tcp分离器:\ t # max_line_kb字符串分离原始文本条目:32 -名称:firewall-logs-tcp-json tcp: uri: tcp: / / 0.0.0.0:2345 #使用tcp: / / LISTEN_ADDRESS:港口格式格式:json
您需要在防火墙设备上更新的唯一配置是日志输出配置。这是Cisco防火墙日志输出的示例配置。
在新的遗物中,你会过滤Logtype:“Cisco防火墙”
:
从这里开始,您可以构建一个查询来深入研究一个特定的子网:
提示:关于更高级的日志转发配置的解释,请查看我的文章,“设置日志转发器的五个最佳实践。“
结论
有强大的解析,查询和仪表盘功能,New Relic是发送某些安全性和安全性相邻系统日志的完美场所。我们的内置日志管理组件——全栈可观察性的一部分提供一个方便的外开箱工具包,用于探索,组织和丰富日志数据。
当你所有的DevOps和行为团队访问这些数据(而不只是你的网络和Linux专家)他们将更好地准备相关的异常情况与APM性能下降安全日志,或看到的一般基础设施性能degradation-all至关重要的实践统一的可观测性。
现在您知道了如何从日志数据中提取有价值的安全信息,注册为一个免费的新遗物帐户,并获得日志的一部分完整的可观测性。