[Monitoring, Logging and Runtime Security] Kubernetes 클러스터에 Falco 설치 및 위협 탐지

IMKUNYOUNG·2024년 6월 28일
0

CKS

목록 보기
65/70

Kubernetes 클러스터에서 보안은 매우 중요한 요소입니다. 이번 글에서는 Kubernetes 클러스터에 Falco를 설치하고 이를 통해 위협을 탐지하고 분석하는 방법에 대해 다룰 것입니다. Falco를 설치하고 사용하기 전에, Falco가 어떻게 작동하는지에 대한 높은 수준의 개요를 먼저 살펴보겠습니다.

Falco의 작동 원리

Falco는 사용자 공간의 애플리케이션에서 Linux 커널로 들어오는 시스템 호출을 모니터링합니다. 이를 위해 Falco는 커널에 삽입되어 시스템 호출을 가로채서 분석합니다. Falco가 이를 수행하는 방법에는 두 가지가 있습니다:

  1. 커널 모듈 사용: 이는 Linux 코드 내부에 추가 코드를 삽입하는 방식으로, 매우 침입적입니다. 따라서 일부 관리형 Kubernetes 서비스 제공자는 이를 허용하지 않습니다.
  2. 확장된 Berkeley 패킷 필터(EBPF) 사용: EBPF는 덜 침입적이고 더 안전한 방식입니다. 많은 제공자가 이 방법을 선호합니다. 시스템 호출은 사용자 공간의 cystic 라이브러리에 의해 분석됩니다. 그런 다음 Falco 정책 엔진이 사전 정의된 규칙을 사용하여 이벤트를 필터링하여 의심스러운지 여부를 감지합니다.

감지된 이벤트는 CIS 로그 파일, 표준 출력, Slack 채널 경고, 이메일 경고 등 다양한 출력 채널을 통해 경고될 수 있습니다.

Falco 설치 방법

Falco를 설치하는방법에는 몇 가지가 있습니다. 먼저, Linux 운영 체제에서 정규 소프트웨어 패키지로 설치하는 방법을 살펴보겠습니다.

1. 정규 소프트웨어 패키지로 설치

이 방법을 통해 Falco를 설치하면 Falco 커널 모듈도 함께 설치됩니다. 설치 단계는 다음과 같습니다:
1. 공식 문서 참고: Falco 설치 문서에서 제공된 단계를 따릅니다.
2. 서비스 활성화 및 시작: 설치가 완료되면 Falco 서비스를 활성화하고 시작합니다.

노드에 직접 Falco 서비스로 사용하는 주요 장점 중 하나는 침해가 발생하는 경우 Falco가 Kubernetes와 격리되어 여전히 의심스러운 동작을 탐지하고 경고할 수 있다는 점입니다.

2. DaemonSet으로 설치

노드에 직접 설치하는 것이 불가능한 경우, 클러스터의 노드에서 Falco를 DaemonSet으로 실행할 수도 있습니다. 이 DaemonSet을 배포하는 가장 쉬운 방법은 헬름 차트를 사용하는 것입니다.

헬름 차트를 사용한 설치 단계

  1. 헬름 리포지터리 추가:
$ helm repo add falcosecurity https://falcosecurity.github.io/charts
  1. 헬름 차트 설치:
$ helm install falco falcosecurity/falco

NAME: falco
LAST DEPLOYED: Wed Mar 7 20:19:25 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Falco agents are spinning up on each node in your cluster. After a few
seconds, they are going to start monitoring your containers looking for
security issues.

No further action should be required.
  1. 설치 확인: 설치가 완료되면 클러스터의 모든 노드에서 Falco가 실행 중인 것을 확인할 수 있습니다.

Falco 규칙 사용

Falco가 설치되면 이제 우리는 Falco 규칙을 사용하여 이상 행동을 탐지하고 경고할 준비가 되었습니다. Falco는 다양한 사전 정의된 규칙 세트를 제공하며, 이를 통해 일반적인 보안 위협을 탐지할 수 있습니다. 필요에 따라 사용자 정의 규칙을 추가하여 특정 환경에 맞는 보안 정책을 구현할 수도 있습니다.

규칙 예제

다음은 기본 제공되는 몇 가지 규칙 예제입니다:

  • 새로운 터미널 세션 생성 감지:
- rule: Terminal shell in container
  desc: Detect terminal shell activity within a container
  condition: container and proc.name in (bash, zsh, sh)
  output: "Terminal shell activity detected in container (user=%user.name user_loginuid=%user.loginuid container_id=%container.id image=%container.image.repository)"
  priority: NOTICE
  tags: [container, shell, process]
  • 의심스러운 파일 접근 감지:
- rule: Access to /etc/shadow
  desc: Detect attempts to read the /etc/shadow file, which stores password hashes
  condition: open_read and fd.name=/etc/shadow
  output: "Attempt to read /etc/shadow file (user=%user.name user_loginuid=%user.loginuid)"
  priority: WARNING
  tags: [filesystem, file_access, user]

마무리

이번 글에서는 Kubernetes 클러스터에 Falco를 설치하고 이를 통해 위협을 탐지하는 방법에 대해 알아보았습니다. Falco는 커널 수준에서 시스템 호출을 모니터링하여 실시간으로 위협을 감지하고 경고할 수 있는 강력한 도구입니다. 이를 통해 Kubernetes 클러스터의 보안을 한층 더 강화할 수 있습니다.

0개의 댓글