티스토리 뷰

반응형

쿠버네티스 실습: 실시간 위협 탐지와 보안 이상 대응 자동화 (Falco + Loki + Prometheus + Grafana + SOAR Pipeline)

앞선 글에서는 서비스 간 권한 인증(JWT, SPIFFE, OPA, mTLS) 을 통해
모든 마이크로서비스 요청이 **“누가 무엇을 하는가”**를 증명하고 검증받는 Zero Trust 기반 보안 구조를 완성했습니다.
이제 마지막 단계로, 운영 환경에서 보안 이상 탐지(Threat Detection)자동 대응(SOAR: Security Orchestration, Automation and Response) 시스템을 구축합니다.

이번 실습은 실시간으로 침입이나 이상 행위를 탐지하고 자동으로 대응하는 보안 파이프라인을 완성하는 데 초점을 맞춥니다.


1) 목표 아키텍처

[쿠버네티스 클러스터]
   │
   ├── Falco (런타임 위협 탐지)
   ├── Loki (로그 집계 및 저장)
   ├── Prometheus (지표 수집)
   ├── Grafana (시각화)
   └── Falco Sidekick → Webhook → Slack / Argo Workflow / Incident Response

핵심 구성 요소

구성요소 역할

Falco 시스템 호출(Syscall) 기반 실시간 침입 탐지
Loki Falco 및 애플리케이션 로그 저장
Prometheus Falco 이벤트 메트릭 수집
Grafana 실시간 대시보드 및 알람 설정
SOAR Pipeline (Argo Workflow or n8n) 자동 격리·차단·복원 등 대응 수행

2) Falco 설치 (Sysdig OSS Runtime Security Engine)

Falco는 커널 수준의 Syscall을 감시해 비정상 행위를 탐지합니다.

helm repo add falcosecurity https://falcosecurity.github.io/charts
helm repo update
helm install falco falcosecurity/falco -n falco --create-namespace

설치 확인:

kubectl get pods -n falco

결과:

NAME           READY   STATUS    AGE
falco-xxxxxx   1/1     Running   1m

3) Falco 기본 탐지 규칙

반응형

/etc/falco/falco_rules.yaml (Pod 내부 또는 ConfigMap)

예시:

- rule: Terminal shell in container
  desc: Detect interactive shell executed inside a container
  condition: >
    spawned_process and container and shell_procs and
    not user_known_shell_activity
  output: >
    Shell spawned in container (user=%user.name container=%container.id)
  priority: WARNING
  tags: [container, shell, mitre_execution]

즉, 누군가 Pod 내부에서 bash를 실행하거나 쉘을 열면 즉시 경고를 발생시킵니다.


4) Falco Sidekick으로 이벤트 전달

Falco는 falco-event를 Sidekick에 전달할 수 있습니다.
Sidekick은 이를 Slack, Webhook, Argo Workflow 등으로 중계합니다.

helm install falcosidekick falcosecurity/falcosidekick \
  --set webserver.enabled=true \
  --set config.slack.webhookurl=https://hooks.slack.com/services/XXXX

테스트:

kubectl exec -it <pod> -- bash

→ Slack 메시지:

[WARNING] Falco Alert: Shell spawned in container (user=root, pod=nestjs-5c89d...)

5) Loki로 Falco 로그 수집

Falco 로그를 Loki로 전송하여 검색 및 시각화를 가능하게 합니다.

values.yaml (Falco Helm)

falco:
  json_output: true
  json_include_output_property: true
  log_output: stdout

Loki 설치:

helm repo add grafana https://grafana.github.io/helm-charts
helm install loki grafana/loki-stack --set promtail.enabled=true -n monitoring --create-namespace

이후 Grafana에서 Loki를 데이터 소스로 추가 → “Falco Alerts” 대시보드 구성.


6) Prometheus와 Falco 메트릭 통합

Falco는 Prometheus 형식의 메트릭을 제공합니다.

helm upgrade falco falcosecurity/falco \
  --set falco.metrics.enabled=true \
  --set falco.metrics.output_type=prometheus

메트릭 확인:

kubectl port-forward svc/falco 8765:8765 -n falco
curl localhost:8765/metrics

→ falco_events_total 등의 지표가 수집됩니다.


7) Grafana로 실시간 보안 대시보드 구성

추천 대시보드:

  • Falco Event Trend (이상행위 발생 횟수)
  • Top Affected Namespaces
  • Event Type by Severity
  • Syscall Distribution (e.g., open, execve, chmod 등)

