최근 대부분 OS는 root로의 직접 로그인을 차단되어 있습니다.

해당 root 로그인 알람은 su 명령어를 통한 root  로그인에 대한 알람 설정입니다.

 

OS 로그인 알람 설정은 유지하며, Elastalert 룰만 추가하면 됩니다.

OS 로그인 알람 설정은 아래 페이지를 참고해 주세요.

https://dirt-spoon.tistory.com/84

 

elastalert 룰

name: server_root_login

type: any

index: logstash-tmpsyslogsvr*

filter:
- query:
    query_string:
      query: "USER:root AND COMMAND:/bin/su"

doc_type: _doc

alert:
- "slack"

slack:
# 슬랙 웹훅 주소
slack_webhook_url: "https://hooks.slack.com/services/--------------------------------------"
# 슬랙 채널에 메시지 전달할 이름
slack_username_override: "ElastAlert-Bot"
# 슬랙 메시지를 보낼 채널
slack_channel_override: "#security_alert"
# 슬랙 메시지에 타이틀 지정
# 지정하지 않을 경우 rule의 절대 경로 명이 찍힘: /opt/elastalert/ruls/ap_login_fail.yaml
slack_title: TMPLOGSVR_ROOT_LOGIN
# 슬랙 메시지 색
slack_msg_color: "good"


alert_text: "TMPLOGSVR_ROOT_LOGIN: 접속시간: {0} / 접속계정: {1}"
alert_text_type: "alert_text_only"

 

알람 확인

'기술 노트 > elastalert' 카테고리의 다른 글

OS 로그인 알람  (0) 2023.04.10
elastalert 웹 관리 방식 사용 시  (0) 2023.03.17
kibana에서 elastalert 룰 설정하기  (0) 2023.03.17
kibana에서 elastalert 사용하기  (0) 2023.03.17
elastalert 실행하기  (0) 2023.03.17

해당 설정은 CentOS 8 기준으로 작성하였습니다.

각 OS 에서 보안 로그 파일을 대상으로 알람을 설정하면 OS 로그인 모니터링이 가능합니다.

 

알람 설정 환경

  • ELK 운영 환경
  • 대상 로그 파일: /var/log/secure

 

logstash.conf 파일 설정

input {
  file {
    path => "/var/log/secure"
    start_position => "beginning"
    tags => ["os_tmpsyslogsvr"]
  }
}

filter {
  if "os_tmpsyslogsvr" in [tags] {
    grok {
      patterns_dir => ["/etc/logstash/pattern.d"]
        match => {
          "message" => [
            "%{SYSLOGBASE}\s%{GREEDYDATA:auth_module}\(%{GREEDYDATA:auth_module_used}\)\:\s%{GREEDYDATA:cause} for user %{USER:user}",
            "%{SYSLOGBASE}\s%{GREEDYDATA:cause} for %{USER:user} from %{IP:ip} port %{NUMBER:port} %{GREEDYDATA:protocol}",
            "%{SYSLOGBASE}\s%{GREEDYDATA:auth_module}\(%{GREEDYDATA:auth_module_used}\)\:\s%{GREEDYDATA:cause} by %{USER:user}\(uid=%{NUMBER:uid}\)",
            "%{SYSLOGBASE}\s%{GREEDYDATA:auth_module}\(%{GREEDYDATA:auth_module_used}\)\:\s%{GREEDYDATA:cause}\:\s%{GREEDYDATA:result}",
            "%{SYSLOGBASE}\s%{USER:user}\s\:\s%{GREEDYDATA:sub_message}",
            "%{SYSLOGBASE}\s%{GREEDYDATA:sub_message}"
          ]
        }
    }
    kv {
      source => "sub_message"
      field_split => " ; "
      value_split => "="
    }
    mutate { remove_field => [ "message", "sub_message" ] }

  }
}

output {
  if "os_tmpsyslogsvr" in [tags] {
    elasticsearch {
      hosts => "http://192.168.0.17:9200"
      index => "logstash-tmpsyslogsvr-index-%{+YYYY.MM.dd}"
    }
  }
}

 

elastalert 룰

name: server_login_success

type: any

