41

SIEM中心日志节点WEF搭建说明

 5 years ago
source link: https://www.freebuf.com/articles/es/197812.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

*本文作者:mr.anderson,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。

背景介绍

在 SIEM (安全应急事件管理) 搭建中,日志是及其重要的一环。对于黑客掌上的明珠——域控, 它的日志监控是非常重要的,本文将介绍如何通过 WEF(Windows Event Forwarding) 将windows 主机日志汇总到一台中心节点,并输入到ElasticSearch ,最后通过Kibana 的展示。

此架构的优点:

查询快速;

通过调用ES可以实现安全事件实时监控。

Windows WEF 环境配置

Windows Event Forwarding 在windows 2008时就已经启用,主要用于日志中心化收集和转储,好处很多。

运行必要条件

一台在域控中的日志收集节点 (server 端);

任意一台需要发送到日志中心节点的域内主机 (client 端);

一个域控管理员权限用户;

Client 端的日志读取账户权限需要开启network services 权限;

防火墙对域内的5985/5986端口白名单,用于日志传输。

架构介绍

windows 的日志转发有两种方式:

收集器已启动;

源计算机已启动。

考虑到安全性,可以选择源计算机已启动,好处是只需要开启域控到收集端的访问,无需在域控中添加账户。一旦收集端出现安全风险,在防火墙配置正确的前提下,也不会影响任何域控,

此文将按照源计算机已启动为方法做介绍,其中角色:

client 日志发送方;
server 日志收集方。

Client 端配置

Client 的 security log 权限查询和添加

使用管理员权限打开 powershell ,运行如下命令:

wevtutil gl security

该命令是用于检查security 日志读取权限是否允许network service 读取。

返回应该是如下内容则配置成功:

PS C:\Windows\system32>  wevtutil gl security
...
channelAccess: O:BAG:SYD:(A;;0xf0005;;;SY)(A;;0x5;;;BA)(A;;0x1;;;S-1-5-32-573)(A;;0x1;;;NS

如果缺少 (A;;0×1;;;NS) 表示network service 权限没有加到security 日志项中。需要单独添加,添加前记得先将结果保存后,然后追加 network service权限。

Client 的 security 日志的 network 权限添加

组策略-> 计算机配置 -> 管理模板 -> windows 组件 -> 事件日志服务器 -> 安全-> 配置日志访问

然后双击后,选择已启用,将 wevtutil gl security 中的值和(A;;0×1;;;NS)加入到配置项中 ,如

O:BAG:SYD:(A;;0xf0005;;;SY)(A;;0x5;;;BA)(A;;0x1;;;S-1-5-32-573)(A;;0x1;;;NS)

jaymmq2.jpg!web

Client 的发送目标配置

组策略-> 计算机配置 -> 管理模板 -> windows 组件 -> 事件转发 -> 配置目标订阅管理器(即就是我们的server端地址)

选择已启用,并输入:

Server=<a href="http://logcentra.domain.com:5985/wsman/SubscriptionManager/WEC">http://logcentra.domain.com:5985/wsman/SubscriptionManager/WEC</a>

yqqIz2r.jpg!web

Server 端配置

打开日志收集项

使用管理员权限打开powershell 或cmd ,运行winrm qcWinRM 服务,并激活日志收集项:

RB7NvqV.jpg!web

运行成功后你会看到5985 5986端口打开。

配置日志接收项和接收的计算机

打开事件查看器,并选择左侧订阅:

ERvyqmm.jpg!web

选择右侧的创建订阅,并选择你感兴趣的item项。

2ABRrij.jpg!web

BFRVZjF.jpg!web

IJju22F.jpg!web

IBNfIv7.jpg!web

选择添加刚刚配置的域计算机,并输入计算机名即完成日志接收端配置。

转发错误的日志查看

上述已经将整个日志转发流程配置完成了,但是肯定有疏漏的地方,如果想要排错,建议在 client 端的日志发起方查看日志,查看位置在:

事件管理器 -> 应用程序和服务日志 -> Microsoft -> windows -> Eventlog-forwardingPlugin

其他命令

命令行导入自定义订阅日志规则:

wecutil cs DomainComputers.xml
wecutil cs DomainControllers.xml

Windows 下的 nxlog 转发配置

nxlog [ https://nxlog.co/ ] 是用于将windows 日志json 化以后转发到 ES 或者 Logstash 的开源工具。

其中的关键配置分为输入端和输出端,输入端当然是windows 的事件日志,由于我们是转发日志,所以需要在 Select Path 输入 ForwardedEvents。

输入端:

<Input in>
  Module      im_msvistalog
	Exec 	to_json();
	Query	<QueryList>\
                    	<Query Id="0">\
					Select Path="ForwardedEvents">*</Select>\
                	</Query>\
		</QueryList>
</Input>

输出端用于将日志输出到制定服务,该实例是将日志输出到 logstash。

输出端配置:

<Output out>
  Module om_ssl
  Host IP_Address
  Port Port_Number
  CaFile %ROOT%\cert\ca.pem
  OutputType LineBased
</Output>

<Output out_debug>
    Module	om_file
    File	"C:\\nxlog_debug.log"
</Output>

可以看到日志传输是使用自签发证书加密的,保证了日志传输安全性。

logstash 日志配置

input {
  tcp {
        port => Port
        type => "nxlogs"
        ssl_cert => "/etc/logstash/conf.d/ssl/logstash.crt"
        ssl_key => "/etc/logstash/conf.d/ssl/logstash.key"
        ssl_extra_chain_certs => ["/etc/logstash/conf.d/ssl/ca.pem"]
        ssl_verify => false
        ssl_enable => true
        codec => 'json'
    }
}
filter
{
        if [type] == "nxlogs" {
          date {
              match => ["[EventTime]", "YYYY-MM-dd HH:mm:ss"]
          }
        }

}

output
{
        #stdout{}
 elasticsearch
 {
        hosts => ["IP:PORT"]
        index => "ad-monitor-%{+YYYY.MM.dd}"
        user => "name"
        password => "password"
 }
}

Nxlog 和 Logstash 的加密证书配置命令

ca 私钥生成

openssl genrsa -out ca.key 2048

签发个人 CA

openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.pem

创建 logstash 的私钥

openssl genrsa -out logstash.key 2048

创建 logstash 的证书申请

openssl req -new -key logstash.key -out logstash.csr

使用 ca 证书去前方刚刚创建的logstash 证书申请并生成证书,过期时间为10年(不安全,但是方便)

openssl x509 -req -in logstash.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out logstash.crt -days 3650 -sha256

Kibana 展示结果

YnMRj2Q.jpg!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK