17370845950

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

在构建siem(安全事件与信息管理)系统时,日志监控尤其重要。对于黑客的重点目标——域控制器(域控),其日志监控至关重要。本文将详细介绍如何通过windows事件转发(wef)将windows主机日志汇总到中心节点,并将其导入elasticsearch,最终通过kibana进行展示。

此架构的优点:

Windows WEF环境配置自Windows 2008以来已启用,主要用于日志的集中收集和存储,具有诸多优势。

运行必要条件和架构介绍Windows日志转发有两种方式:

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

本文将以源计算机已启动的方式进行介绍,其中角色包括:

Client端配置Client的安全日志权限查询和添加

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

wevtutil gl security

该命令用于检查安全日志的读取权限是否允许网络服务读取。

如果返回内容包含以下信息,则表示配置成功:

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

如果缺少 (A;;0x1;;;NS),表示网络服务权限未添加到安全日志项中。需要保存结果后,再添加网络服务权限。

Client的安全日志网络权限添加

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

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

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

Client的发送目标配置

通过组策略->计算机配置->管理模板->Windows组件->事件转发->配置目标订阅管理器(即我们的服务器端地址)

选择已启用,并输入:

Server=http://logcentra.domain.com:5985/wsman/SubscriptionManager/WEC

Server端配置打开日志收集项

使用管理员权限打开PowerShell或CMD,运行 winrm qc 启用WinRM服务,并激活日志收集项:

运行成功后,5985和5986端口将被打开。

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

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

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

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

转发错误的日志查看

上述步骤已经完成整个日志转发流程的配置,但可能会有疏漏之处。如果需要排错,建议在Client端的日志发起方查看日志,查看位置在:

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

其他命令

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

wecutil cs DomainComputers.xmlwecutil cs DomainControllers.xml

Windows下的nxlog转发配置nxlog https://www./link/8fc30966df18b68dc8181947fa6400ea 是一个用于将Windows日志转换为JSON格式后转发到ES或Logstash的开源工具。

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

输入端:

  Module      im_msvistalog    Exec     to_json();    Query                        Select Path="ForwardedEvents">*                    

输出端用于将日志输出到指定服务,此示例是将日志输出到Logstash。

输出端配置:

  Module om_ssl  Host IP_Address  Port Port_Number  CaFile %ROOT%certca.pem  OutputType LineBased    Module    om_file    File    "C:xlog_debug.log"

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

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展示结果

参考