대시보드 예시 쿼리:

sum by (rule) (rate(falco_events_total[5m]))

8) 자동 대응(SOAR) 파이프라인 구성

Falco Sidekick → Webhook → Argo Workflow / n8n / SlackBot을 활용합니다.

예시: Falco 이벤트 발생 시 Pod 자동 격리

falco-response.yaml

apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  name: falco-auto-response
spec:
  entrypoint: isolate
  templates:
  - name: isolate
    steps:
    - - name: quarantine
        template: quarantine
  - name: quarantine
    container:
      image: bitnami/kubectl
      command: ["/bin/sh", "-c"]
      args:
      - >
        echo "Isolating pod {{workflow.parameters.pod_name}}...";
        kubectl label pod {{workflow.parameters.pod_name}} quarantine=true --overwrite;
        kubectl annotate pod {{workflow.parameters.pod_name}} action=isolated --overwrite;

Webhook 설정:

falcosidekick:
  config:
    webhook:
      address: "http://argo-workflow-server:2746/api/v1/workflows/falco-auto-response"

→ 누군가 컨테이너 내부 쉘을 열면 자동으로 해당 Pod가 격리(Quarantine) 됩니다.


9) SIEM/보안 로그 통합

Falco + Loki + Prometheus 로그를 ElasticSearch, Splunk, Grafana Cloud 등 외부 SIEM에 전송하면
조직 보안팀이 모든 이벤트를 통합 분석할 수 있습니다.

output:
  - type: loki
    url: http://loki.monitoring.svc:3100/loki/api/v1/push
  - type: syslog
    host: siem.company.net
    port: 514

10) 정리

  • Falco: 실시간 시스템 호출 감시로 컨테이너 내부 이상행위 탐지
  • Loki + Grafana: 로그 기반 시각화 및 알람
  • Prometheus: 보안 이벤트 메트릭 수집
  • Falco Sidekick + Argo Workflow: 자동 대응(SOAR) 파이프라인 완성
  • Vault + OPA + Istio 와 결합 시, 탐지 → 격리 → 복원 → 재배포까지 자동화된 완전한 Self-Healing 보안 시스템 구축

다음 글에서는 이 모든 인프라를 기반으로
“운영 자동화 + AI 기반 이상 탐지(Anomaly Detection)” 기능을 추가해
실시간으로 학습하고 예측하는 AI Ops 클러스터를 구축하겠습니다.


 

쿠버네티스,Falco,Loki,Prometheus,Grafana,SOAR,보안자동화,실시간탐지,DevSecOps,K8s실습

 

 

✅ 참고할 최신 자료

  • Falco 공식 소개: “실시간으로 커널 이벤트 기반으로 비정상 동작을 탐지”한다는 설명이 공식 문서에 나와 있습니다. (Falco)
  • Falco와 Loki/Prometheus 통합에 대한 설명: Falco → Falcosidekick → Loki/Prometheus 구조 등이 설명되어 있습니다. (Medium)
  • Loki 설치 및 로그 수집 에이전트인 Promtail 설명도 포함되어 있으며, 로그 스택 구축 맥락에서 참고 가능합니다. (Grafana Labs)

⚠️ 보완/강화 제안

  • Falco 규칙 작성/관리: 기본 예시로 “컨테이너 내부 쉘 실행 탐지”를 든 것은 좋습니다. 다만 운영 환경에서는 “파일 권한 변경”, “외부 네트워크 연결”, “루트 권한 escalation” 등 다양한 규칙이 추가로 필요하다는 설명을 곁들이면 더 좋습니다.
  • SOAR(자동 대응) 파이프라인: Webhook → 자동 격리 → 알림 흐름을 예시로 든 점도 좋지만, “실패 시 수동 대체 경로” 혹은 “가짜 경보(false positive) 필터링” 등의 운영 현실적인 고려사항도 약간 넣으면 독자가 대비하기 좋습니다.
  • 로그·메트릭 통합 관점: 단순히 이벤트 수집만이 아니라 “이상탐지 트렌드”, “이벤트 패턴 변화”를 모니터링해야 한다는 것을 강조하면 더 완성도 높습니다.
  • 정책/규정 대응: 탐지와 대응 외에도 “감사(audit) 로그 저장”, “보안 이벤트 히스토리 보존” 같은 항목이 실제 운영에서는 매우 중요하므로 언급하면 좋습니다.

 

※ 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
글 보관함
반응형