ElasticQ – ElasticSearch realtime correlation analysis

ElasticSearch Realtime correlation analysis, Detection

 

DOWNLOAD

code sign on “Open Source Developer, JuSeong Han”

YOU LIKE IT, CLICK LIKE BUTTON 🙂

ElasticQ

 

ElasticQ를 이용하여 ElasticSearch 에서 상관분석과 실시간 알람을 쉽게 개발할 수 있습니다.

동시에 여러 개의 Query 검색이 가능하고 탐지 할 수 있습니다.

With ElasticQ you can easily develop correlation analysis and real-time alarms in Elastic Search.

You can search multiple queries at the same time, Detection

Key Features

  • 동시에 여러 질의 내용을 조건(상관분석)으로 사용할 수 있습니다. 2개의 쿼리를 하나의 조건으로 만들어 탐지하는 것이 가능합니다. 이제 키바나로 쿼리를 해보고, 필요한 조건을 여러개를 연결하여 규칙을 만들어 보세요. At the same time, multiple query contents can be used as a condition(Correlation analysis). It is possible to detect two queries as a single condition. Now, you can query the Kibana and create rules by connecting multiple conditions.
  • 탐지 조건을 갯수를 통해서 정밀한 조건을 사용할 수 있습니다. Precise conditions can be used through the number of detection conditions.
  • 실행 주기에 맞춰 실시간으로 탐지합니다. Detect in real time according to the execution cycle.
  • 실시간으로 탐지 조건을 추가하거나 수정할 수 있습니다.You can add or modify detection conditions in real time.

HOW to use

만약 ElasticSearch가 없다면 다음 글을 확인하세요. If you do not have ElasticSearch, check out the next post.

PART 1 INSTALL ELASTICSEARCH 6 CLUSTER FOR CENTRALIZED SYSLOG

ElasticQ를 실행하기 위해 필요한 옵션과 실행시 탐지 조건을 입력하는 탐지 파일로 구분됩니다.

It is divided into an option file for running ElasticQ and a detection file for entering detection conditions at runtime.

실행 옵션 (Execution options)

실행 옵션은 ElasticQ의 탐지 시 알람을 발생할 때 사용되는 SMTP 서버나 Rule 리스트 파일 위치등을 지정하는 용도로 사용됩니다.

The Execute option is used to specify the location of the SMTP server or Rule list file used when generating an alarm when ElasticQ detects it.

-syslog:<ip>

send to elasticq matched query log on syslog server.

-smtp:<ip>

send to elasticq matched query log on smtp server.

-rulefile:<path>

elasticq rule load from this file.

-sender:<Email>

This address use at email sender

-es:<httpaddress>

Query on elasticsearch server

-install

install services type.

-uninstall

uninstall services type.

 

EX1)ElasticQ -rulefile:rule.ini -sender:<Email> -es:http://192.168.0.1:9200 -syslog:172.16.253.20 -smtp:10.0.0.5

EX2)ElasticQ -rulefile:rule.ini -sender:<Email> -es:http://192.168.0.1:9200 -syslog:172.16.253.20 -smtp:10.0.0.5-install

룰 생성 규칙 (Rule generation rule)

룰은 항목은 | 으로 구분합니다. 항목안에 세부 옵션은 : 로 구분합니다.

The rule is | . The detail options within the item are separated by:.

항목 구분자(Item Separator) |

항목내 옵션 구분자(Option Separator in Item) 

(query:logon AND fail:>:1|time:15:@timestamp|index:logstash|timebase:true|same:procid),address:sysloghost,title:WHORUfile Detect,email:jshan@bluehole.net,webhook:https://~~~~

query

키바나에서 검색과 동일하게 사용하시면 됩니다. : 탐지되는 갯수의 크거나 작기를 구분함 > – 갯수로 이상을 의미 < – 갯수로 이하를 의미 : (Number) 기준이 되는 탐지 갯수

You can use the same search as Kibana. : Identify the number of detected or unknown > – Meaning above < – Meaning less : (Number) Number of detections as a reference

EX1)query:logon AND fail:>:1 –>  logon AND fail 쿼리가 1개 이상일 경우, logon AND fail If there is more than one query

EX2)query:ping AND n:>:5 –> ping AND n 쿼리가 5개 이상일 경우, ping AND n If there are more than 5 queries

time

탐지를 진행하는 시간으로 분 단위로 계산됩니다. : 레코드의 타임 기준 값으로 시간을 계산할 때 이용되는 필드를 지정합니다.

The time it takes for detection to be counted in minutes. : Specifies the field used when calculating the time by the time base value of the record.

EX1) time:5:createtime –> 5분 단위로 query 조건을 검색하고 타임 필드는 createtime, Search for a condition in 5-minute increments, and the time field is created

EX2) time:10:timestamp –> 10분 단위로 query 조건을 검색하고 타임 필드는 timestamp, Search query conditions in 10-minute increments, and the time field is timestamp

index

Elasticsearch 의 Query 조건을 검색할 인덱스명을 지정합니다.

Specifies the index name to search for Elasticsearch query conditions.

EX1) index:logstash –> logstash 와 동일한 인덱스

EX2) index:logstash-2018* –> logstash-2018로 시작하는 모든 인덱스

timebase

Elasticsearch 의 인덱스가 타임으로 생성되는지에 대한 조건을 설정합니다.

