13년차의 서버실

서버, 인프라, 홈랩 기술 블로그

[태그:] KVM 보안 강화

  • [보안] KVM 보안 강화: 게스트-호스트 격리와 CVE 방어 전략

    [보안] KVM 보안 강화: 게스트-호스트 격리와 CVE 방어 전략

    KVM 보안 강화: 게스트-호스트 격리와 CVE 방어 전략

    KVM 보안 강화는 옵션이 아니라 운영 품질에 가깝습니다. VM이 몇 대 안 될 때는 성능과 편의가 먼저 눈에 들어오지만, 실제 사고를 줄이는 건 늘 게스트-호스트 격리, 관리면 축소, 업데이트 절차더라고요. 저도 홈랩과 테스트 호스트를 굴리면서 비슷하게 느꼈습니다. 문제는 대개 화려한 제로데이보다, 편의상 열어 둔 공유 경로, 느슨한 libvirt 권한, 꺼 둔 SELinux/AppArmor, 방치된 장치 에뮬레이션에서 시작됐거든요. 본 글은 보안 학습과 본인이 관리하는 시스템의 방어를 위한 교육 목적입니다. 타인의 시스템에 대한 무단 접근·공격은 불법이며 법적 처벌 대상입니다.

    KVM 보안 강화 아키텍처와 게스트-호스트 격리 개요 이미지

    호스트 커널, KVM, QEMU, libvirt, 가상 네트워크가 어떻게 분리되는지 한눈에 보여주는 개요 이미지입니다.

    KVM 보안 강화가 중요한 이유

    KVM 환경은 흔히 하이퍼바이저 하나로 뭉뚱그려 말하지만, 실제 위험은 계층마다 다르게 생깁니다. 커널 쪽은 KVM 모듈과 메모리 관리가, 사용자 공간은 QEMU 장치 에뮬레이션이, 운영면은 libvirt 소켓과 정책이, 네트워크 쪽은 브리지와 필터가 각각 문제를 만듭니다. 그래서 보안은 제품 하나를 더 붙이는 작업이 아니라, 어느 레이어가 깨져도 다음 레이어에서 피해를 줄이는 구조를 만드는 일에 더 가깝습니다.

    운영하면서 특히 자주 보는 위험 지점은 아래 네 가지였습니다.

    • 장치가 과한 VM: 안 쓰는 USB, 사운드, CD-ROM, 그래픽 장치가 남아 있으면 QEMU 공격면만 늘어납니다.
    • 편의성 때문에 열린 공유: 호스트 경로를 광범위하게 마운트하거나 9p, virtiofs를 무분별하게 열면 격리 이점이 빠르게 줄어듭니다.
    • 관리면 노출: libvirt 관리 소켓, 원격 API, SSH 키 관리가 느슨하면 VM 자체보다 운영 채널이 먼저 흔들립니다.
    • 격리 정책 해제: SELinux나 AppArmor를 꺼 두면 당장은 편하지만, 다음 장애 때 원인 추적이 더 어려워집니다.

    최근 공개되는 취약점 대응도 같은 맥락으로 봐야 합니다. CVE 번호를 외우는 것보다 중요한 건, 어떤 이슈가 나오더라도 장치 최소화, 프로세스 confinement, 네트워크 분리, 패치 검증 루틴으로 폭발 반경을 줄여 두는 겁니다. 실무에서는 이 차이가 진짜 크게 납니다.

    KVM 보안 강화 관점에서 이해하는 KVM, QEMU, libvirt, sVirt

    구조를 이해할 때 가장 도움이 됐던 기준은 단순했습니다. KVM은 커널 안에서 CPU 가상화 가속을 맡고, QEMU는 실제 VM 프로세스를 띄우며, libvirt는 그 수명주기와 정책을 관리합니다. 여기에 sVirt와 SELinux 또는 AppArmor가 붙어서, VM 프로세스가 접근할 수 있는 파일·장치 범위를 제한합니다. 결국 보안의 핵심은 “VM이 뜨는가”보다 “QEMU 프로세스가 어디까지 닿을 수 있는가”에 있습니다.

    계층 주요 역할 현실적인 실패 모드 우선 점검 포인트 이럴 때 특히 중요
    KVM 커널 레벨 가상화 가속 커널 패치 지연, 불필요한 기능 노출 호스트 커널 업데이트, LSM 활성화 멀티테넌트, 외부 노출 워크로드
    QEMU 장치 에뮬레이션, VM 실행 안 쓰는 가상 장치 유지, 광범위한 파일 접근 디바이스 최소화, seccomp, 비루트 실행 여부 확인 GUI 없는 서버 VM, CI 러너
    libvirt 정책 및 수명주기 관리 과한 권한, 소켓 접근 통제 부재 polkit, 소켓 권한, XML 템플릿 표준화 여러 관리자가 함께 운영
    sVirt / SELinux / AppArmor 프로세스·파일 격리 문제 해결을 핑계로 비활성화 Enforcing 유지, 라벨·프로파일 조정 이미지 경로 변경, 패스스루 구성
    가상 네트워크 브리지, NAT, 필터링 관리망과 서비스망 혼재, 스푸핑 방어 부재 nwfilter, 브리지 분리, 방화벽 존 구분 동일 브리지에 다수 VM 수용

    여기서 흔한 오해가 하나 있습니다. “내부망인데 괜찮지 않나”라는 판단이죠. 실제로는 내부망일수록 브리지 하나에 관리 트래픽, 스토리지, 게스트 서비스 트래픽을 한꺼번에 올려 두는 경우가 많아서, 사고가 나면 범위가 더 넓게 번집니다. 특히 테스트 VM과 운영 보조 VM이 섞인 호스트라면 이 구분을 빨리 해 두는 편이 훨씬 낫습니다.

    실전 1: KVM 보안 강화의 시작, 호스트 기본 상태 점검

    KVM 보안 강화의 출발점은 현재 상태를 숫자와 로그로 확인하는 겁니다. 여기서 중요한 건 “설치돼 있다”가 아니라 “격리 기능이 실제로 살아 있느냐”예요. 저는 새 호스트를 받으면 아래 순서대로 봅니다.

    1. CPU 가상화와 KVM 모듈이 정상 로드됐는지 확인
    2. QEMU, libvirt, 커널 버전과 배포판 보안 업데이트 상태 확인
    3. SELinux 또는 AppArmor가 enforcing 성격으로 동작 중인지 확인
    4. libvirt가 monolithic 데몬인지, modular 데몬인지 확인
    5. 기본 검증 도구와 로그에서 이미 실패 신호가 나오는지 확인
    uname -r
    lscpu | egrep 'Virtualization|Vendor ID|Model name'
    lsmod | grep -E '^kvm(_intel|_amd)?'
    virt-host-validate qemu
    
    # RHEL, Rocky, AlmaLinux 계열
    rpm -q qemu-kvm libvirt selinux-policy-targeted
    getenforce
    systemctl status virtqemud.socket virtqemud libvirtd --no-pager
    journalctl -u virtqemud -u libvirtd -b --no-pager | tail -n 80
    
    # Debian, Ubuntu 계열
    dpkg -l | egrep 'qemu-system|libvirt-daemon|libvirt-clients|apparmor'
    aa-status
    systemctl status libvirtd virtqemud --no-pager
    journalctl -u libvirtd -u virtqemud -b --no-pager | tail -n 80

    해석 기준도 명확해야 합니다. <code>virt-host-validate에서 FAIL이 뜨면 그냥 넘기지 않는 편이 맞습니다. 겉보기엔 기능 문제처럼 보여도, 커널 옵션이나 cgroup 구성이 격리 기능에 영향을 줄 때가 있거든요. getenforce가 Enforcing이 아니거나 aa-status에서 적용 중인 프로파일이 거의 보이지 않으면, 그 상태에서는 나머지 보안 논의가 반쯤 힘을 잃습니다.

    이 단계에서 같이 봐야 할 건 패치 절차입니다. 최근 취약점 방어를 실무적으로 하려면 “뉴스를 빨리 읽는다”보다 “보안 업데이트를 언제 어떤 순서로 반영하는가”가 더 중요합니다. 테스트 호스트 한 대에서 VM 기동, 저장소 접근, 마이그레이션, 백업 경로를 먼저 확인하고 운영 호스트에 넘기는 흐름이 있으면 대응 품질이 훨씬 안정적입니다. 관련해서 호스트 방화벽이나 리눅스 권한 모델을 따로 정리한 글이 있다면, 그 글도 함께 읽어 두면 운영 기준을 잡기 편합니다.

    실전 2: 게스트-호스트 격리를 실제 설정으로 묶기

    보안 수준이 확 갈리는 구간이 여기입니다. VM이 잘 뜬다는 이유로 XML을 방치하면, 몇 달 뒤에는 왜 그런 장치가 붙어 있는지 아무도 설명 못 하는 환경이 됩니다. 저는 템플릿을 만들 때 “필요한 것만 남기기”를 먼저 하고, 그다음에 보안 라벨과 네트워크 필터를 확인합니다. 이 순서가 생각보다 편하더라고요.

    KVM 보안 강화용 sVirt 라벨과 네트워크 필터 적용

    libvirt domain XML에서는 최소한 seclabel, 디스크 경로, 인터페이스 필터, 장치 수를 같이 봐야 합니다. 단일 호스트라도 이 부분을 표준화해 두면 운영 품질이 꽤 올라갑니다.

    virsh dumpxml hardened-vm > /tmp/hardened-vm.xml
    virsh nwfilter-list
    virsh nwfilter-dumpxml clean-traffic
    virsh domiflist hardened-vm
    virsh domblklist hardened-vm --details
    <domain type='kvm'>
      <name>hardened-vm</name>
      <memory unit='MiB'>4096</memory>
      <vcpu placement='static'>2</vcpu>
      <os>
        <type arch='x86_64' machine='q35'>hvm</type>
        <boot dev='hd'/>
      </os>
      <features>
        <acpi/>
        <apic/>
      </features>
      <cpu mode='host-model' check='partial'/>
      <seclabel type='dynamic' model='selinux' relabel='yes'/>
      <devices>
        <emulator>/usr/bin/qemu-system-x86_64</emulator>
        <disk type='file' device='disk'>
          <driver name='qemu' type='qcow2' discard='unmap'/>
          <source file='/var/lib/libvirt/images/hardened-vm.qcow2'/>
          <target dev='vda' bus='virtio'/>
        </disk>
        <interface type='bridge'>
          <source bridge='br0'/>
          <model type='virtio'/>
          <filterref filter='clean-traffic'>
            <parameter name='IP' value='192.0.2.10'/>
          </filterref>
        </interface>
        <serial type='pty'>
          <target port='0'/>
        </serial>
        <console type='pty'>
          <target type='serial' port='0'/>
        </console>
        <memballoon model='virtio'/>
      </devices>
    </domain>

    clean-traffic는 MAC spoofing, IP spoofing, ARP spoofing을 줄이는 데 실용적입니다. 특히 같은 브리지에 여러 VM을 올리는 환경에서는 비용 대비 효과가 좋습니다. 다만 고정 IP를 전제로 운영하는 편이 더 편해서, DHCP로 자주 바뀌는 임시 VM에는 관리 부담이 생길 수 있습니다. 이럴 땐 필터를 통째로 빼기보다, 관리망용 브리지와 실험용 브리지를 분리하는 쪽이 더 안전합니다.

    KVM 보안 강화용 libvirt 격리 설정 다이어그램

    domain XML의 seclabel, bridge, nwfilter, virtio 디바이스 최소화 구성을 묶어 보여주는 설정 다이어그램입니다.

    QEMU 보안 옵션은 기본값을 존중하는 쪽이 안전합니다

    운영 중 가장 위험한 판단 중 하나가 “일단 뜨게 하자”입니다. 패스스루나 특수 마운트가 안 될 때 security_driver를 비우거나 confinement를 낮추는 경우가 있는데, 그 순간부터는 문제를 해결한 게 아니라 탐지 능력을 버린 셈이 됩니다. 저는 먼저 로그를 보고 어떤 제약이 걸렸는지 확인한 뒤, 필요한 범위만 예외를 만듭니다. 이거 한번 습관 붙이면 훨씬 덜 흔들립니다.

    grep -E '^(#\s*)?(security_driver|security_default_confined|user|group|namespaces|seccomp_sandbox|dynamic_ownership)' /etc/libvirt/qemu.conf
    
    # 소켓 및 권한 확인
    systemctl cat virtqemud.socket libvirtd.socket --no-pager
    getfacl /var/run/libvirt/libvirt-sock /var/run/libvirt/virtqemud-sock 2>/dev/null
    
    # 최근 부팅 이후 libvirt/QEMU 거부·오류 로그 확인
    journalctl -u virtqemud -u libvirtd -b --no-pager | grep -Ei 'denied|avc|apparmor|seccomp|qemu'
    # /etc/libvirt/qemu.conf 예시
    # security_default_confined = 1
    # user = "qemu"
    # group = "qemu"
    # dynamic_ownership = 1
    # seccomp_sandbox = 1

    여기서 판단 기준은 이렇습니다.

    • security_default_confined를 껐다면, 이유가 문서화돼 있지 않은 이상 과거 임시 조치가 굳어졌을 가능성을 먼저 의심하는 편이 맞습니다.
    • user와 group가 루트 권한으로 과하게 올라가 있으면, 편의는 늘어도 사고 범위가 커집니다.
    • dynamic_ownership는 스토리지 경로 운영 방식과 같이 봐야 합니다. 여러 관리자가 수동으로 파일 권한을 건드리는 환경이라면 표준 경로를 먼저 정리하는 쪽이 낫습니다.
    • seccomp_sandbox를 끄는 건 마지막 수단이어야 합니다. 실제 병목은 이 옵션보다 스토리지 캐시, 백엔드 네트워크, CPU 모델 선택에 있는 경우가 더 많습니다.

    여러 환경을 다뤄보면 공통점이 있습니다. QEMU 보안 옵션은 성능을 깎는 장식이 아니라, 문제를 지역화하는 장치라는 점이죠. 보호 장치를 꺼 버리면 장애는 잠깐 사라져도 다음엔 더 크게 돌아옵니다.

    실전 3: 최신 취약점 방어는 패치, 최소화, 분리로 갑니다

    최신 CVE 대응을 운영 언어로 바꾸면 세 가지입니다. 첫째, 호스트 커널과 QEMU, libvirt를 배포판 보안 공지 기준으로 빠르게 갱신합니다. 둘째, 사용하지 않는 장치와 공유 기능을 제거합니다. 셋째, 관리면과 데이터면을 분리해 한 지점의 실패가 전체 확산으로 이어지지 않게 합니다. 이 세 가지가 쌓이면, 개별 취약점 세부 사항을 전부 몰라도 방어력이 꽤 올라갑니다.

    특히 장치 에뮬레이션 쪽은 “안 쓰면 줄어드는 위험”이 분명합니다. 아래 표는 실제 운영에서 자주 고민하는 선택지입니다.

    구성 요소 유지해도 되는 경우 빼는 편이 나은 경우 보안상 판단 이유
    USB redirection VDI, 데스크톱 VM에서 실제 장치 전달이 필요할 때 서버 VM, 헤드리스 워크로드 불필요하면 장치 관련 공격면만 늘어납니다.
    사운드 장치 멀티미디어 테스트, GUI 앱 검증 웹 서버, DB, 배치, CI 러너 서버 VM에는 기능 이득이 거의 없습니다.
    CD-ROM 장치 초기 설치, 드라이버 주입, 복구 작업 직후 설치 완료 후 상시 운영 남겨 둘 이유가 사라지면 제거하는 편이 낫습니다.
    호스트 경로 공유 명확한 목적의 제한된 경로 공유가 필요할 때 전역 경로, 다목적 공유 폴더 게스트에서 호스트 파일 체계로 닿는 면적이 커집니다.
    원격 libvirt 관리 전용 관리망과 인증 체계를 갖춘 경우 일반 서비스망과 혼재한 경우 운영 채널이 먼저 노려질 가능성이 큽니다.

    새 VM 템플릿을 만들 때 저는 다음 기준으로 자릅니다. 서버 VM이면 GUI 장치, 사운드, USB, 광학 장치는 특별한 이유가 없으면 빼고 시작합니다. 파일 공유는 “편해서”가 아니라 목적과 경로가 분명할 때만 넣습니다. 관리 소켓과 API는 로컬 우선으로 두고, 원격 관리가 필요하면 전용 관리망과 접근 제어를 같이 설계합니다. 스냅샷과 백업 이미지는 운영자가 일반 작업하는 경로와 섞지 않는 편이 좋고요. 이런 기본기가 나중에 권한, 라벨, 삭제 사고를 꽤 많이 줄여 줍니다.

    ⚠️ 제가 겪었던 문제: SELinux를 끄지 말고 라벨을 바로잡으세요

    이 문제는 생각보다 자주 나옵니다. 디스크 이미지를 /var/lib/libvirt/images 밖으로 옮긴 뒤 XML만 고치고 끝내면, VM 기동 시 QEMU가 파일 접근을 거부당하는 경우가 많습니다. 이때 정책이 너무 빡세다고 느끼기 쉬운데, 사실은 정책이 정상 동작 중인 겁니다. 막혀야 할 접근을 막고 있는 거니까요.

    제가 실제로 겪었던 재현 시나리오는 이랬습니다. 저장소 정리를 하려고 이미지를 /srv/vm-images로 옮겼고, domain XML의 <source file='...'/>만 수정했습니다. 기동은 실패했고, 로그에는 AVC deny만 남았습니다. 원인은 단순했습니다. 파일 경로는 바뀌었는데 보안 라벨은 새 경로 기준으로 맞추지 않았던 겁니다. 이거 처음 겪으면 꽤 당황스럽습니다.

    virsh start hardened-vm
    journalctl -xe --no-pager | grep -Ei 'denied|avc|apparmor|qemu|libvirt'
    ls -l /srv/vm-images
    ls -Z /srv/vm-images 2>/dev/null || true
    restorecon -Rv /srv/vm-images
    
    # 경로 자체를 영구적으로 표준 라벨 대상으로 추가해야 할 때 예시
    semanage fcontext -a -t virt_image_t '/srv/vm-images(/.*)?'
    restorecon -Rv /srv/vm-images

    해석 기준도 분명합니다.

    • 예상한 경로에서 AVC deny가 반복되면, 첫 번째 가설은 거의 항상 라벨 문제입니다.
    • 파일 소유권과 경로가 정상인데도 실패하면, domain XML의 디스크 경로와 seclabel, 그리고 libvirt 보안 드라이버 설정을 같이 봐야 합니다.
    • setenforce 0는 원인 확인용 임시 진단으로만 제한해야 합니다. 영구 대응으로 쓰면 다음 장애 때 격리도 원인도 동시에 잃게 됩니다.

    이 경험을 한 번 하고 나면 시각이 조금 달라집니다. SELinux는 일을 방해하는 게 아니라, 잘못된 경로 변경을 초기에 드러내 주는 장치였거든요. 운영에서는 이런 시끄러운 정직함이 훨씬 낫습니다.

    KVM 보안 강화 검증을 위한 로그와 정책 확인 이미지

    journalctl, AVC deny 로그, 파일 보안 라벨 확인 흐름을 시각화한 검증 이미지입니다.

    검증: KVM 보안 강화 후 무엇을 보고 안전하다고 판단할까

    설정은 넣는 것보다 검증이 더 중요합니다. 저는 보안 강화가 끝난 뒤 아래 순서로 확인합니다. 핵심은 정상 동작만 보는 게 아니라, 예상 밖 접근이 실제로 막히는지까지 보는 겁니다.

    1. QEMU 프로세스가 의도한 이미지와 인터페이스만 사용하는지 확인
    2. SELinux/AppArmor 로그에서 정상 차단과 업무 장애를 구분
    3. nwfilter와 브리지 구성이 실제 인터페이스에 반영됐는지 확인
    4. 업데이트 후 부팅뿐 아니라 스냅샷, 백업, 마이그레이션 경로까지 확인
    virsh dominfo hardened-vm
    virsh domiflist hardened-vm
    virsh dumpxml hardened-vm | sed -n '/<seclabel/,/<\/seclabel>/p;/<interface/,/<\/interface>/p'
    ps -ef | grep '[q]emu-system'
    virsh nwfilter-list
    journalctl -b --no-pager | grep -Ei 'avc:|apparmor|seccomp|virtqemud|libvirtd' | tail -n 100

    이 결과를 볼 때는 숫자보다 의도와 실제가 일치하는지를 따집니다. XML에는 없는 장치가 QEMU 실행 파라미터에 많다면 템플릿이 지저분하다는 뜻입니다. 보안 로그가 전혀 없는 상태가 무조건 이상적인 것도 아닙니다. 정책이 살아 있으면 정상 차단 로그가 가끔 보일 수 있습니다. 반대로 VM 기동 때마다 같은 거부가 반복되고 서비스가 실제로 실패한다면, 그건 바로 조정해야 할 신호입니다.

    여기서 많이 놓치는 부분이 업데이트 후 부팅만 확인하는 습관입니다. 라이브 마이그레이션, 스냅샷, 백업, 이미지 증설 같은 운영 동작은 평소엔 덜 보이지만 장애 때 가장 먼저 필요해집니다. 그래서 저는 패치 검증을 할 때 평소 쓰는 관리 작업 하나 이상을 반드시 같이 돌립니다. 이 루틴 하나만 있어도 운영 안정성이 꽤 달라집니다.

    자주 묻는 포인트와 운영 팁

    1. 네트워크를 완전히 분리해야 하나요?

    무조건 물리적으로 쪼개야 한다는 뜻은 아닙니다. 다만 관리망과 게스트 서비스망은 논리적으로라도 분리하는 편이 좋습니다. 단일 브리지 하나에 libvirt 관리, 스토리지, 일반 트래픽을 모두 태우면 나중에 로그 분석과 정책 적용이 훨씬 까다로워집니다. 홈랩은 VLAN이나 브리지 분리부터, 소규모 서버는 최소한 방화벽 존 분리부터 시작하는 편이 현실적입니다.

    2. 성능 때문에 보안 기능을 일부 끄고 싶을 때는요?

    저라면 순서를 바꿉니다. 먼저 스토리지 캐시 정책, 디스크 포맷, CPU 모델, vCPU pinning 필요성, 네트워크 백엔드를 확인합니다. 실제 병목은 seccomp나 sVirt보다 다른 데 있을 때가 훨씬 많았습니다. 보호 기능을 끄는 건 마지막 판단이어야 하고, 꼭 필요하면 대상 VM, 이유, 기간을 문서화해 두는 게 맞습니다.

    3. CVE 방어는 어디까지 자동화해야 하나요?

    최소한 패키지 업데이트 확인, 재부팅 필요 여부 확인, 핵심 VM 기동 테스트까지는 자동화 가치가 높습니다. 다만 운영 반영은 테스트 단계를 거치는 편이 안전합니다. 특히 커널과 QEMU 업데이트는 재부팅 또는 VM 재시작 전략까지 함께 생각해야 합니다.

    • 홈랩: 수동 검토와 테스트 호스트 1대면 충분한 경우가 많습니다.
    • 소규모 팀: 보안 공지 수집, 패키지 점검, 핵심 VM 스모크 테스트를 스크립트화하면 효율이 좋습니다.
    • 서비스 운영: 변경 창구, 롤백 절차, 로그 보존, 책임자 승인 흐름까지 포함해야 오래 버팁니다.

    마무리: 이런 환경이면 이렇게 가시면 됩니다

    KVM 보안 강화는 대단한 신제품을 도입하는 작업보다, 기본 격리를 복구하고 불필요한 요소를 줄이는 운영 discipline에 더 가깝습니다. 여러 번 부딪혀 보니 결국 결과를 가르는 건 세 가지였습니다. QEMU 장치를 줄였는지, SELinux나 AppArmor를 끄지 않고 다뤘는지, 패치와 검증을 절차로 만들었는지요.

    환경별 추천도 꽤 분명합니다.

    • 홈랩이나 단일 호스트라면: SELinux/AppArmor 활성화, XML 장치 최소화, clean-traffic 적용, 이미지 저장 경로 표준화부터 시작하는 편이 좋습니다.
    • 여러 VM을 운영하는 소규모 서버라면: 관리망 분리, 템플릿 표준화, libvirt 소켓 접근 통제, 업데이트 검증 절차까지 같이 가져가세요.
    • 외부 서비스가 올라가는 환경이라면: 테스트 호스트, 변경 절차, 로그 점검 자동화, 백업·마이그레이션 검증 없이 오래 운영하기 어렵습니다.

    한 줄로 줄이면 이렇습니다. 편의 때문에 격리를 끄는 쪽보다, 조금 불편하더라도 원인을 좁혀 수정하는 쪽이 결국 더 싸게 먹힙니다. 최신 취약점 방어도 그 연장선입니다. 패치를 빠르게 넣고, 공격면을 줄이고, 관리면을 분리하면 CVE 하나하나에 덜 흔들리는 환경이 됩니다. 본 글은 보안 학습과 본인이 관리하는 시스템의 방어를 위한 교육 목적입니다. 타인의 시스템에 대한 무단 접근·공격은 불법이며 법적 처벌 대상입니다.

    패치, 격리, 네트워크 필터, 정책 검증, 운영 절차를 한 장으로 정리한 요약 인포그래픽입니다.