728x90
반응형
OverlayFS는 리눅스 커널에서 제공하는 유니온 파일 시스템(Union Filesystem) 구현체입니다. 하나 이상의 디렉터리를 겹쳐서 하나의 논리적인 파일 시스템처럼 사용하는 기술로, 특히 Docker, Podman, LXC 등 컨테이너 환경에서 핵심적으로 활용됩니다.
1. 기본 개념
OverlayFS는 읽기 전용(upper)과 쓰기 가능(lower) 디렉터리를 오버레이하여 사용자에게 하나의 통합된 디렉터리처럼 보이게 합니다.
구성 요소
- LowerDir: 읽기 전용 계층 (예: base 이미지)
- UpperDir: 쓰기 가능한 계층 (예: 컨테이너 실행 시 생성되는 변경 사항)
- WorkDir: Overlay 작업에 필요한 임시 파일 저장소
- MergedDir: 실제 사용자에게 노출되는 결과 디렉터리
기본 마운트 구조 예시
mount -t overlay overlay \
-o lowerdir=/lower,upperdir=/upper,workdir=/work \
/merged
-o lowerdir=/lower,upperdir=/upper,workdir=/work \
/merged
→ /merged 디렉터리는 lower + upper 계층이 통합되어 보입니다.
2. 동작 원리
- 사용자가 /merged/file.txt를 읽으면, upper에 없으면 lower에서 읽습니다.
- 사용자가 해당 파일을 수정하거나 삭제하면, upper에 복사(copy-up) 후 작업합니다.
- lower에는 절대 변경이 발생하지 않으며, upper에서만 변경 사항이 반영됩니다.
예: copy-up
- /lower/config.yaml만 존재하는 상태
- 사용자가 vim /merged/config.yaml로 수정
- OverlayFS는 /lower/config.yaml을 /upper/config.yaml로 복사하고, 그 위에서 작업 수행
3. Docker에서의 활용
Docker는 컨테이너 이미지 계층을 OverlayFS를 통해 다음과 같이 관리합니다.
- Base 이미지 (Ubuntu 등): LowerDir
- 컨테이너가 생성한 변경 파일: UpperDir
- 최종 컨테이너 파일 시스템: MergedDir
/lower → read-only image layer (e.g., /var/lib/docker/overlay2/<id>/diff)
/upper → write layer per container
/merged → 실제 컨테이너가 접근하는 파일 시스템
/upper → write layer per container
/merged → 실제 컨테이너가 접근하는 파일 시스템
→ 이 방식 덕분에 이미지 재사용과 디스크 공간 절약이 가능해집니다.
4. 보안 관점에서의 고려사항
4.1. 포렌식/침해사고 대응 시
- 침해 분석 시, 파일이 upper에만 존재하는지, lower에서 복사된 것인지 구분해야 함
- /var/lib/docker/overlay2/ 경로 아래에서 upper/lower 구조를 추적해야 정확한 파일 생성/수정 타이밍 분석 가능
→ 정훈님처럼 IR 업무를 수행할 경우, OverlayFS 계층 구조를 기반으로 파일 타임라인 재구성 및 위·변조 추적 능력이 중요합니다.
4.2. Host ↔ Container 파일 시스템 경계
- 컨테이너 escape 공격이 발생하면 upper 영역이 손상될 수 있음
- Host OS의 /var/lib/docker/overlay2 자체에 대한 권한 설정, 접근 통제 필요
4.3. 삭제된 파일 추적 어려움
- lower 파일을 delete하면 upper에 "whiteout" 마커 파일로 삭제 처리됨
- ls에는 안 보이지만, forensic 조사에서는 이 마커 파일(.wh.*)을 분석해야 삭제된 파일 존재 여부 파악 가능
5. 실무 이슈 및 주의사항
inode limit 문제 | OverlayFS는 copy-up을 자주 하므로 inode 사용량이 빠르게 증가할 수 있음 |
퍼포먼스 저하 | 대용량 파일 복사 또는 많은 계층 사용 시 I/O 성능 저하 가능 |
보안 문제 | upperdir에 악성 파일 심기 또는 whiteout abuse 가능성 존재 |
파일 권한 우회 | lower의 보안 설정이 upper에서 override될 수 있음 (ACL, SELinux context 주의) |
forensic 회피 | whiteout 파일로 로그 또는 설정 삭제 시, 흔적 파악이 어렵게 되는 우회 가능성 존재 |
6. 보안 분석 시 주요 참고 경로
/var/lib/docker/overlay2/ ← Overlay 계층별 디렉터리
├── <id>/diff/ ← upper 계층 (실제 쓰기 영역)
├── <id>/merged/ ← 컨테이너에 마운트되는 FS
├── <id>/lower/ ← 읽기 전용 이미지 계층
├── <id>/work/ ← 작업 영역
├── <id>/diff/ ← upper 계층 (실제 쓰기 영역)
├── <id>/merged/ ← 컨테이너에 마운트되는 FS
├── <id>/lower/ ← 읽기 전용 이미지 계층
├── <id>/work/ ← 작업 영역
- stat, file, md5sum 등을 통해 upper/lower간 파일 비교 가능
- .wh. 접두어 파일 = 삭제된 lower 파일의 흔적 (whiteout)
7. 결론
OverlayFS는 컨테이너 가상화, 이미지 계층화, DevOps 성능 최적화의 핵심 기술입니다.
하지만 동시에 디스크 포렌식, 침해 사고 분석, 컨테이너 보안 분석 등 다양한 보안 작업에서도 핵심 분석 포인트가 됩니다.
IR, SIEM, SOAR 등에서 실무 대응을 하고 계신 경우, 다음과 같은 시나리오에 주목하셔야 합니다.
- 컨테이너 내 삭제된 로그 분석 (whiteout 추적)
- 악성 파일이 upper에만 존재하는 상황
- Host → Container 경로 우회 공격 여부
- overlay2 내부 타임라인 분석
728x90
반응형
'DevSecOps' 카테고리의 다른 글
Nuclei: 템플릿 기반 취약점 스캐너의 표준 (0) | 2025.06.28 |
---|---|
Trivy: DevSecOps 보안 자동화의 핵심 취약점 스캐너 (1) | 2025.06.28 |
Semgrep: DevSecOps에서 실용적인 정적 분석 도구 (SAST) 활용 가이드 (0) | 2025.06.28 |
SAST vs DAST: DevSecOps에서 정적·동적 분석의 역할과 실무 적용 전략 (0) | 2025.06.28 |
DevSecOps에서 Gitleaks로 시크릿 유출 방지하기 (1) | 2025.06.28 |