index: logstash-tmpsyslogsvr*

filter:
- query:
    query_string:
      query: protocol:"ssh2" AND cause:"Accepted password"

doc_type: _doc

alert:
- "slack"

slack:
# 슬랙 웹훅 주소
slack_webhook_url: "https://hooks.slack.com/services/--------------------------------"
# 슬랙 채널에 메시지 전달할 이름
slack_username_override: "ElastAlert-Bot"
# 슬랙 메시지를 보낼 채널
slack_channel_override: "#security_alert"
# 슬랙 메시지에 타이틀 지정
# 지정하지 않을 경우 rule의 절대 경로 명이 찍힘: /opt/elastalert/ruls/ap_login_fail.yaml
slack_title: SERVER_LOGIN_SUCCESS
# 슬랙 메시지 색
slack_msg_color: "good"


alert_text: "TMPLOGSVR_SSH_LOGIN: 접속시간: {0} / 접속계정: {1} / 접속자IP: {2}"
alert_text_type: "alert_text_only"

 

알람 확인

logstash의 conf 설정 중 kv의 field_split 사용할 경우 공백 부분을 조심하셔야 합니다.

위 COMMAND 필드는 공백이 없지만, 아래의 COMMAND 필드는 공백이 있어서, 2~3시간 고생했네요.

elasticsearch에 로그는 확인이 되는데, elastealert에서는 왜 안되는지....

'기술 노트 > elastalert' 카테고리의 다른 글

root 로그인 알람 설정  (0) 2023.04.10
elastalert 웹 관리 방식 사용 시  (0) 2023.03.17
kibana에서 elastalert 룰 설정하기  (0) 2023.03.17
kibana에서 elastalert 사용하기  (0) 2023.03.17
elastalert 실행하기  (0) 2023.03.17

elastalert 웹 방식으로 설치 하신 후에는 반드시 아래 명령어를 실행 해 주셔야 합니다.

RAW 데이터의 에러로그를 수집 못했는데, 에러 로그는 아래와 같이 출력됩니다.

No mapping found for [alert_time] in order to sort on

 

그래서 아래와 같은 방식으로 alert_time은 type이 date 로 선언을 해주어야 elasticsearch에서 수집되는 @timestamp를 인식하게 됩니다.

put elastalert_status/_mapping
{
  "properties": {
    "alert_time": {
      "type": "date"
    }
  }
}

'기술 노트 > elastalert' 카테고리의 다른 글

root 로그인 알람 설정  (0) 2023.04.10
OS 로그인 알람  (0) 2023.04.10
kibana에서 elastalert 룰 설정하기  (0) 2023.03.17
kibana에서 elastalert 사용하기  (0) 2023.03.17
elastalert 실행하기  (0) 2023.03.17

 

룰 샘플입니다.

반드시 아래의 항목들을 지켜주시는게 좋습니다.

name, type, index, filter, doc_type

기본 항목들이 없으면 에러가 발생하네요.

cli 방식으로 할때는 name과 doc_type이 없어도 작동이 되었는데....

#name
name: ap_login_success

# 로그는 탐지하는 타입
type: any

# logstash에서 설정한 log의 index 값
index: "logstash-ap*"

# 필터 grok 패턴 지정한 필드의 값에 같은 값이 들어올 경우
filter:
- query_string:
    query: access_result:"successfully"

# document type
doc_type: _doc

# 알람 전송 매체 지정
alert:
- "slack"

# 알람 전송 옵션
slack:
# 슬랙 웹훅 주소
slack_webhook_url: "https://hooks.slack.com/services/---------------------------------------"
# 슬랙 채널에 메시지 전달할 이름
slack_username_override: "ElastAlert-Bot"
# 슬랙 메시지를 보낼 채널
slack_channel_override: "#security_alert"
# 슬랙 메시지에 타이틀 지정
# 지정하지 않을 경우 rule의 절대 경로 명이 찍힘: /opt/elastalert/ruls/ap_login_fail.yaml
slack_title: AP_LOGIN_SUCCESS
# 슬랙 메시지 색
slack_msg_color: "good"

