I’m trying to set up Security Analytics on OpenSearch 2.6.0. The index that I’m creating a Detector for is populated by winlogbeat.
I have tried different rules, but currently I’m only using this simple custom one: (all other Windows rules are disabled)
selection:
winlog-event_id: 4624
winlog-event_data-TargetUserName|endswith: 'Admin'
condition: selection
I am able to trigger 2 alerts when performing a log in to a Windows machine, which is what the rule is supposed to do, but the alerts have “Error” as “Alert status”.
There are no “Findings” in the UI either.
I found these errors in the OpenSearch log which seems to occur around the same time as the alerts get visible in the UI:
[2023-03-21T13:22:34,152][ERROR][o.o.a.DocumentLevelMonitorRunner] [opensearch-node1] Failed to start Document-level-monitor Windows Admin User Logon Detector. Error: all shards failed
org.opensearch.action.search.SearchPhaseExecutionException: all shards failed
at org.opensearch.action.search.AbstractSearchAsyncAction.onPhaseFailure(AbstractSearchAsyncAction.java:663) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.action.search.AbstractSearchAsyncAction.executeNextPhase(AbstractSearchAsyncAction.java:372) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.action.search.AbstractSearchAsyncAction.onPhaseDone(AbstractSearchAsyncAction.java:698) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.action.search.AbstractSearchAsyncAction.onShardFailure(AbstractSearchAsyncAction.java:471) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.action.search.AbstractSearchAsyncAction$1.onFailure(AbstractSearchAsyncAction.java:294) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.action.search.SearchExecutionStatsCollector.onFailure(SearchExecutionStatsCollector.java:104) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.action.ActionListenerResponseHandler.handleException(ActionListenerResponseHandler.java:74) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.action.search.SearchTransportService$ConnectionCountingHandler.handleException(SearchTransportService.java:753) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.transport.TransportService$6.handleException(TransportService.java:794) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.security.transport.SecurityInterceptor$RestoringTransportResponseHandler.handleException(SecurityInterceptor.java:312) ~[?:?]
at org.opensearch.transport.TransportService$ContextRestoreResponseHandler.handleException(TransportService.java:1414) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.transport.TransportService$DirectResponseChannel.processException(TransportService.java:1528) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.transport.TransportService$DirectResponseChannel.sendResponse(TransportService.java:1502) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.transport.TaskTransportChannel.sendResponse(TaskTransportChannel.java:79) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.transport.TransportChannel.sendErrorResponse(TransportChannel.java:71) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.action.support.ChannelActionListener.onFailure(ChannelActionListener.java:70) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.action.ActionRunnable.onFailure(ActionRunnable.java:103) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:54) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.threadpool.TaskAwareRunnable.doRun(TaskAwareRunnable.java:78) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:52) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.common.util.concurrent.TimedRunnable.doRun(TimedRunnable.java:59) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:806) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:52) ~[opensearch-2.6.0.jar:2.6.0]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
at java.lang.Thread.run(Thread.java:833) ~[?:?]
Caused by: org.opensearch.index.query.QueryShardException: failed to create query: Inconsistency of field data structures across documents for field [winlog_logstash-master-winlogbeat-rollover-000001_NC5UBIcBRjuaqsfbGL2d.event_data.param1] of doc [23]. index options: expected 'DOCS_AND_FREQS_AND_POSITIONS', but it has 'NONE'.
at org.opensearch.index.query.QueryShardContext.toQuery(QueryShardContext.java:482) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.index.query.QueryShardContext.toQuery(QueryShardContext.java:465) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.search.SearchService.parseSource(SearchService.java:1229) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.search.SearchService.createContext(SearchService.java:978) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.search.SearchService.executeQueryPhase(SearchService.java:586) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.search.SearchService$2.lambda$onResponse$0(SearchService.java:559) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.action.ActionRunnable.lambda$supply$0(ActionRunnable.java:73) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.action.ActionRunnable$2.doRun(ActionRunnable.java:88) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:52) ~[opensearch-2.6.0.jar:2.6.0]
... 8 more
Caused by: java.lang.IllegalArgumentException: Inconsistency of field data structures across documents for field [winlog_logstash-master-winlogbeat-rollover-000001_NC5UBIcBRjuaqsfbGL2d.event_data.param1] of doc [23]. index options: expected 'DOCS_AND_FREQS_AND_POSITIONS', but it has 'NONE'.
at org.apache.lucene.index.IndexingChain$FieldSchema.raiseNotSame(IndexingChain.java:1344) ~[lucene-core-9.5.0.jar:9.5.0 13803aa6ea7fee91f798cfeded4296182ac43a21 - 2023-01-25 16:44:59]
at org.apache.lucene.index.IndexingChain$FieldSchema.assertSame(IndexingChain.java:1339) ~[lucene-core-9.5.0.jar:9.5.0 13803aa6ea7fee91f798cfeded4296182ac43a21 - 2023-01-25 16:44:59]
at org.apache.lucene.index.IndexingChain$FieldSchema.assertSameSchema(IndexingChain.java:1424) ~[lucene-core-9.5.0.jar:9.5.0 13803aa6ea7fee91f798cfeded4296182ac43a21 - 2023-01-25 16:44:59]
at org.apache.lucene.index.IndexingChain.processDocument(IndexingChain.java:567) ~[lucene-core-9.5.0.jar:9.5.0 13803aa6ea7fee91f798cfeded4296182ac43a21 - 2023-01-25 16:44:59]
at org.apache.lucene.index.DocumentsWriterPerThread.updateDocuments(DocumentsWriterPerThread.java:242) ~[lucene-core-9.5.0.jar:9.5.0 13803aa6ea7fee91f798cfeded4296182ac43a21 - 2023-01-25 16:44:59]
at org.apache.lucene.index.DocumentsWriter.updateDocuments(DocumentsWriter.java:432) ~[lucene-core-9.5.0.jar:9.5.0 13803aa6ea7fee91f798cfeded4296182ac43a21 - 2023-01-25 16:44:59]
at org.apache.lucene.index.IndexWriter.updateDocuments(IndexWriter.java:1532) ~[lucene-core-9.5.0.jar:9.5.0 13803aa6ea7fee91f798cfeded4296182ac43a21 - 2023-01-25 16:44:59]
at org.apache.lucene.index.IndexWriter.addDocuments(IndexWriter.java:1503) ~[lucene-core-9.5.0.jar:9.5.0 13803aa6ea7fee91f798cfeded4296182ac43a21 - 2023-01-25 16:44:59]
at org.opensearch.percolator.PercolateQueryBuilderExt.createMultiDocumentSearcher(PercolateQueryBuilderExt.java:578) ~[?:?]
at org.opensearch.percolator.PercolateQueryBuilderExt.doToQuery(PercolateQueryBuilderExt.java:536) ~[?:?]
at org.opensearch.index.query.AbstractQueryBuilder.toQuery(AbstractQueryBuilder.java:116) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.index.query.BoolQueryBuilder.addBooleanClauses(BoolQueryBuilder.java:346) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.index.query.BoolQueryBuilder.doToQuery(BoolQueryBuilder.java:329) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.index.query.AbstractQueryBuilder.toQuery(AbstractQueryBuilder.java:116) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.index.query.QueryShardContext.lambda$toQuery$3(QueryShardContext.java:466) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.index.query.QueryShardContext.toQuery(QueryShardContext.java:478) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.index.query.QueryShardContext.toQuery(QueryShardContext.java:465) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.search.SearchService.parseSource(SearchService.java:1229) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.search.SearchService.createContext(SearchService.java:978) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.search.SearchService.executeQueryPhase(SearchService.java:586) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.search.SearchService$2.lambda$onResponse$0(SearchService.java:559) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.action.ActionRunnable.lambda$supply$0(ActionRunnable.java:73) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.action.ActionRunnable$2.doRun(ActionRunnable.java:88) ~[opensearch-2.6.0.jar:2.6.0]
at org.opensearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:52) ~[opensearch-2.6.0.jar:2.6.0]
... 8 more
The param1
field mentioned in the error is not always included in the logs from winlogbeat, so I’m wondering if that triggers the issue.
param1
is included in the logstash-master-winlogbeat-rollover-000001
index though and it is also mapped in the Security Analytics Detector.
Any help would be greatly appreciated.