전체보기

Kubernetes

Kubernetes 공격 표면 최소화(Reduce Attack Surface)

1. 개념 K8s Node와 Host OS의 Security Hardening을 통해 공격 표면을 최소화할 수 있음 Host OS에 대한 Hardening은 CIS Benchmark 또는 주요정보통신 기반시설 취약점 점검 가이드를 참고해 CCE 점검 및 조치 2. 불필요 프로세스 / 서비스 / 패키지 삭제 프로세스 삭제 netstat -plnt | grep [port_num] 또는 lsof -i :[port_num] ls -l /proc/[process_num]/exe kill [process_num] rm [process_dir] 서비스 삭제 systemctl list-units -t service --state active | grep -i [svc_name] systemctl stop [servic..

Kubernetes

Kubernetes Security - Seccomp

1. 개념 Seccomp는 secure computing mode 의 줄임말 리눅스 커널의 보안기능 중 하나로 syscall 실행을 허용/거부/로깅 할 수 있음 K8s "전용" 보안 기능은 아니고 ASLR과 같이 리눅스에 구현된 보안 기능임 AppArmor와 비슷한 기능으로 느껴져서 chatGPT한테 차이점을 질의한 결과 아래와 같은 컨셉으로 느껴졌음 AppArmor : 특정 프로세스의 시스템 리소스 접근에 대한 허용/거부 Seccomp : 모든 프로세스의 syscall 호출에 대한 허용/거부 2. Seccomp 사용 팁 seccomp 정책 SCMP_ACT_ALLOW : 허용 SCMP_ACT_ERRNO : 거부 SCMP_ACT_LOG : 로깅 seccomp 기본 경로 /var/lib/kubelet/sec..

Kubernetes

Kubernetes Security - AppArmor

1. 개념 컨테이너의 특성상 VM과는 다르게 Host의 커널 영역에 접근 가능 이런 리스크를 낮추기 위해 유저 영역과 커널 영역의 중간에 AppArmor, Seccomp와 같이 Security Layer를 만들어 일종의 방화벽 역할을 하는 장치를 구성할 수 있음(다만 컨테이너 런타임이 AppArmor를 지원해야 사용 가능) AppArmor는 Profile을 정의를 통해 시스템 콜을 운영자가 원하는대로 허용/거부할 수 있음 Profile에는 3가지의 Modes(제한 수준)을 설정할 수 있음 AppArmor는 모든 노드에 설치되어야 하고 AppArmor의 Profile 또한 모든 노드에서 사용 가능해야 함 AppArmor Profile은 컨테이너 단위로 적용 따라서 디플로이먼트에 AppArmor를 적용하고자..

Kubernetes

Kubernetes Audit Logs 설정

1. 개념 K8s는 API 요청을 기록하는 Audit Logs가 존재 보안과 운영 측면에서 Audit log를 활용 가능 2. Stage and Level K8s API 요청에 대한 로깅을 기록할 때 로깅을 위한 stage(리소스 요청 단계)와 level(로깅 수준)이 존재 Stages RequestReceived : kube-api가 요청을 받은 것 ResponseStarted : kube-api가 응답 헤더만 보내고 바디는 전송하지 않은 것 ResponseComplete : kube-api가 응답 헤더까지 전송한 것 Panic : 패닉 발생한 것 Level None : 규칙에 부합하는 로그를 남기지 않음 Metadata : 요청에 대한 메타데이터만 로그로 기록 Request : 요청의 메타데이터 + ..

Kubernetes

Kubernetes 컨테이너 불변성(Immutability of Containers) 개념

1. 개념 컨테이너는 생성된 후 life time 동안 변경이 발생해서는 안됨 이를 제어하지 않으면 쉘에 접속해 설정을 변경하는 등 의도치않은 행위가 가능해지기 때문이고, 결론적으로 관리자가 컨테이너의 상태를 파악하지 못할 가능성이 발생 Immutability of Containers의 목적은 궁극적으로 관리자가 모든 컨테이너의 상태를 파악하고 핸들링하기 위함 따라서 컨테이너에 변경이 필요한 경우 반드시 기존의 컨테이너를 삭제하고 새로운 컨테이너를 생성해야 함 2. Immutability 적용 방법 bash / shell 제거 command 또는 startupProbe 활용 startupProbe: exec: command: - rm - /bin/bash root 파일시스템 read only Securi..

Kubernetes

Kubernetes Falco 개념 및 설치

1. 개념 Falco는 Cloud Native Runtime Security 오픈소스로서 CNCF 재단에 속해있음 리눅스 커널 호출을 트레이싱해 의도하지 않거나 비정상적인 행위를 탐지하고 차단 가능 공식 사이트 2. 설치 방법 curl -s https://falco.org/repo/falcosecurity-packages.asc | apt-key add - echo "deb https://download.falco.org/packages/deb stable main" | tee -a /etc/apt/sources.list.d/falcosecurity.list apt-get update -y apt-get install -y linux-headers-$(uname -r) apt-get install -y ..

Kubernetes

Kubernetes private docker registry 접근

1. 개념 pod 생성 시 이미지를 public docker hub가 아닌 자체적으로 구성한 private docker registry에서 다운받도록 구성 가능 이때 private docker registry 접근 시 로그인 정보는 docker-registry 타입 secret의 imagePullSecrets 인자값으로 전달 2. 참고 https://www.youtube.com/watch?v=d9xfB5qaOfg&ab_channel=KillerShell

Kubernetes

Kubernetes 안전한 Dockerfiles 작성

1. 개념 Dockerfile을 작성할 때 RUN, COPY, ADD 명령은 레이어를 추가해 용량을 증가시키므로 최대한 지양하는 것이 좋음 도커 컨테이너의 보안을 위해서 다음의 사항을 유념하면서 Dockerfile을 작성해야 함 패키지 버전 명시 root로 실행 금지 파일시스템 read only 설정 shell 접근 삭제 구체적인 내용은 공식 문서 참고(Overview of best practices for writing Dockerfiles) 2. 실습 Dockerfile BP에 따른 예시 FROM ubuntu:20.04 # 패키지 버전 지정 RUN chmod a-w /etc RUN add group -S tmpgroup & adduser -S tmpuser -F appgroup -h /home/tmp..

Kubernetes

Kubernetes OPA 개념

1. 개념 Admission Control 단계에서 사용하는 정책 강제 도구 오픈소스 정책 적용 엔진으로서 K8s에서만 사용할 수 있는 것은 아님 OPA 정책을 K8s가 해석할 수 있도록 CRDs로 정의(ConstraintTemplate)하고, 실제 정책 실행 대상 및 조건은 Constraint에 정의 2. OPA 정책 예시 - 모든 파드 생성 차단 # ConstraintTemplate apiVersion: templates.gatekeeper.sh/v1beta1 kind: ConstraintTemplate metadata: name: k8salwaysdeny spec: crd: spec: names: kind: K8sAlwaysDeny validation: # Schema for the `paramet..

Kubernetes

Kubernetes SecurityContext 개념 및 설정2

1. 개념 SecurityContext를 통해 Pod 혹은 Container의 보안 설정을 적용할 수 있음 Pod 수준의 통제와 Container 수준의 통제를 별개로 설정 가능하지만, capabilities 설정은 Container 수준에서만 설정 가능 SecurityContext로 설정할 수 있는 옵션은 공식 문서를 참고 2. 주요 옵션 privileged host OS의 root와 동일한 권한을 허용 기본 설정은 false allowPrivilegeEscalation 부모 프로세스보다 더 많은 권한을 얻도록 허용 Privileged == true or CAP_SYS_ADMIN 권한을 보유한 경우 항상 true capabilities 컨테이너에 사용 가능 / 불가능한 POSIX capabilities..

MR. ZERO
'분류 전체보기' 카테고리의 글 목록