# 슬랙에 전송할 메시지
# 슬랙에 전송할 메시지 중 배열 입력시 맨 아랫줄의 순서에 따라 숫자 입력
# 숫자 위치는 바뀌어도 됨
alert_text: "AP_LOGIN_SUCESS: {0} / 접속자:{1} / 접속자IP: {2}"
# 슬랙에 전송할 메시지 타입
alert_text_type: "alert_text_only"
# 슬랙에 전송할 메시지 중 탐지된 메시지에 대한 배열 입력
alert_text_args: ["ip_or_host", "user", "source_ip"]

 

룰 입력 후 저장을 누르면 아래와 같은 화면을 볼 수 있습니다.

웹페이지 상에서 룰을 생성할 경우, 서버에서도 마찬가지로 자동으로 생성됩니다.

[root@tmplogsvr rules]# pwd
/opt/elastalert/rules
[root@tmplogsvr rules]# ls -al
합계 16
drwxr-xr-x.  2 root root 4096  3월 16 18:08 .
drwxr-xr-x. 13 root root 4096  3월 16 18:09 ..
-rw-r--r--.  1 root root  574  3월 16 18:17 ap_login_fail.yaml
-rw-r--r--.  1 root root 1383  3월 16 18:17 ap_login_success.yaml
[root@tmplogsvr rules]#
[root@tmplogsvr rules]# cat ./ap_login_success.yaml
#name
name: ap_login_success

# 로그는 탐지하는 타입
type: any

# logstash에서 설정한 log의 index 값
index: "logstash-ap*"


# 필터 grok 패턴 지정한 필드의 값에 같은 값이 들어올 경우
filter:
- query_string:
    query: access_result:"successfully"

doc_type: _doc

# 알람 전송 매체 지정
alert:
- "slack"

# 알람 전송 옵션
slack:
# 슬랙 웹훅 주소
slack_webhook_url: "https://hooks.slack.com/services/---------------------------------"
# 슬랙 채널에 메시지 전달할 이름
slack_username_override: "ElastAlert-Bot"
# 슬랙 메시지를 보낼 채널
slack_channel_override: "#security_alert"
# 슬랙 메시지에 타이틀 지정
# 지정하지 않을 경우 rule의 절대 경로 명이 찍힘: /opt/elastalert/ruls/ap_login_fail.yaml
slack_title: AP_LOGIN_SUCCESS
# 슬랙 메시지 색
slack_msg_color: "good"

# 슬랙에 전송할 메시지
# 슬랙에 전송할 메시지 중 배열 입력시 맨 아랫줄의 순서에 따라 숫자 입력
# 숫자 위치는 바뀌어도 됨
alert_text: "AP_LOGIN_SUCESS: {0} / 접속자:{1} / 접속자IP: {2}"
# 슬랙에 전송할 메시지 타입
alert_text_type: "alert_text_only"
# 슬랙에 전송할 메시지 중 탐지된 메시지에 대한 배열 입력
alert_text_args: ["ip_or_host", "user", "source_ip"]
[root@tmplogsvr rules]#

 

'기술 노트 > elastalert' 카테고리의 다른 글

OS 로그인 알람  (0) 2023.04.10
elastalert 웹 관리 방식 사용 시  (0) 2023.03.17
kibana에서 elastalert 사용하기  (0) 2023.03.17
elastalert 실행하기  (0) 2023.03.17
elastalert 설치하기 (간단히)  (0) 2023.03.16

아래의 게시글을 확인하여 kibana에 plugin을 설치하시면 됩니다.

단, 설치하실때에는 elastalert-plugin이 지원하는 kibana 버전을 확인하시고, 지원하는 버전으로 맞춰서 설치해야 합니다.

예) elastalertKibanaPlugin-1.6.1-8.6.2.zip 이라면 kibana 버전 8.6.2을 설치하셔야 합니다.

 

elastalert plugin 설치하기: https://dirt-spoon.tistory.com/57

 

설치는 아주아주 간단합니다.

이제 웹페이지에서 보도록 하겠습니다.

kibana에 접속을 해보시면 아래와 같이 새로운 매뉴가 있을 것입니다.

혹시나 매뉴가 보이지 않는다면, kibana를 재시작 해 주세요.

 

