Skip to content

minority opinions

Menu
  • Home
  • 꿀팁정리 & 자기계발
  • 기술 정보 & 테크 소식
  • 이슈 뉴스 정리
  • 주식 경제
  • Tags
Menu

elasticsearch 활용 사례 보안 위협 탐지

Posted on 6월 17, 20187월 2, 2023 by Daniel J.

머신 러닝 및 Elasticsearch를 통한 보안 분석: Deep Dive

ELK 활용 사례 / 엘라스틱서치 활용사례

전체 서비스 평일 평균 엘라스틱서치 클러스터로 쌓이는 전체 보안 이벤트 로그는 아래와 같은 상황이다 날짜별 Document 수는 3억2천~3억4천건 정도… 가끔 불특정 다수 해외 IP에서 지속적으로 스캔성 공격 시도를 할때 늘어나는 경우도 있다.

사람이 일일이 이렇게 방대한 로그를 다 들여다보기란 바닷가 백사장에서 바늘 찾기다. 어떻게 하면 좀더 효율적으로 보안 위협 로그를 선별 할수 있을까?

현재 구성은 IDC 전체 구간 각 서비스별 보안장비 -> arcsight -> ELK 스택(elasticsearch) 이다. 요약하자면, 모든 보안 이벤트 로그를 엘라스틱서치로 받고 있다. 여유가 있다면 xpack 을 유료로 구매하여 Watcher (알림 통보)를 사용하면 된다.

방대한 보안 이벤트중 오픈 소스 “elastalert” 를 사용하여 보안 위협에 대하여 자동으로 알려주 elasticsearch 활용 사례에 대하여 포스팅한다. elastalert 설치 과정은 생략… type에 대한 설명도 생략…. 인터넷 서치하면 많이 나온다.


알려진 C&C 서버로의 통신 탐지

– type 은 blacklist

– blacklist 파일 내용과 매칭되면 알람을 통보해준다.

– c2-list.txt 내용은 아래와 같이 IP를 적어주면된다.

name: “C2 서버 통신 탐지”


type: blacklist


use_local_time: false
use_strftime_index: true
index: xxxx-%Y.%m.%d


blacklist:
  – “!file /root/…/elastalert/list/c2-list.txt”




# 특정 source IP 및 특정 목적지 Port 는 제외 


filter:
– query:
    query_string:
      query: “NOT sourceAddress:(59.x.x.x OR 1.x.x.x OR 10.20.x.x) AND NOT destinationPort:(25 OR 443 OR 3389)”


compare_key: “destinationAddress”


alert_text: “Match Count: {0} \n{1} {2} {3} {4} {5} {6} {7} {8} {9}”
alert_text_type: “alert_text_only”
alert_text_args: [“num_matches”, “@timestamp”, “deviceHostName”, “deviceAction”, “source.country_code2”, “sourceAddress”, “sourcePort”, “destination.country_code2”, “destinationAddress”, “destinationPort”]


# 아래는 알림에 포함하고 싶은 field만 정의
#include: [“deviceHostName”, “deviceAction”, “source.country_code2”, “sourceAddress”, “sourcePort”, “destination.country_code2”, “destinationAddress”, “destinationPort”]


alert:
– slack
– email


slack:
slack_webhook_url: “https://hooks.slack.com/services/T9YJY3HV0/BBBH341PT/…………………………………………….”


email:
  – “user1@xxxxxxxx.com”
  – “user2@xxxxxxxx.com”

탐지 Notification

slack 

email

스캔성 공격 탐지 IP

– type 은 frequency

– 조건은 1분에 1000건 이상 해외 IP중에 accept 된 source IP 탐지후 알람

name: “1분 동안 1000회 이상 접속 Source IP”


type: frequency


num_events: 1000


timeframe:
  minutes: 1


use_strftime_index: true
index: xxxx-%Y.%m.%d


# 해외 IP중 accept 된것만 그리고 icmp는 제외


filter:
– query:
    query_string:
      query: “NOT source.country_code2:KR AND NOT deviceAction:(deny OR drop OR Block) AND _exists_:source.country_code2 AND NOT destinationPort:2048”


top_count_keys:
– sourceAddress


#top_count_number: 2


realert:
  minutes: 5


query_key: “sourceAddress”


################ Alert #################
alert_text: “Match Count: {0} \n{1} {2} {3} {4} {5} {6} {7} {8} {9}”


alert_text_type: “alert_text_only”
alert_text_args: [“num_matches”, “@timestamp”, “deviceHostName”, “deviceAction”, “source.country_code2”, “sourceAddress”, “sourcePort”, “destination.country_code2”, “destinationAddress”, “destinationPort”]


alert:
– slack
– email


slack:
slack_webhook_url: “https://hooks.slack.com/services/T9YJY3HV0/BBBH341PT………………………………….”


email:
  – “example01@mail.com”
  – “example02@mail.com”

탐지 알람 화면

slack

email

보안 장비 장애 알람 (특정 이벤트 발생시)

– type은  frequency  (다른 type도 가능)

– 조건 특정 필드에 critical 이라고 매칭 되면 알람 통보

name: “보안장비 이슈 발생”


type: frequency


use_strftime_index: true
index: xxxx-%Y.%m.%d


num_events: 1


timeframe:
  minutes: 2


