전체보기

etc

Certified Kubernetes Security Specialist (CKS) 자격증 취득 후기(24.05. 시험)

1. 취득 계기정보보호 담당자로서 쿠버네티스에 대한 지식을 쌓고 보안을 적용하기 위해 CKS를 취득하게 되었습니다. 또한 CKA, CKAD 취득에 이어서 쿠버네티스 3종을 모두 취득해보자는 목표도 있었구요.2. 공부 방법1. 강의처음에는 Kode Kloud의 CKS 강의를 수강했습니다. 1회차를 다 듣고나서는 개념에 대한 설명이나 실습 측면에서 강의 내용이 부족한 느낌을 많이 받았습니다. 대체재로서 유데미의 CKS 강의를 구매해서 들었는데 굉장히 잘한 선택이었고 해당 강의를 N회차 반복해서 들었습니다.(지금은 전체 강의가 무료로 유튜브에 게시되어 있습니다) 2. 실습KodeKloud의 모든 실습 문제를 2회씩 풀었고 Lightning Labs와 Mock Exams, Challenges를 각각 10번 넘게..

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..

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