드디어~~ 저도 처음 웹으로 확인하게 되었습니다.

 

'기술 노트 > elastalert' 카테고리의 다른 글

elastalert 웹 관리 방식 사용 시  (0) 2023.03.17
kibana에서 elastalert 룰 설정하기  (0) 2023.03.17
elastalert 실행하기  (0) 2023.03.17
elastalert 설치하기 (간단히)  (0) 2023.03.16
elastalert plugin 설치하기  (0) 2023.03.16

kibana 웹페이지에서 elastalert을 사용하기 위해서는 실행방법이 기존과는 다릅니다.

 

bitsensor 버전의 elastalert은 기본 경로가 /opt/elastalert 입니다.

해당 위치에서 npm의 설정들을 진행하였기에 아래 화면을 따르면 됩니다.

[root@tmplogsvr elastalert]# pwd
/opt/elastalert

 

방법 1. 프로세스가 끊기지 않고 지속적으로 로그를 확인하고 싶을 때

[root@tmplogsvr elastalert]# npm start <- 이렇게 실행할 경우 프로세스가 끊기지 않고 계속적으로 로그가 보일 것입니다.

> @bitsensor/elastalert@3.0.0-beta.0 start /opt/elastalert
> sh ./scripts/start.sh

02:12:53.493Z  INFO elastalert-server: Config:  No config.dev.json file was found in /opt/elastalert/config/config.dev.json.
02:12:53.494Z  INFO elastalert-server: Config:  Proceeding to look for normal config file.
02:12:53.494Z  INFO elastalert-server: Config:  A config file was found in /opt/elastalert/config/config.json. Using that config.
02:12:53.500Z  INFO elastalert-server: Router:  Listening for GET request on /.
02:12:53.500Z  INFO elastalert-server: Router:  Listening for GET request on /status.
02:12:53.500Z  INFO elastalert-server: Router:  Listening for GET request on /status/control/:action.
02:12:53.500Z  INFO elastalert-server: Router:  Listening for GET request on /status/errors.
02:12:53.500Z  INFO elastalert-server: Router:  Listening for GET request on /rules.
02:12:53.501Z  INFO elastalert-server: Router:  Listening for GET request on /rules/:id.
02:12:53.501Z  INFO elastalert-server: Router:  Listening for POST request on /rules/:id.
02:12:53.501Z  INFO elastalert-server: Router:  Listening for DELETE request on /rules/:id.
02:12:53.501Z  INFO elastalert-server: Router:  Listening for GET request on /templates.
02:12:53.501Z  INFO elastalert-server: Router:  Listening for GET request on /templates/:id.
02:12:53.501Z  INFO elastalert-server: Router:  Listening for POST request on /templates/:id.
02:12:53.501Z  INFO elastalert-server: Router:  Listening for DELETE request on /templates/:id.
02:12:53.501Z  INFO elastalert-server: Router:  Listening for POST request on /test.
02:12:53.501Z  INFO elastalert-server: Router:  Listening for GET request on /config.
02:12:53.501Z  INFO elastalert-server: Router:  Listening for POST request on /config.
02:12:53.501Z  INFO elastalert-server: Router:  Listening for POST request on /download.
02:12:53.502Z  INFO elastalert-server: Router:  Listening for GET request on /metadata/:type.
02:12:53.502Z  INFO elastalert-server: Router:  Listening for GET request on /mapping/:index.
02:12:53.502Z  INFO elastalert-server: Router:  Listening for POST request on /search/:index.
02:12:53.504Z  INFO elastalert-server: ProcessController:  Starting ElastAlert
02:12:53.504Z  INFO elastalert-server: ProcessController:  Creating index
02:12:53.697Z  INFO elastalert-server:
    ProcessController:  Elastic Version: 8.6.2
    Reading Elastic 6 index mappings:
    Reading index mapping 'es_mappings/6/silence.json'
    Reading index mapping 'es_mappings/6/elastalert_status.json'
    Reading index mapping 'es_mappings/6/elastalert.json'
    Reading index mapping 'es_mappings/6/past_elastalert.json'
    Reading index mapping 'es_mappings/6/elastalert_error.json'
    Index elastalert_status already exists. Skipping index creation.