#  critical 문자열이 매칭되면 알람 통보 


filter:
– query:
    query_string:
      query: “(level:critical OR pri:critical) AND NOT deviceAction:update”


alert_text: “Match Count: {0} \n{1} {2} {3} {4} {5} {6} {7}”
alert_text_type: “alert_text_only”
alert_text_args: [“num_matches”, “@timestamp”, “deviceHostName”, “deviceAction”, “pri”, “level”, “hbdn_reason”, “reason”]


alert:
– slack
– email


slack:
slack_webhook_url: “https://hooks.slack.com/services/T9YJY3HV0/BBBH34…………………………………………………..”


email:
  – “example1@mail.com”
  – “example2@mail.com”
  – “example3@mail.com”

탐지 알람 화면

slack

email

elastalert  시작은 각 OS 별로 service에 등록하여 실행하는 방법도 있지만

각 rule별로 백그라운드로 실행하면 여러가지 장점이 있다.

예: c2서버 통신 접속 탐지 시작 스크립트

cat elastalert-c2

#/bin/bash

DIR=”/root/…/elastalert”

 NAMEs=”c2″

 CONFs=”$NAMEs.yaml”

 RULEs=”$NAMEs.rule.yaml”

 LOGs=”$NAMEs.log”

 nohup /usr/local/bin/elastalert –verbose –start NOW –config $DIR/etc/$CONFs –rule $DIR/rules/$RULEs > $DIR/log/$LOGs 2>&1 &

 sleep 2

 ps aux | grep $NAMEs.rule.yaml | grep -v “grep”

elastalert 프로세스가 아래와 같이 실행된다.

이와 같이 실시간 발생되는 보안 위협에 대하여  elastalert 을  활용하여 알람을 자동화 한다면 

여러가지 측면에서 업무 효율성과 실용성을 높일수 있다. 하지만 결국 정.오탐에 대한 판단은 사람이 해야한다. AI, 머신러닝, 인텔리전스 등 요즘 보안 업계에서도 핫 트렌드다. 하지만 결국 판단과 결정은 사람이 해야한다.

위와 같은 기술을 접목시킨 보안 장비를 여러번 POC, BMT 해 보았으나, 개인적으로 대부분 마음에 들지 않는다 기술이 발전하면 어느정도 편해지고 사람이 하는 일을 덜순 있지만 특히나 보안 이벤트 로그는 너무나도 방대하고 다양하고 벤더(장비) 별로 모두 틀리기 때문에 AI,머신러닝을 도입한다해도 완벽하게 100% 보안 위협을 탐지 한다는건 어불성설이다. 당연히 100%는 없다. 

신중히 선택해서 적재적소에 잘 활용한다면 없는것 보다는 있는게 낫다고 본다. 어느 정도 사람이 할일을 덜어 준다는것은 부정할수없다. 하지만, 결국 사람이 판단하고 고민하고 결정해야 하는 일이기에 해킹 피해를 최소화 하고 신속한 대응을 위해서는 보안 장비에 의존하기 보다는 보안 관리자의 거시적 관점에서의 분석 역량과 전체를 바라볼수 있는 통찰력을 기르는게 더 중요하다고 생각한다. 

ElasticSearch 활용 장점 및 기능 사례 정리

이 글 공유하기:

  • 페이스북에 공유하려면 클릭하세요. (새 창에서 열림) Facebook
  • 클릭하여 X에서 공유 (새 창에서 열림) X
  • 인쇄하기 (새 창에서 열림) 인쇄
  • 클릭하여 친구에게 이메일로 링크 보내기 (새 창에서 열림) 전자우편
  • Telegram에 공유하려면 클릭하세요. (새 창에서 열림) Telegram
  • WhatsApp에 공유하려면 클릭하세요. (새 창에서 열림) WhatsApp

이것이 좋아요:

좋아하기 가져오는 중...

관련

답글 남기기 응답 취소

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Category

  • Article (66)
  • Uncategorized (178)
  • 게임 소식 (13)
  • 기술 정보 & 테크 소식 (260)
  • 꿀팁정리 & 자기계발 (317)
  • 블로그 (26)
  • 사건 사고 (64)
  • 역사 (35)
  • 영화 & 드라마 & 애니메이션 (27)
  • 이슈 뉴스 정리 (207)
  • 정치 인물 사회 (122)
  • 주식 경제 (119)

Recent Posts

  • 위고비(Wegovy) 효능과 가격(1펜) 정리

    위고비(Wegovy) 효능과 가격(1펜) 정리

    2월 16, 2025
  • 도메인 URL 주소 단축하는 사이트 모음

    도메인 URL 주소 단축하는 사이트 모음

    1월 30, 2025
  • 5년전 정혜수 MBC 기상캐스터가 해고당하면서 올린 글

    5년전 정혜수 MBC 기상캐스터가 해고당하면서 올린 글

    1월 28, 2025
  • MBC 기상캐스터 오요안나 자살과 집단 괴롭힘 가해자

    MBC 기상캐스터 오요안나 자살과 집단 괴롭힘 가해자

    1월 27, 2025
  • 홍장원 전 국정원 1차장 좌파이력 정리

    홍장원 전 국정원 1차장 좌파이력 정리

    1월 22, 2025

Popular Posts

©2025 minority opinions | Design: Newspaperly WordPress Theme
%d