Falco는 클라우드 환경에서 발생할 수 있는 보안 이슈를 탐지하고 알리는 오픈소스 보안 도구입니다. k8s 기반 환경에서 Falco를 사용하여 시스템에서 발생하는 Event를 모니터링 하고, Event 발생 시 조치를 취할 수 있습니다.
1.Falco - docker container로 실행
[참조]
https://falco.org/blog/intro-k8s-security-monitoring/
https://falco.org/docs/getting-started/running/#docker-privileged
https://github.com/falcosecurity/falco/issues/2469
l 커널 모듈과 함께 falco latest를 실행
docker pull falcosecurity/falco:latest
docker run -i -t \
--privileged \
-v /var/run/docker.sock:/host/var/run/docker.sock \
-v /dev:/host/dev \
-v /proc:/host/proc:ro \
-v /boot:/host/boot:ro \
-v /lib/modules:/host/lib/modules:ro \
-v /usr:/host/usr:ro \
-v /etc:/host/etc:ro \
falcosecurity/falco:latest
host의 특정 directory와 volume을 설정해서 호스트에서도 falco를 사용 가능하게 만듭니다.
l
작동 확인
kevin@k8s-master:~$ docker ps -a
kevin@k8s-master:~$ sudo falco
falco를 host에서 실행시킵니다.
kevin@k8s-master:~$ docker exec -it f3daf8edc49e bash // falco container로 들어간다
컨테이너로 들어가는 순간 작동 시켜 뒀던 falco에 의해서 알림을 받을 수 있습니다.
2.falco의 기본적인 Rule 확인
kevin@k8s-master:~$ cd /etc/falco
kevin@k8s-master:/etc/falco$ ls
aws_cloudtrail_rules.yaml falco_rules.yaml k8s_audit_rules.yaml
falco_rules.local.yaml falco.yaml rules.d
기본적인 falco의 룰을 다음의 경로에서 확인 가능합니다.
kevin@k8s-master:/etc/falco$ vi falco_rules.yaml
rule의 내용을 확인해 보면 다음과 같은 민감한 mount경로에 대한 rule들이 있습니다.
3.테스트 sensitive path volume mount container 실행 및 falco 로그 확인
민감한 경로를 -v 옵션으로 볼륨 마운트 하여 falco의 동작을 확인해 봅니다.
kevin@k8s-master:~$ docker run --name pyweb -v /proc/:/proc -d python:3.8-alpine python -m http.server
5069954d50e3f3a80d
38c781c7bbf16cc3b707ef56792ec36c6def3ade2b03d3
위 명령어를 통해서 sensitive directory인 /proc이 mount 됨에 따라서 다음과 같은 메시지를 출력합니다.
4. CKS - Example
Using the runtime detection tool "Falco", Analyse the container behavior for at least 20 seconds, using filters that detect newly spawning and executing processes in a single container of Nginx.
(A). store the incident file art /opt/falco-incident.txt, containing the detected incidents. one per line, in the format
다음과 같이 문제가 출제된다. 본인의 k8s 클러스터에서 다음과 같이 falco를 사용해서 연습해보자
'Kubernetes (k8s)' 카테고리의 다른 글
[k8s] Test Cilium Hubble (1) | 2023.06.12 |
---|---|
[k8s] migrate calico to cilium (0) | 2023.06.12 |
[k8s] Flannel+Calico에서 Cilium으로 CNI Live Migration을 수행하는 방법 (1) | 2023.06.07 |
[k8s] k8sgpt -- 쿠버네티스와 ChatGPT? (1) | 2023.06.01 |
[k8s] Deploy a Django application on kubernetes & HPA test (0) | 2023.05.24 |
댓글