02:12:53.697Z  INFO elastalert-server: ProcessController:  Index create exited with code 0
02:12:53.698Z  INFO elastalert-server: ProcessController:  Starting elastalert with arguments [none]
02:12:53.701Z  INFO elastalert-server: ProcessController:  Started Elastalert (PID: 107223)
02:12:53.702Z  INFO elastalert-server: Server:  Server listening on port 3030
02:12:53.702Z  INFO elastalert-server: Server:  Websocket listening on port 3333
02:12:53.703Z  INFO elastalert-server: Server:  Server started

 

방법2: 실행 후 백그라운드로 실행하기 (터미널을 끊어도 프로세스가 살아 있습니다.)

[root@tmplogsvr elastalert]# npm start &
[1] 107293
[root@tmplogsvr elastalert]#
> @bitsensor/elastalert@3.0.0-beta.0 start /opt/elastalert
> sh ./scripts/start.sh

02:17:42.163Z  INFO elastalert-server: Config:  No config.dev.json file was found in /opt/elastalert/config/config.dev.json.
02:17:42.164Z  INFO elastalert-server: Config:  Proceeding to look for normal config file.
02:17:42.164Z  INFO elastalert-server: Config:  A config file was found in /opt/elastalert/config/config.json. Using that config.
02:17:42.170Z  INFO elastalert-server: Router:  Listening for GET request on /.
02:17:42.170Z  INFO elastalert-server: Router:  Listening for GET request on /status.
02:17:42.170Z  INFO elastalert-server: Router:  Listening for GET request on /status/control/:action.
02:17:42.170Z  INFO elastalert-server: Router:  Listening for GET request on /status/errors.
02:17:42.170Z  INFO elastalert-server: Router:  Listening for GET request on /rules.
02:17:42.171Z  INFO elastalert-server: Router:  Listening for GET request on /rules/:id.
02:17:42.171Z  INFO elastalert-server: Router:  Listening for POST request on /rules/:id.
02:17:42.172Z  INFO elastalert-server: Router:  Listening for DELETE request on /rules/:id.
02:17:42.172Z  INFO elastalert-server: Router:  Listening for GET request on /templates.
02:17:42.172Z  INFO elastalert-server: Router:  Listening for GET request on /templates/:id.
02:17:42.172Z  INFO elastalert-server: Router:  Listening for POST request on /templates/:id.
02:17:42.172Z  INFO elastalert-server: Router:  Listening for DELETE request on /templates/:id.
02:17:42.172Z  INFO elastalert-server: Router:  Listening for POST request on /test.
02:17:42.172Z  INFO elastalert-server: Router:  Listening for GET request on /config.
02:17:42.172Z  INFO elastalert-server: Router:  Listening for POST request on /config.
02:17:42.172Z  INFO elastalert-server: Router:  Listening for POST request on /download.
02:17:42.172Z  INFO elastalert-server: Router:  Listening for GET request on /metadata/:type.
02:17:42.172Z  INFO elastalert-server: Router:  Listening for GET request on /mapping/:index.
02:17:42.172Z  INFO elastalert-server: Router:  Listening for POST request on /search/:index.
02:17:42.174Z  INFO elastalert-server: ProcessController:  Starting ElastAlert
02:17:42.174Z  INFO elastalert-server: ProcessController:  Creating index
02:17:42.366Z  INFO elastalert-server:
    ProcessController:  Elastic Version: 8.6.2
    Reading Elastic 6 index mappings:
    Reading index mapping 'es_mappings/6/silence.json'
    Reading index mapping 'es_mappings/6/elastalert_status.json'
    Reading index mapping 'es_mappings/6/elastalert.json'
    Reading index mapping 'es_mappings/6/past_elastalert.json'
    Reading index mapping 'es_mappings/6/elastalert_error.json'
    Index elastalert_status already exists. Skipping index creation.

