보안을 공부하다 보니 자연스럽게 가상화 기술을 접하게 되었음
대략적인 개념에 대한 이해만 알고 넘어갔던 부분들이 많아서 이번 기회에 정리해보고자 함
특히 가상머신VM
, 컨테이너(Docker) 같은 환경이 실습이나 샌드박스 분석 등에서 자주 쓰이다보니, 기본 개념과 차이점, 그리고 보안 관점에서 왜 중요한지를 중심으로 다뤄 보고자 함
가상화
Virtualization
란 물리적인 자원(CPU, 메모리, 저장소 등)을 소프트웨어적으로 추상화하여 하나의 자원을 여러개처럼 나누어 쓰거나, 반대로 여러 자원을 하나처럼 통합해서 사용할 수 있게 만드는기술.
ex) 하나의 컴퓨터(호스트) 안에 여러 개의 가상 컴퓨터(게스트)를 만들어 운영할수 있게 해주는 기술
하나의 서버에 여러 운영체제를 설치해 테스트 환경을 구성하거나 격리된 공간에서 악성코드 분석 등
LVM(Logical Volume Manager)
: 리눅스에서 하드디스크나 파티션을 논리적으로 묶어서 유연하게 관리할 수 있게 해주는 기술이처럼 가상화는 IT 인프라의 유연성을 크게 높여주기 때문에, 개발/보안/운영 등 거의 모든 분야에서 활용됨
가상화 기술은 대표적으로 두 가지 방식으로 가상머신
VM: Virtual Machine
과 컨테이너Container
가 있음
두 방식 모두 애플리케이션을 격리된 환경에서 실행하기 위한 기술이지만, 동작 방식과 목적에 차이가 있음
하드웨어 전체를 가상화하여 운영체제를 포함한 전체 시스템을 소프트웨어로 에뮬레이션
"완전한 운영체제를 포함한 격리된 환경"
애플리케이션과 필요한 라이브러리만 패키징하고 커널은 호스트 OS와 공유, OS 수준에서 가상화함
"빠르고 가볍지만, OS 커널을 공유하기 때문에 보안 격리는 비교적 약함"
웹 앱
+ DB
를 컨테이너 두 개로 나눠서 실행nginx
+ mysql
항 목 | 가상 머신(VM) | 컨테이너(Container) |
---|---|---|
가상화 범위 | 하드웨어 전체 | 운영체제 수준(커널 공유) |
OS 포함 여부 | 포함 (게스트 OS) | 미포함 (호스트 OS 공유) |
리소스 사용 | 높음 ⬆️ | 낮음 ⬇️ |
실행 속도 | 느림 🐢 | 빠름 🐎 |
보안 격리 | 강함 | 상대적으로 약함 |
대표 기술 | VMware, VirtualBox | Docker, Podman |
가상화를 실현시키는 핵심 기술
하이퍼바이저는 물리적인 컴퓨터(Host Machine) 위에서 여러 개의 가상 머신(Guest VM)을 실행하고 하드웨어 자원을 동적으로 분배하고 관리하는 소프트웨어 계층
CPU, 메모리, 디스크, 네트워크 등 물리 자원을 가상화하여 각 가상 머신이 독립적인 시스템처럼 동작하게 해줌
VM간 네트워크는 가상 스위치(Virtual Switch)로 구성됨
CPU나 메모리는 하이퍼바이저가 스케줄링해서 각 VM에 배정함
→ 자원 경합 상황 예시 가능
하드웨어
→ 하이퍼바이저
→ 가상 머신
순으로 자원 흐름이 구성됨: 하드웨어 위에서 직접 설치되어 동작하는 하이퍼바이저
운영체제 없이 바로 부팅되고(BIOS → 하이퍼바이저) 하이퍼바이저 위에 가상 머신(VM)들이 직접 올라감
VMWare ESXi
올리고, 그 위에 웹 서버/DB 등 분리 운영VMware ESXi
, Microsoft Hyper-V
, Xen
: 기존 OS 위에서 애플리케이션 형태로 동작하는 하이퍼바이저
일반 소프트웨어처럼 설치됨 (OS → 하이퍼바이저 → VM)
VirtualBox
설치 후 리눅스 실습 환경 세팅Oracle VirtualBox
, VMware Workstation
보안 분야에서는 악성코드 분석용 샌드박스 환경을 만들거나, 다양한 보안 테스트 환경을 구축하는데 주로 Type 2 하이퍼바이저가 쓰임
가상화와 헷갈릴 수 있는 개념중 하나가 샌드박스(Sandbox)
샌드박스는 엄연히 다른 개념임
샌드박스는 시스템으로부터 격리된 가상의 실행 환경으로, 애플리케이션이나 코드가 시스템 전체에 영향을 주지 않도록 보호하는 기술.
모래상자(Sandbox)
처럼, 아이들이 자유롭게 놀되 울타리 안에서만 활동하는 것
샌드박스는 가볍고 빠르게 격리 환경을 만들 수 있어서 브라우저, PDF 리더기, 안티바이러스 제품에서 자주 사용됨
가상화는 완전한 시스템 분리, 샌드박스는 '일시적'이고 '제한된' 격리 공간.
항 목 | 가상화(Virtualization) | 샌드박스(Sandbox) |
---|---|---|
목 적 | 완전한 OS/자원 격리 | 제한된 실행 공간 제공 |
기술 기반 | 하이퍼바이저, 컨테이너 | 소프트웨어적 격리, 커널 기능(AppArmor, SECCOMP 등) |
자원 사용 | 상대적으로 큼 | 비교적 적음 |
격리 수준 | 전체 시스템 수준 | 프로세스/애플리케이션 수준 |
지속성 | 재부팅 후에도 유지됨 | 대부분 일시적(재시작 시 초기화) |
예 시 | 개발 환경, 서버 분리, 클라우드 | 악성코드 분석, 브라우저 보안, 앱 권한 제어 |
두 가지 모두 격리된 공간을 제공하지만 격리하는 기준/수준이 다르고 실제 구현 목적이 다름
가상화는 완전히 독립된 시스템을 복제한 것이고,
샌드박스는 일시적으로 제한된 환경을 만들어 위험한 행동만 차단하는 기술
가상화의 컨테이너는 개발 환경을 격리하거나 운영체제별 호환성 테스트에 자주 사용됨
예를 들어 Docker를 이용하면 프로젝트마다 다른 라이브러리 버전을 독립적으로 유지할 수 있고, VirtualBox에 다양한 OS를 설치해 플랫폼별 실행 결과를 비교할 수도 있음
보안 분석에서는 의심스러운 파일을 안전하게 실행하거나 침해사고를 재현하는 환경이 필수임
VM 기반의 동적 분석 환경이나 Docker 기반 취약 시스템(DVWA)을 통해 실습과 검증을 반복
운영 측면에서는 서버 자원을 효율적으로 나누고, 서비스 간 영향을 최소화하는 격리 수단으로 활용됨
VM단위로 서비스 역할을 분리하면 장애 전파를 막을 수 있고, 컨테이너는 빠른 배포와 확장에 유리함
교육에서는 격리성과 복제 가능성이 중요한데, VM이나 컨테이너를 통해 동일한 실습 환경을 여러 명에게 제공할 수 있음
CTF대회나 모의 해킹 훈련에서도 공격과 방어 시나리오를 안정적으로 구현할 수 있음