카테고리 없음

[Linux] Graylog 슬랙 웹훅 설정

tech-record 2026. 7. 27. 20:52

raylog를 운영하다 보면 “로그는 쌓이는데, 언제 이상 징후를 잡아내지?”라는 고민을 한 번쯤 하게 됩니다.
이번 글에서는 VPN 로그인 실패(브루트포스 공격) 탐지를 기준으로, Graylog에서 Slack으로 실시간 알람을 보내는 전체 과정을 처음부터 끝까지 정리합니다.

이 가이드는 한 번만 제대로 만들어두면, 이후에는 검색어와 조건만 바꿔 다양한 보안 알람으로 확장할 수 있습니다.

 

○ 전체 흐름 한눈에 보기

  1. Event Definition 생성
  2. 탐지 조건(Filter & Aggregation) 설정
  3. Slack에 전달할 필드 가공
  4. 알람 메시지 및 발송 정책 구성

경로:
Graylog → Alerts → Event Definitions → Create Event Definition

 

경로:
Graylog → Alerts → Event Definitions → Create Event Definition


📍 1단계: Event Details (기본 정보 설정)

  • Title: [경고] VPN 로그인 실패 임계치 초과 (브루트포스)
  • Description: 1시간 내 동일 IP/계정 5회 이상 로그인 실패 시 탐지 (선택)

설정 후 Next 클릭


📍 2단계: Condition (탐지 조건 설정) ⭐ 핵심

“누가, 언제, 어떤 기준으로 공격으로 판단할 것인가”를 정의하는 단계입니다.

  • Condition Type: Filter & Aggregation
  • Search Query:
    act:"Failed Log In"
  • Search within the last: 1 hours
  • Execute search every: 1 minutes
  • Create Events 조건:
    Aggregation of results reaches a threshold
  • Group by Fields:
    src, src_country, duser
    (공격 IP + 국가 + 계정 기준으로 묶음)
  • Condition:
    count() ≥ 5

즉,
같은 IP/국가/계정 조합에서 1시간 동안 5번 이상 실패하면 알람 발생

설정 후 Next


📍 3단계: Fields (Slack 전송용 변수 가공)

Slack 메시지에서 보기 좋게 출력하기 위해 필드를 가공합니다.
모두 Set Value From: Template 방식 사용

  • attacker_ip → ${source.src}
  • attacker_country → ${source.src_country}
  • target_user → ${source.duser}

설정 후 Next


📍 4단계: Notifications (Slack 알람 설정)

알람 품질을 좌우하는 중요한 단계입니다.

✔ Grace Period (알람 폭탄 방지)

  • 60 minutes 권장
    → 동일 공격에 대해 반복 알림 차단

✔ Message Backlog (상세 로그 포함)

  • 체크 + 10 입력
    → 최근 시도 로그를 함께 전송

✔ Slack 메시지 템플릿

아래 내용을 그대로 사용하면 실무에서 바로 활용 가능합니다.

text
 
🚨 *[보안 경고] VPN 로그인 실패 임계치 초과 탐지* 🚨
${event.message}

🛑 *공격자 IP:* ${event.fields.attacker_ip}
🌍 *공격자 국가:* ${event.fields.attacker_country}
👤 *타겟 계정명:* ${event.fields.target_user}
🕒 *탐지 구간:* ${event.timerange_start} ~ ${event.timerange_end}

🔥 *최근 로그인 실패 시도 내역:*
${if backlog}
${foreach backlog message}
• [${message.timestamp}] 타겟 계정: ${message.fields.duser} / 출발지: ${message.fields.src}
${end}
${else}
상세 로그를 불러오지 못했습니다.
${end}

📍 5단계: Summary (최종 확인)

설정 내용을 최종 검토 후
Done 버튼 클릭으로 저장 완료


🔄 활용 팁 (실무 응용)

이 구조를 그대로 유지한 채 아래만 바꾸면 다양한 보안 알람으로 확장 가능합니다.

  • 포트 스캔 탐지 → 검색어 + 포트 필드 기준 변경
  • 트래픽 급증 → bytes, packets 기반 threshold 설정
  • 계정 탈취 시도 → 로그인 성공/실패 패턴 조합

핵심은 단 하나입니다.
“Aggregation + Grouping + Threshold” 구조를 이해하는 것