02:17:42.366Z  INFO elastalert-server: ProcessController:  Index create exited with code 0
02:17:42.367Z  INFO elastalert-server: ProcessController:  Starting elastalert with arguments [none]
02:17:42.370Z  INFO elastalert-server: ProcessController:  Started Elastalert (PID: 107325)
02:17:42.371Z  INFO elastalert-server: Server:  Server listening on port 3030
02:17:42.371Z  INFO elastalert-server: Server:  Websocket listening on port 3333
02:17:42.371Z  INFO elastalert-server: Server:  Server started

[root@tmplogsvr elastalert]#

 

실행 시킨 터미널 창을 닫은 후 아래와 같이 프로세스를 검색하시면 작동 여부를 알 수 있습니다.

[root@tmplogsvr elasticsearch]# ps -ef | grep elastalert
root      107325  107305  0 11:17 ?        00:00:00 python -m elastalert.elastalert
root      107378   79433  0 11:19 pts/2    00:00:00 grep --color=auto elastalert
[root@tmplogsvr elasticsearch]#

'기술 노트 > elastalert' 카테고리의 다른 글

kibana에서 elastalert 룰 설정하기  (0) 2023.03.17
kibana에서 elastalert 사용하기  (0) 2023.03.17
elastalert 설치하기 (간단히)  (0) 2023.03.16
elastalert plugin 설치하기  (0) 2023.03.16
elastalert rule example 2  (0) 2023.03.06

kibana에서 elastalert 구성 시 필수사항

python 3.6 (3.7, 3.8은 해보지 않아서 모르겠지만, 3.9 이상은 절대 설치 불가)

 

centos 9에서는 해당 방법 사용이 불가능 합니다.

그래서 centos 8버전으로 downgrade를 하였고, python 3.6 버전을 확인하고 설치 진행했습니다.

 

아래 URL은 참고 URL 주소입니다.

   elastalert install_1: https://github.com/Yelp/elastalert

   elastalert install_2: https://github.com/bitsensor/elastalert

   elastalert-plugin: https://github.com/karql/elastalert-kibana-plugin/releases

 

부연 설명을 하자면, kibana에서 elastalert 사용은 docker를 기준으로 만들어진 것 같습니다. (elastalert install_2 URL 참조)

서버에 일반 설치방식으로 설치하려니, 정말 많은 시도로 간신히 설치가 되었습니다.

그래서 아래 사용했던 설치한 내역으로도 실행이 제대로 안될 수가 있습니다.

댓글로라도 로그를 남겨주시면 에러를 같이 찾아보도록 하겠습니다.

 

elastalert 설치 명령어 정리

# pip3 install --upgrade pip

# pip install setuptools-rust

# yum install gcc libffi-devel python36-devel openssl-devel

# pip install elastalert

# cd /opt

# git clone https://github.com/Yelp/elastalert.git

# cd elastalert

# pip install --ignore-installed PyYAML -r requirements.txt

# cd ..

# rm -rf ./elastalert/

# git clone https://github.com/bitsensor/elastalert.git && cd elastalert

# yum install npm

# npm install bunyan

# npm install babel-register --save-dev

# npm install babel-preset-es2015 express body-parser joi object-resolve-path mkdirp ws lodash elasticsearch tar fs-extra request-promise-native request randomstring cors util babel-cli raven eslint husky istanbul mocha urllib3 register until

# python -m pip install --upgrade 'elasticsearch>=7.16,<8'

# echo \

'rules_folder: rules # 폴더명

 

run_every: # elasticsearch를 쿼리하는 빈도

  minutes: 1

 

buffer_time: # 쿼리가 실행되는 시간부터 뒤로 늘어나는 쿼리 창의 크기

  minutes: 15

   

es_host: 192.168.0.17 # elasticsearch host

 

es_port: 9200 # elasticsearch 사용 port

 

writeback_index: elastalert_status # elastalert2가 데이터를 저장할 index

 

alert_time_limit: # 실패한 경고에 대한 재시도 기간

  days: 2' > config.yaml

'기술 노트 > elastalert' 카테고리의 다른 글

kibana에서 elastalert 사용하기  (0) 2023.03.17
elastalert 실행하기  (0) 2023.03.17
elastalert plugin 설치하기  (0) 2023.03.16
elastalert rule example 2  (0) 2023.03.06
elastalert rules example 1  (0) 2023.03.06

