一、用nxlog采集windows日志
########################################################################### 根底配置 ############################################################################# 64零碎define ROOT C:\Program Files (x86)\nxlog# 32零碎#define ROOT C:\Program Files\nxlogModuledir %ROOT%\modulesCacheDir %ROOT%\dataPidfile %ROOT%\data\nxlog.pidSpoolDir %ROOT%\dataLogFile %ROOT%\data\nxlog.log# 开启GELF格局扩大,并定义最大日志长度<Extension gelf> Module xm_gelf ShortMessageLength 65536</Extension># 开启JSON扩大 <Extension json> Module xm_json</Extension># 开启主动转码<Extension _charconv> Module xm_charconv AutodetectCharsets iso8859-2, utf-8, utf-16, utf-32</Extension>########################################################################### 输出配置-windows日志 ############################################################################# 因为NXLOG社区版本最大只能发送256个Channel,而目前windows2016,曾经超过300个,因而局部日志采集不到,须要手动查问通道,来避免单次查问超过256<Input APP_Logs># WIN7 以上 Module im_msvistalog# WINDOWS 2003# Module im_mseventlog # 查问Application通道 Query <QueryList><Query Id="0"><Select Path="Application">*</Select></Query></QueryList> # 过滤所有类型为具体的事件类型 Exec if $EventType == 'VERBOSE' drop(); Exec $Hostname = hostname();</Input><Input SYS_Logs># WIN7 以上 Module im_msvistalog# WINDOWS 2003# Module im_mseventlog # 查问System通道 Query <QueryList><Query Id="0"><Select Path="System">*</Select></Query></QueryList> # 过滤所有类型为具体的事件类型 Exec if $EventType == 'VERBOSE' drop(); Exec $Hostname = hostname();</Input><Input SEC_Logs># WIN7 以上 Module im_msvistalog# WINDOWS 2003# Module im_mseventlog # 查问Security通道 Query <QueryList><Query Id="0"><Select Path="Security">*</Select></Query></QueryList> # 过滤所有类型为具体的事件类型 Exec if $EventType == 'VERBOSE' drop(); Exec $Hostname = hostname();</Input>########################################################################### 输入配置 ############################################################################<Output Logstash> Module om_udp Host logstash-ip Port 5414 OutputType GELF</Output><Route APP> Path APP_Logs => Logstash</Route><Route SYS> Path SYS_Logs => Logstash</Route><Route SYS> Path SEC_Logs => Logstash</Route>
二、用logstash,将windows日志进一步整顿
备注:二和三能够合并在一起,而无需kafka
input { gelf { use_udp => "true" codec => json_lines { charset => CP1252 } port => "5414" id => "winlog" }}# 这里过滤规定跟 winlogbeat 保持一致filter { if [Channel] == "Security" or [Channel] == "Application" or [Channel] == "System" { } else if [Channel] == "Windows PowerShell" { if [EventID] != 400 and [EventID] != 403 and [EventID] != 600 and [EventID] != 800 { drop {} } } else if [Channel] == "Microsoft-Windows-PowerShell/Operational" { if [EventID] != 4103 and [EventID] != 4104 and [EventID] != 4105 and [EventID] != 4106 { drop {} } } else { drop {} }}output { kafka { bootstrap_servers => "kafka-ip" topic_id => "winlog" codec => "json" }}
三、将windows gelf日志格局换成为ecs规范格局
input { kafka { bootstrap_servers => "kafka-ip" client_id => "winlog" group_id => "logstash-es-winlog" auto_offset_reset => "latest" consumer_threads => 1 decorate_events => "true" topics => ["winlog"] codec => "json" }}filter { if [Channel] == "Windows PowerShell" { if [EventID] == "800" { mutate { add_field => { "[winlog][event_data][param2]" => "%{message}" } } kv { source => "[winlog][event_data][param2]" target => "[winlog][event_data]" field_split => "\n\t" trim_key => "\n\t" trim_value => "\n\t" value_split => "=" } } else { mutate { add_field => { "[winlog][event_data][param3]" => "%{message}" } } kv { source => "[winlog][event_data][param3]" target => "[winlog][event_data]" field_split => "\n\t" trim_key => "\n\t" trim_value => "\n\t" value_split => "=" } } } # ECS fields mutate { rename => { "host" => "source_name" "SeverityValue" => "[event][severity]" "EventReceivedTime" => "[event][time][received]" "SourceModuleType" => "[nxlog][module][type]" "SourceModuleName" => "[nxlog][module][name]" "Severity" => "[winlog][level]" "ThreadID" => "[winlog][process][thread][id]" "ProcessID" => "[winlog][process][id]" } add_field => { "[agent][name]" => "%{source_name}" "[agent][version]" => "2.10.2150" "[host][ip]" => "%{source_host}" "[host][name]" => "%{source_name}" "[host][os][platform]" => "windows" "[host][os][type]" => "windows" "[event][code]" => "%{EventID}" } } # 非凡字段,占用了默认开展字段 mutate { rename => { "url" => "[winlog][event_data][url]" "bytesTransferred" => "[winlog][event_data][bytesTransferred]" "fileLength" => "[winlog][event_data][fileLength]" "bytesTotal" => "[winlog][event_data][bytesTotal]" "error" => "[winlog][event_data][error]" "destination" => "[winlog][event_data][destination]" "bytesTransferredFromPeer" => "[winlog][event_data][bytesTransferredFromPeer]" "source" => "[winlog][event_data][source]" } } # winlog mutate { add_field => { "[winlog][api]" => "wineventlog" } rename => { "ActivityID" => "[winlog][activity_id]" "EventID" => "[winlog][event_id]" "EventType" => "[winlog][keywords]" "Channel" => "[winlog][channel]" "RecordNumber" => "[winlog][record_id]" "Opcode" => "[winlog][opcode]" "ProviderGuid" => "[winlog][provider_guid]" "SourceName" => "[winlog][provider_name]" "Category" => "[winlog][task]" "Version" => "[winlog][version]" } } # event_data mutate { rename => { "AuthenticationPackageName" => "[winlog][event_data][AuthenticationPackageName]" "Binary" => "[winlog][event_data][Binary]" "BitlockerUserInputTime" => "[winlog][event_data][BitlockerUserInputTime]" "BootMode" => "[winlog][event_data][BootMode]" "BootType" => "[winlog][event_data][BootType]" "BuildVersion" => "[winlog][event_data][BuildVersion]" "Company" => "[winlog][event_data][Company]" "CorruptionActionState" => "[winlog][event_data][CorruptionActionState]" "CreationUtcTime" => "[winlog][event_data][CreationUtcTime]" "Description" => "[winlog][event_data][Description]" "Detail" => "[winlog][event_data][Detail]" "DeviceName" => "[winlog][event_data][DeviceName]" "DeviceNameLength" => "[winlog][event_data][DeviceNameLength]" "DeviceTime" => "[winlog][event_data][DeviceTime]" "DeviceVersionMajor" => "[winlog][event_data][DeviceVersionMajor]" "DeviceVersionMinor" => "[winlog][event_data][DeviceVersionMinor]" "DriveName" => "[winlog][event_data][DriveName]" "DriverName" => "[winlog][event_data][DriverName]" "DriverNameLength" => "[winlog][event_data][DriverNameLength]" "DwordVal" => "[winlog][event_data][DwordVal]" "EntryCount" => "[winlog][event_data][EntryCount]" "ExtraInfo" => "[winlog][event_data][ExtraInfo]" "FailureName" => "[winlog][event_data][FailureName]" "FailureNameLength" => "[winlog][event_data][FailureNameLength]" "FileVersion" => "[winlog][event_data][FileVersion]" "FinalStatus" => "[winlog][event_data][FinalStatus]" "Group" => "[winlog][event_data][Group]" "IdleImplementation" => "[winlog][event_data][IdleImplementation]" "IdleStateCount" => "[winlog][event_data][IdleStateCount]" "ImpersonationLevel" => "[winlog][event_data][ImpersonationLevel]" "IntegrityLevel" => "[winlog][event_data][IntegrityLevel]" "IpAddress" => "[winlog][event_data][IpAddress]" "IpPort" => "[winlog][event_data][IpPort]" "KeyLength" => "[winlog][event_data][KeyLength]" "LastBootGood" => "[winlog][event_data][LastBootGood]" "LastShutdownGood" => "[winlog][event_data][LastShutdownGood]" "LmPackageName" => "[winlog][event_data][LmPackageName]" "LogonGuid" => "[winlog][event_data][LogonGuid]" "LogonId" => "[winlog][event_data][LogonId]" "LogonProcessName" => "[winlog][event_data][LogonProcessName]" "LogonType" => "[winlog][event_data][LogonType]" "MajorVersion" => "[winlog][event_data][MajorVersion]" "MaximumPerformancePercent" => "[winlog][event_data][MaximumPerformancePercent]" "MemberName" => "[winlog][event_data][MemberName]" "MemberSid" => "[winlog][event_data][MemberSid]" "MinimumPerformancePercent" => "[winlog][event_data][MinimumPerformancePercent]" "MinimumThrottlePercent" => "[winlog][event_data][MinimumThrottlePercent]" "MinorVersion" => "[winlog][event_data][MinorVersion]" "NewProcessId" => "[winlog][event_data][NewProcessId]" "NewProcessName" => "[winlog][event_data][NewProcessName]" "NewSchemeGuid" => "[winlog][event_data][NewSchemeGuid]" "NewTime" => "[winlog][event_data][NewTime]" "NominalFrequency" => "[winlog][event_data][NominalFrequency]" "Number" => "[winlog][event_data][Number]" "OldSchemeGuid" => "[winlog][event_data][OldSchemeGuid]" "OldTime" => "[winlog][event_data][OldTime]" "OriginalFileName" => "[winlog][event_data][OriginalFileName]" "Path" => "[winlog][event_data][Path]" "PerformanceImplementation" => "[winlog][event_data][PerformanceImplementation]" "PreviousCreationUtcTime" => "[winlog][event_data][PreviousCreationUtcTime]" "PreviousTime" => "[winlog][event_data][PreviousTime]" "PrivilegeList" => "[winlog][event_data][PrivilegeList]" "ProcessId" => "[winlog][event_data][ProcessId]" "ProcessName" => "[winlog][event_data][ProcessName]" "ProcessPath" => "[winlog][event_data][ProcessPath]" "ProcessPid" => "[winlog][event_data][ProcessPid]" "Product" => "[winlog][event_data][Product]" "PuaCount" => "[winlog][event_data][PuaCount]" "PuaPolicyId" => "[winlog][event_data][PuaPolicyId]" "QfeVersion" => "[winlog][event_data][QfeVersion]" "Reason" => "[winlog][event_data][Reason]" "SchemaVersion" => "[winlog][event_data][SchemaVersion]" "ServiceName" => "[winlog][event_data][ServiceName]" "ServiceVersion" => "[winlog][event_data][ServiceVersion]" "ShutdownActionType" => "[winlog][event_data][ShutdownActionType]" "ShutdownEventCode" => "[winlog][event_data][ShutdownEventCode]" "ShutdownReason" => "[winlog][event_data][ShutdownReason]" "Signature" => "[winlog][event_data][Signature]" "SignatureStatus" => "[winlog][event_data][SignatureStatus]" "Signed" => "[winlog][event_data][Signed]" "StartTime" => "[winlog][event_data][StartTime]" "State" => "[winlog][event_data][State]" "Status" => "[winlog][event_data][Status]" "StopTime" => "[winlog][event_data][StopTime]" "SubjectDomainName" => "[winlog][event_data][SubjectDomainName]" "SubjectLogonId" => "[winlog][event_data][SubjectLogonId]" "SubjectUserName" => "[winlog][event_data][SubjectUserName]" "SubjectUserSid" => "[winlog][event_data][SubjectUserSid]" "TSId" => "[winlog][event_data][TSId]" "TargetDomainName" => "[winlog][event_data][TargetDomainName]" "TargetInfo" => "[winlog][event_data][TargetInfo]" "TargetLogonGuid" => "[winlog][event_data][TargetLogonGuid]" "TargetLogonId" => "[winlog][event_data][TargetLogonId]" "TargetServerName" => "[winlog][event_data][TargetServerName]" "TargetUserName" => "[winlog][event_data][TargetUserName]" "TargetUserSid" => "[winlog][event_data][TargetUserSid]" "TerminalSessionId" => "[winlog][event_data][TerminalSessionId]" "TokenElevationType" => "[winlog][event_data][TokenElevationType]" "TransmittedServices" => "[winlog][event_data][TransmittedServices]" "UserSid" => "[winlog][event_data][UserSid]" "Version" => "[winlog][event_data][Version]" "param1" => "[winlog][event_data][param1]" "param2" => "[winlog][event_data][param2]" "param3" => "[winlog][event_data][param3]" "param4" => "[winlog][event_data][param4]" "param5" => "[winlog][event_data][param5]" "param6" => "[winlog][event_data][param6]" "param7" => "[winlog][event_data][param7]" "param8" => "[winlog][event_data][param8]" } } # event_data 查漏补缺 mutate { rename => { "AccessList" => "[winlog][event_data][AccessList]" "AccessListMain" => "[winlog][event_data][AccessListMain]" "AccessMask" => "[winlog][event_data][AccessMask]" "AccessReason" => "[winlog][event_data][AccessReason]" "AccountName" => "[winlog][event_data][AccountName]" "AccountType" => "[winlog][event_data][AccountType]" "ActionName" => "[winlog][event_data][ActionName]" "AccountDomain" => "[winlog][event_data][AccountDomain]" "AppCorrelationID" => "[winlog][event_data][AppCorrelationID]" "AttributeLDAPDisplayName" => "[winlog][event_data][AttributeLDAPDisplayName]" "AttributeSyntaxOID" => "[winlog][event_data][AttributeSyntaxOID]" "AttributeValue" => "[winlog][event_data][AttributeValue]" "AlertDesc" => "[winlog][event_data][AlertDesc]" "AlgorithmName" => "[winlog][event_data][AlgorithmName]" "Application" => "[winlog][event_data][Application]" "CounterId" => "[winlog][event_data][CounterId]" "CounterSetGuid" => "[winlog][event_data][CounterSetGuid]" "ClientAddress" => "[winlog][event_data][ClientAddress]" "ClientName" => "[winlog][event_data][ClientName]" "ContextInfo" => "[winlog][event_data][ContextInfo]" "DestAddress" => "[winlog][event_data][DestAddress]" "DestPort" => "[winlog][event_data][DestPort]" "Direction" => "[winlog][event_data][Direction]" "Domain" => "[winlog][event_data][Domain]" "DSName" => "[winlog][event_data][DSName]" "DSType" => "[winlog][event_data][DSType]" "Error" => "[winlog][event_data][Error]" "ErrorCode" => "[winlog][event_data][ErrorCode]" "EnginePID" => "[winlog][event_data][EnginePID]" "EventCountTotal" => "[winlog][event_data][EventCountTotal]" "ElevatedToken" => "[winlog][event_data][ElevatedToken]" "FilterRTID" => "[winlog][event_data][FilterRTID]" "FailureReason" => "[winlog][event_data][FailureReason]" "GroupMembership" => "[winlog][event_data][GroupMembership]" "HandleId" => "[winlog][event_data][HandleId]" "InstanceId" => "[winlog][event_data][InstanceId]" "InstanceName" => "[winlog][event_data][InstanceName]" "KeyName" => "[winlog][event_data][KeyName]" "KeyType" => "[winlog][event_data][KeyType]" "LayerName" => "[winlog][event_data][LayerName]" "LogString" => "[winlog][event_data][LogString]" "LayerRTID" => "[winlog][event_data][LayerRTID]" "MandatoryLabel" => "[winlog][event_data][MandatoryLabel]" "NewUacValue" => "[winlog][event_data][NewUacValue]" "ObjectName" => "[winlog][event_data][ObjectName]" "ObjectServer" => "[winlog][event_data][ObjectServer]" "ObjectType" => "[winlog][event_data][ObjectType]" "ObjectClass" => "[winlog][event_data][ObjectClass]" "ObjectDN" => "[winlog][event_data][ObjectDN]" "ObjectGUID" => "[winlog][event_data][ObjectGUID]" "OpCorrelationID" => "[winlog][event_data][OpCorrelationID]" "OperationType" => "[winlog][event_data][OperationType]" "Operation" => "[winlog][event_data][Operation]" "OldTargetUserName" => "[winlog][event_data][OldTargetUserName]" "Protocol" => "[winlog][event_data][Protocol]" "PreAuthType" => "[winlog][event_data][PreAuthType]" "Payload" => "[winlog][event_data][Payload]" "PackageName" => "[winlog][event_data][PackageName]" "ParentProcessName" => "[winlog][event_data][ParentProcessName]" "RestrictedAdminMode" => "[winlog][event_data][RestrictedAdminMode]" "RelativeTargetName" => "[winlog][event_data][RelativeTargetName]" "ReturnCode" => "[winlog][event_data][ReturnCode]" "RemoteMachineID" => "[winlog][event_data][RemoteMachineID]" "RemoteUserID" => "[winlog][event_data][RemoteUserID]" "ShareLocalPath" => "[winlog][event_data][ShareLocalPath]" "ShareName" => "[winlog][event_data][ShareName]" "SubcategoryGuid" => "[winlog][event_data][SubcategoryGuid]" "SourceAddress" => "[winlog][event_data][SourceAddress]" "SourcePort" => "[winlog][event_data][SourcePort]" "ServiceSid" => "[winlog][event_data][ServiceSid]" "SubStatus" => "[winlog][event_data][SubStatus]" "Service" => "[winlog][event_data][Service]" "SessionName" => "[winlog][event_data][SessionName]" "TaskInstanceId" => "[winlog][event_data][TaskInstanceId]" "TicketEncryptionType" => "[winlog][event_data][TicketEncryptionType]" "TicketOptions" => "[winlog][event_data][TicketOptions]" "TargetLinkedLogonId" => "[winlog][event_data][TargetLinkedLogonId]" "TargetOutboundDomainName" => "[winlog][event_data][TargetOutboundDomainName]" "TargetOutboundUserName" => "[winlog][event_data][TargetOutboundUserName]" "TdoType" => "[winlog][event_data][TdoType]" "TdoDirection" => "[winlog][event_data][TdoDirection]" "TdoAttributes" => "[winlog][event_data][TdoAttributes]" "TargetSid" => "[winlog][event_data][TargetSid]" "TaskName" => "[winlog][event_data][TaskName]" "UserID" => "[winlog][event_data][UserID]" "UserContext" => "[winlog][event_data][UserContext]" "VolumeNameLength" => "[winlog][event_data][VolumeNameLength]" "VolumeGuid" => "[winlog][event_data][VolumeGuid]" "VirtualAccount" => "[winlog][event_data][VirtualAccount]" "VolumeName" => "[winlog][event_data][VolumeName]" "Workstation" => "[winlog][event_data][Workstation]" "WorkstationName" => "[winlog][event_data][WorkstationName]" } } # powershell mutate { rename => { "ConnectedUser" => "[winlog][event_data][ConnectedUser]" "CommandLine" => "[winlog][event_data][CommandLine]" "CommandPath" => "[winlog][event_data][CommandPath]" "CommandName" => "[winlog][event_data][CommandName]" "CommandType" => "[winlog][event_data][CommandType]" "DetailTotal" => "[winlog][event_data][DetailTotal]" "DetailSequence" => "[winlog][event_data][DetailSequence]" "EngineVersion" => "[winlog][event_data][EngineVersion]" "HostId" => "[winlog][event_data][HostId]" "HostApplication" => "[winlog][event_data][HostApplication]" "HostName" => "[winlog][event_data][HostName]" "HostVersion" => "[winlog][event_data][HostVersion]" "NewEngineState" => "[winlog][event_data][NewEngineState]" "NewProviderState" => "[winlog][event_data][NewProviderState]" "PreviousEngineState" => "[winlog][event_data][PreviousEngineState]" "ProviderName" => "[winlog][event_data][ProviderName]" "PipelineId" => "[winlog][event_data][PipelineId]" "RunspaceId" => "[winlog][event_data][RunspaceId]" "SequenceNumber" => "[winlog][event_data][SequenceNumber]" "ScriptName" => "[winlog][event_data][ScriptName]" "ShellID" => "[winlog][event_data][ShellID]" "ScriptBlockId" => "[winlog][event_data][ScriptBlockId]" "ScriptBlockText" => "[winlog][event_data][ScriptBlockText]" "User" => "[winlog][event_data][User]" } } # nxlog to ECS}output { if [@metadata][pipeline] { elasticsearch { pipeline => "%{[@metadata][pipeline]}" hosts => ["ES-IP:9200"] manage_template => false ilm_rollover_alias => "winlogbeat" ilm_pattern => "{now/M{YYYY.MM}}-000001" ilm_policy => "all-hot-50" user => "****" password => "*****" timeout => 300 } } else { elasticsearch { pipeline => "winlogbeat-8.0.1-routing" hosts => ["ES-IP:9200"] manage_template => false ilm_rollover_alias => "winlogbeat" ilm_pattern => "{now/M{YYYY.MM}}-000001" ilm_policy => "all-hot-50" user => "****" password => "*****" timeout => 300 } }}
通过下面的解决后,大部分日志曾经能够跟 winlogbeat采集的日志统一