Elasticsearch의 인덱스가 타임 베이스인 경우 인덱스 명이 자동으로  -YYYY.MM.DD로 생성되어 이부분을 지원하기 위한 옵션입니다. 실시간 감시를 위해서 인덱스 명이 -YYYY.MM.DD 같이 변경되는 경우에만 사용합니다.

Sets the conditions for whether Elasticsearch’s index is generated in time.

If Elasticsearch’s index is time-based, the index name is automatically generated as -YYYY.MM.DD and is an option to support this part. This is useful if the index name changes like -YYYY.MM.DD for real-time monitoring.

EX1) index:logstash|timebase:true –> logstash-YYYY.MM.DD 의 인덱스(현재 오늘 날짜로 인식), Index of logstash-YYYY.MM.DD (currently recognized as today’s date)

EX2) index:logstash-2018*|timebase:false –> logstash-2018* 인덱스, 매 검색에 2018 전체를 검색하기 때문에 실시간 탐지에 부하가 발생 할 수 있습니다. logstash-2018* index, every search use 2018 all index, so real-time detection may be overloaded.

same

필드의 동일한 값이 탐지 조건에 필요 할 때 사용됩니다. 동일한 계정명, IP의 로그인 실패를 확인하고자 할 때 유용합니다.

The same value in the field is used when a detection condition is required. This is useful when you want to check the login failure of the same account name and IP.

EX1) same:procid –> procid 값이 동일한 레코드로 수집하여 탐지 합니다. query의 탐지 기준 값이 5 이상이라면 동일한 procid가 5개 이상일 경우가 탐지 조건이 됩니다. The procid value is collected by the same record and detected. If the detection criteria of the query is 5 or more, the detection condition is 5 or more when the same procid is used.

EX2) same:sysloghost –> sysloghost값이 동일한 레코드로 수집하여 탐지 합니다. The sysloghost value is collected and detected by the same record.

and, not

Query 조건으로 하지 못한 보다 정밀한 조건을 넣을 때 사용됩니다.

It is used when putting more precise condition that can not be done by query condition.

and는 해당 값이 포함되어야 탐지 됩니다. and is detected until the value is included.

not는 해당 값이 포함되지 않아야 탐지 됩니다.  not is detected unless it is included.

EX1)and:message=network –> message필드에에 network라는 문구가 포함되어야 탐지 레코드가 됩니다.  The message field must contain the phrase network to become a detection record.

EX2)not:programname=mail –> programname필드에 mail이라는 문구가 포함되지 않은 레코드를 탐지 합니다. Detects records that do not contain the phrase mail in the programname field.

탐지 조건 규칙 (Detection condition rule)

전체적으로 탐지 조건은 중괄호를 감싸고 콤마를 통해서 구분됩니다.

두개의 탐지 조건을 넣고자 한다면, 콤마와 중괄호 두개를 사용하면 됩니다. 탐지 조건이 모두 맞을 경우에 알람이 발생합니다.

Overall detection conditions are enclosed in braces and separated by commas.

If you want to have two detection conditions, you can use a comma and two curly braces. An alarm occurs when all detection conditions are met.

탐지 조건 1개 (1 detection condition)

(query:logon AND fail:>:1|time:15:@timestamp|index:logstash|timebase:true),address:sysloghost,title:WHORUfile Detect,email:jshan@bluehole.net,webhook:https://~~~~

탐지 조건 2개 (2 detection condition)

(query:logon AND fail:>:1|time:15:@timestamp|index:logstash|timebase:true),(query:ping AND n:>:1|time:15:@timestamp|index:logstash|timebase:true),address:sysloghost,title:WHORUfile Detect,email:jshan@bluehole.net,webhook:https://~~~~

address

IP가 동일한 것만 취급할 경우 사용됩니다. 탐지가 된 이벤트에 대한 IP를 확인하여 동일한 IP가 query 조건의 갯수 이상일 경우에만 탐지 됩니다. 두개 이상의 탐지 조건을 넣었을 때 동일한 서버에서 발생한 경우에 유용합니다.

Used only when the IP is the same. The IP for the detected event is checked and detected only if the same IP is more than the number of query conditions. This is useful if you have two or more detection conditions and you are on the same server.

title

탐지가 되었을 때 알람을 발생하는 제목입니다.

The title that triggers an alarm when it is detected.

email

탐지가 되었을 때 알람을 전송하고자 하는 메일 주소 입니다.

The e-mail address you want to send an alarm to when it is detected.

webhook

탐지가 되었을 때 알람을 전송하고자 하는 웹훅 주소 입니다. Slack, Teams와 연동하여 사용이 가능합니다.

Web hook address to send alarm when detected. Slack, Teams can be used in conjunction with.

action

(coming soon)

탐지 되었을 때  batch 파일(bat)이나 exe 파일을 실행하여 추가 조치가 가능하도록 합니다.

address 조건이 있다면, argument 값으로 전달 됩니다.(탐지 조건에 맞는 IP 값이 여러 개인 한번 실행에 하나씩 전달하여  복수 실행함)

When detected, execute batch file (bat) or exe file to enable additional action. If an address condition exists, it is passed as an argument value (multiple IP values ​​matching the detection condition are executed one at a time and executed multiple times)

 

탐지 룰 파일 A detect rule file can modify and use

2018-10-26 rule_20181026.zip

 

함께 쓰면 좋은 것

Windows Server Log Collector – who is use my system

Facebook Comments