가상화된 사이버 보안 실험실 구축: 네트워킹 및 pfSense 설정

발행: (2025년 12월 12일 오전 10:33 GMT+9)
8 min read
원문: Dev.to

Source: Dev.to

이유

지난 1년 동안 나는 개별 가상 머신, Docker 컨테이너, 그리고 TryHackMe와 같은 온라인 교육 플랫폼을 사용해 실전 사이버 보안 경험을 쌓아왔습니다. 유용하지만, 이러한 도구들은 완전히 제어되는 네트워크 환경이 제공하는 현실감이나 복잡성을 제공하지 못했습니다.

메리빌 대학교에서 사이버 보안 학위를 시작하면서—그리고 Windows 10의 지원 종료에 맞춰 메인 워크스테이션을 Fedora 기반 Linux 배포판으로 옮기면서—본격적인 가상 홈랩을 구축할 때가 되었다고 판단했습니다. 호스트 OS를 Linux로 사용하면 Windows 11의 하드웨어 요구사항(Secure Boot, TPM)을 피할 수 있어 가상화 스택을 완전히 제어할 수 있고, 사이버 보안 교육에 맞춘 엔터프라이즈 스타일의 랩을 설계할 수 있었습니다.

이 글은 홈랩 구축 과정을 4부 시리즈로 기록하는 첫 번째 글입니다. 여기서는 기본 아키텍처 선택을 설명하고, 가상화 환경을 어떻게 구성했는지, 그리고 pfSense를 전체 네트워크의 핵심 라우터 및 방화벽으로 배포하는 과정을 다룹니다. 워크스테이션이 Linux를 네이티브로 구동하므로 KVMQEMU를 선택했으며, 이는 성능, 유연성, OS와의 깊은 통합을 제공하기 때문입니다. libvirt, virsh, virt‑viewer와 결합하면 빠르고 가볍고 높은 커스터마이징이 가능한 가상화 생태계를 얻을 수 있어 실제 인프라가 어떻게 동작하는지 학습하기에 이상적입니다.


가상 네트워크

  • lab‑NAT – Linux 호스트를 통해 pfSense에 상위 인터넷 접근을 제공합니다.
  • lab‑LAN – 모든 클라이언트와 서버 VM이 존재하는 완전히 격리된 내부 네트워크입니다.

이 분리는 외부와 내부 구역이 명확히 구분된 실제 기업 네트워크를 모델링합니다.


pfSense 방화벽/라우터

pfSense는 랩의 중앙 보안 장치로서 다음을 제공합니다:

  • WAN과 LAN 간 라우팅
  • 상태 기반 방화벽
  • DHCP 서비스
  • NAT 변환
  • 세분화 및 네트워크 경계 제어

내부 네트워크를 오가는 모든 트래픽은 pfSense를 통과하므로 대부분의 기업 환경 설계와 동일합니다.


내부 시스템

랩 내부 “엔터프라이즈 네트워크”를 구성하는 시스템들:

  • Windows Server 2022 (Active Directory + DNS)
  • Windows 11 워크스테이션
  • Splunk을 실행하는 Ubuntu Desktop
  • 테스트 및 향후 프로젝트용 추가 Linux 서버

이들 시스템은 현실적인 엔터프라이즈 환경을 나타내는 아이덴티티, 엔드포인트, 로깅 생태계를 제공합니다.


외부 공격 머신 (VPN을 통한 Kali ThinkPad)

물리적인 Kali Linux ThinkPad를 외부 공격 머신으로 통합하고 있습니다. 이 장치는 VPN 터널을 통해 pfSense 방화벽에 연결되며, 다음 중 하나를 시뮬레이션합니다:

  1. 외부 위협 행위자가 네트워크 외부에서 접근하는 경우
  2. 제어된 진입점을 통해 연결된 악성 장치

이 설정을 통해 격리된 lab‑LAN에 대한 침투 테스트, 취약점 탐색, 공격 시뮬레이션을 수행하면서 실제 장치와는 안전하게 분리·격리할 수 있습니다.


KVM/QEMU 및 도구 설치

# Install the virtualization stack
sudo rpm-ostree install @virtualization virt-manager libvirt libvirt-daemon-kvm qemu-kvm bridge-utils --allow-inactive

libvirtd 활성화 및 시작

sudo systemctl enable --now libvirtd
sudo systemctl status libvirtd   # verify it’s running

KVM 지원 확인

egrep -c '(vmx|svm)' /proc/cpuinfo

가상 네트워크 정의

lab‑LANlab‑NAT에 대한 XML 정의를 만든 뒤(예시 XML은 생략) 정의하고, 시작하고, 자동 시작을 설정합니다:

# lab‑LAN
sudo virsh net-define /etc/libvirt/qemu/networks/lab-lan.xml
sudo virsh net-start lab-lan
sudo virsh net-autostart lab-lan

# lab‑NAT (same steps with lab-nat.xml)
sudo virsh net-define /etc/libvirt/qemu/networks/lab-nat.xml
sudo virsh net-start lab-nat
sudo virsh net-autostart lab-nat

네트워크가 활성화됐는지 확인:

sudo virsh net-list --all

virt-install로 pfSense VM 생성

sudo virt-install \
  --name pfSense \
  --ram 2048 \
  --vcpus 2 \
  --os-variant freebsd13.0 \
  --disk path=/var/lib/libvirt/images/pfSense.qcow2,size=10,format=qcow2 \
  --cdrom /var/lib/libvirt/boot/pfsense.iso \
  --network network=lab-nat,model=virtio \
  --network network=lab-lan,model=virtio \
  --graphics spice \
  --boot uefi

설치 콘솔 열기:

sudo virt-viewer pfSense

pfSense 인터페이스 할당

pfSense 설치 중 두 개의 가상 NIC를 다음과 같이 할당합니다:

  • WANlab‑NAT
  • LANlab‑LAN

설치가 끝난 뒤 DHCP, 방화벽 규칙, NAT 등을 필요에 따라 구성합니다. 이렇게 하면 초기 네트워크 세분화와 라우팅이 완료됩니다.


회고 및 향후 계획

방화벽과 가상 네트워킹 기반을 구축하면서 virsh, virt-viewer, KVM 기반 가상화에 대한 자신감이 크게 향상되었습니다. 이 과정은 가상 네트워크 정의, 인터페이스 브리지, 라우팅 설정, 방화벽 레이어에서 DHCP 구성 등 핵심 인프라 개념을 재확인시켜 주었습니다. pfSense 배포를 통해 세분화, NAT 동작, 다중 인터페이스 설계에 대한 이해도 깊어졌습니다.

앞으로 할 일

  • pfSense 기능 확장: 고급 방화벽 규칙, VLAN 세분화, DNS 리졸버 튜닝, 정적 DHCP 매핑 등
  • pfSense 패키지 평가: pfBlockerNG(위협 인텔리전스)와 Suricata(IDS/IPS)
  • 다음 글에서는 Windows Server 2022를 설치하고 도메인 컨트롤러로 승격한 뒤 DNS를 구성하고 pfSense와 연동할 예정입니다. Windows와 Linux 클라이언트를 도메인에 가입시켜 Active Directory 기반을 마련하고, 이후 SOC 워크플로, 블루팀 도구, 탐지 엔지니어링, 공격 시뮬레이션 등에 대한 포스트를 진행할 계획입니다.
Back to Blog

관련 글

더 보기 »