kibana에 elastalert-plugin 설치

[root@tmplogsvr bin]# /usr/share/kibana/bin/kibana-plugin install https://github.com/Karql/elastalert-kibana-plugin/releases/download/1.6.1/elastalertKibanaPlugin-1.6.1-8.6.2.zip
[root@tmplogsvr ~]#

 

kibana.yml에 아래 내용 첨부

elastalertKibanaPlugin.serverSsl: false
elastalertKibanaPlugin.serverHost: localhost
elastalertKibanaPlugin.serverPort: 3030

 

'기술 노트 > elastalert' 카테고리의 다른 글

elastalert 실행하기  (0) 2023.03.17
elastalert 설치하기 (간단히)  (0) 2023.03.16
elastalert rule example 2  (0) 2023.03.06
elastalert rules example 1  (0) 2023.03.06
elastalert config.yaml  (0) 2023.03.06

아래 룰은 AP의 콘솔 접속 시 발송하는 메시지 룰입니다.

name: ap_login_fail

type: any

index: "logstash-ap*"

filter:
- query_string:
    query: reason:"logon failed for invalid username"

doc_type: _doc

alert:
- "slack"

slack:
slack_webhook_url: "https://hooks.slack.com/services/------------------------"
slack_username_override: "ElastAlert-Bot"
slack_channel_override: "#security_alert"
slack_title: AP_LOGIN_FAIL
slack_msg_color: "warning"

alert_text: "AP_LOGIN_FAIL: {0} / 접속자IP: {1}"
alert_text_type: "alert_text_only"
alert_text_args: ["ip_or_host", "source_ip"]

'기술 노트 > elastalert' 카테고리의 다른 글

elastalert 설치하기 (간단히)  (0) 2023.03.16
elastalert plugin 설치하기  (0) 2023.03.16
elastalert rules example 1  (0) 2023.03.06
elastalert config.yaml  (0) 2023.03.06
elastalert 실행하기 1  (0) 2023.03.06

아래 룰은 AP의 콘솔 접속 시 발송하는 메시지 룰입니다.

#name
name: ap_login_success

# 로그는 탐지하는 타입
type: any

# logstash에서 설정한 log의 index 값
index: "logstash-ap*"


# 필터 grok 패턴 지정한 필드의 값에 같은 값이 들어올 경우
filter:
- query_string:
    query: access_result:"successfully"

# 메시지 타입
doc_type: _doc

# 알람 전송 매체 지정
alert:
- "slack"

# 알람 전송 옵션
slack:
# 슬랙 웹훅 주소
slack_webhook_url: "https://hooks.slack.com/services/--------------------------------------"
# 슬랙 채널에 메시지 전달할 이름
slack_username_override: "ElastAlert-Bot"
# 슬랙 메시지를 보낼 채널
slack_channel_override: "#security_alert"
# 슬랙 메시지에 타이틀 지정
# 지정하지 않을 경우 rule의 절대 경로 명이 찍힘: /opt/elastalert/ruls/ap_login_fail.yaml
slack_title: AP_LOGIN_SUCCESS
# 슬랙 메시지 색
slack_msg_color: "good"

# 슬랙에 전송할 메시지
# 슬랙에 전송할 메시지 중 배열 입력시 맨 아랫줄의 순서에 따라 숫자 입력
# 숫자 위치는 바뀌어도 됨
alert_text: "AP_LOGIN_SUCESS: {0} / 접속자:{1} / 접속자IP: {2}"
# 슬랙에 전송할 메시지 타입
alert_text_type: "alert_text_only"
# 슬랙에 전송할 메시지 중 탐지된 메시지에 대한 배열 입력
alert_text_args: ["ip_or_host", "user", "source_ip"]

 

'기술 노트 > elastalert' 카테고리의 다른 글

elastalert plugin 설치하기  (0) 2023.03.16
elastalert rule example 2  (0) 2023.03.06
elastalert config.yaml  (0) 2023.03.06
elastalert 실행하기 1  (0) 2023.03.06
elastalert 설치 (상세히)  (4) 2023.02.21

+ Recent posts