VMware Tools 설정 중 일부는 보안 위험에 노출될 수 있습니다. 예를 들어, VMware Tools를 사용하면 직렬 또는 병렬 포트와 같은 가상 디바이스를 가상 시스템에 연결할 수 있습니다. 연결된 디바이스는 잠재적으로 공격 채널이 될 수 있습니다. 가상 시스템을 강화하고 보안 위험을 최대한 줄이려면 보안 위협에 취약한 VMware Tools 기능을 사용하지 않도록 설정합니다.

운영 환경에서 호스트, 가상 시스템, 관리 구성 요소 및 네트워킹 인프라스트럭처에 대한 보안 권장 사항을 포함하여 VMware vSphere를 안전하게 배포하는 데 대한 자세한 내용은 vSphere 강화 가이드를 참조하십시오. VMware Tools 설정에서는 가상 시스템의 배포 측면만 관련되어 있습니다.

가상 시스템은 몇 개의 파일에 캡슐화됩니다. 중요한 파일 중 하나는 구성 파일(.vmx 파일)입니다. 이 파일은 가상 하드웨어 및 기타 설정의 성능을 좌우합니다. 몇 가지 방법을 사용하여 구성 설정을 보고 수정할 수 있습니다.

  • 텍스트 편집기에서 .vmx 파일을 직접 엽니다.

  • vSphere Web Client를 사용하여 가상 시스템 설정을 편집합니다. vSphere Web Client에서 이러한 구성 매개 변수를 편집하는 것은 가상 시스템의 설정 편집 대화상자에 있는 고급 옵션에 해당합니다.

  • vSphere Client를 사용하여 가상 시스템 설정을 편집합니다. vSphere Client에서 이러한 구성 매개 변수를 편집하는 것은 가상 시스템의 설정 편집 대화상자에 있는 고급 옵션에 해당합니다.

  • Power CLI와 같은 vSphere API 기반 도구를 사용하여 .vmx 매개 변수를 보고 수정합니다.

설정을 편집한 후에는 가상 시스템을 다시 시작해야 변경 사항이 적용됩니다.

다음과 같은 잠재적 보안 위협 목록과 해당 VMware Tools 매개 변수를 검토하여 가상 시스템의 .vmx 파일을 설정합니다. 이들 매개 변수 중 많은 부분의 기본값은 이러한 위협으로부터 가상 시스템을 보호할 수 있도록 이미 설정되어 있습니다.

권한 없는 사용자 계정과 관련된 위협

디스크 축소 기능

가상 디스크를 축소하면 사용되지 않는 디스크 공간이 회수됩니다. 루트 또는 관리자 권한이 없는 사용자와 프로세스가 이 절차를 호출할 수 있습니다. 디스크 축소 프로세스는 완료되는 데 상당한 시간이 걸릴 수 있기 때문에 디스크 축소 절차를 반복적으로 호출하면 서비스 거부가 발생할 수 있습니다. 축소 프로세스 동안에는 가상 디스크를 사용할 수 없습니다. 디스크 축소를 사용하지 않도록 설정하려면 다음 .vmx 설정을 사용합니다.

isolation.tools.diskWiper.disable = "TRUE"
isolation.tools.diskShrink.disable = "TRUE"

복사/붙여넣기 기능

파일 끌어서 놓기 기능과 마찬가지로 텍스트, 그래픽 및 파일을 복사하여 붙여 넣는 기능은 기본적으로 사용되지 않도록 설정됩니다. 이 기능을 사용하도록 설정하면 서식 있는 텍스트뿐 아니라 VMware 제품에 따라 그래픽과 파일을 사용자의 클립보드에서 가상 시스템의 게스트 운영 체제로 복사하여 붙여 넣을 수 있습니다. 즉, 가상 시스템의 콘솔 창이 포커스를 얻으면 가상 시스템에 있는 권한 없는 사용자와 프로세스가 콘솔 창이 실행되고 있는 컴퓨터의 클립보드에 액세스할 수 있습니다. 이 기능과 관련된 위험을 피하려면 복사 및 붙여넣기 기능을 사용하지 않도록 다음 .vmx 설정을 유지합니다.

isolation.tools.copy.disable = "TRUE"
isolation.tools.paste.disable = "TRUE"

가상 디바이스와 연결된 위협

디바이스 연결 및 수정

디바이스에 연결하고 연결을 끊는 기능은 기본적으로 사용하지 않도록 설정됩니다. 이 기능을 사용하도록 설정하면 루트 또는 관리자 권한이 없는 사용자와 프로세스가 네트워크 어댑터 및 CD-ROM 드라이브와 같은 디바이스에 연결하여 디바이스 설정을 수정할 수 있습니다. 즉, 사용자가 연결이 끊어진 CD-ROM 드라이브에 연결하여 드라이브에 남아 있는 미디어의 중요한 정보에 액세스할 수 있습니다. 사용자는 또한 네트워크 어댑터의 연결을 끊어 가상 시스템을 해당 네트워크와 분리함으로써 서비스 거부를 발생시킬 수 있습니다. 이 기능과 관련된 위험을 피하려면 디바이스를 연결하고 연결을 끊는 기능 또는 디바이스 설정을 수정하는 기능을 사용하지 않도록 다음 .vmx 설정을 유지합니다.

isolation.device.connectable.disable = "TRUE"
isolation.device.edit.disable = "TRUE"

ESXi 5.0 이전 버전에 대한 VMCI(가상 시스템 통신 인터페이스)

이 설정에서는 ESXi 5.0 이전의 가상 시스템에 적용됩니다. ESXi 5.1 이상의 가상 시스템에는 적용되지 않습니다.

VMCI가 제한되지 않으면 가상 시스템이 동일한 호스트 내에서 동일한 옵션으로 설정된 다른 모든 가상 시스템을 감지하고 이들에 의해 감지될 수 있습니다. 이 인터페이스를 사용하는 사용자 지정 작성 소프트웨어는 예기치 않은 취약성으로 인해 악용될 소지가 있습니다. 또한 가상 시스템은 해당 가상 시스템을 등록함으로써 동일한 ESX/ESXi 시스템 내에 있는 다른 가상 시스템의 개수를 감지할 수 있습니다. 이 정보는 악의적인 목적으로 사용될 수 있습니다. 가상 시스템은 최소 하나 이상의 프로그램이 VMCI 소켓 인터페이스에 연결되어 있을 경우 시스템 내의 다른 가상 시스템에 노출될 수 있습니다. VMCI를 제한하려면 다음 .vmx 설정을 사용합니다.

vmci0.unrestricted = "FALSE"

가상 시스템 정보 흐름과 관련된 위협

가상 시스템 로그 수 구성

로그 설정에 따라 이전 파일이 100KB보다 클 때마다 새로운 로그 파일이 생성될 수 있습니다. 로깅이 제어되지 않으면 데이터스토어의 디스크 공간이 모두 사용될 경우 서비스 거부를 초래할 수 있습니다. 10개의 로그 파일을 저장하는 것이 좋습니다. 기본적으로 로그 파일의 최대 크기는 100KB이고 가상 시스템 수준에서 값을 변경할 수 없습니다. 다음 .vmx 설정을 사용하여 로그 파일 수를 설정합니다.

vmx.log.keepOld = "10"

/etc/vmware/config 파일을 편집하여 호스트에 있는 모든 가상 시스템의 로그 파일 수를 제한할 수 있습니다. 파일에 log.KeepOld 속성이 정의되어 있지 않은 경우 이를 추가할 수 있습니다. 예를 들어 가상 시스템별로 로그 파일을 10개씩 유지하려는 경우 다음을 /etc/vmware/config에 추가합니다.

vmx.log.keepOld = "10"

또한 PowerCLI 스크립트를 사용하여 호스트에 있는 모든 가상 시스템에서 이 속성을 변경할 수도 있습니다.

보다 극단적인 방법은 가상 시스템에 대한 로깅을 모두 사용하지 않도록 설정하는 것입니다. 로깅을 사용하지 않으면 문제를 해결하고 지원하는 데 어려움이 있을 수 있습니다. 로그 파일 순환 접근 방식이 불충분하다고 판명된 것이 아니라면 로깅을 사용하지 않도록 설정하는 것은 고려하지 마십시오. 로깅을 모두 사용하지 않도록 설정하려면 다음 .vmx 설정을 사용합니다.

logging = "FALSE"

VMX 파일 크기

파일 크기가 제어되지 않으면 데이터스토어의 디스크 공간이 모두 사용될 경우 서비스 거부를 초래할 수 있기 때문에 기본적으로 구성 파일은 1MB 크기로 제한됩니다. 때때로 정보 메시지가 가상 시스템에서 .vmx 파일로 보내집니다. 이러한 setinfo 메시지는 이름-값 쌍을 파일에 기록함으로써 가상 시스템 특성 또는 식별자를 정의합니다. 파일에 많은 양의 사용자 지정 정보가 저장되어야 하는 경우 파일 크기를 늘려야 할 수도 있습니다. 이 속성 이름은 tools.setInfo.sizeLimit이며 값은 KB 단위로 지정합니다. 다음 .vmx 설정을 유지합니다.

tools.setInfo.sizeLimit = "1048576"

성능 카운터를 PerfMon에 보내기

CPU 및 메모리에 대한 가상 시스템 성능 카운터를 Microsoft Windows 게스트 운영 체제의 PerfMon에 통합할 수 있습니다. 이 기능은 물리적 호스트에 대한 세부 정보를 게스트 운영 체제에서 사용할 수 있도록 만듭니다. 악의적인 사용자가 이 정보를 사용자 동의 없이 사용하여 호스트에 대한 추가 공격을 통보할 수 있습니다. 기본적으로 이 기능은 사용하도록 설정되지 않습니다. 호스트 정보가 가상 시스템에 보내지는 것을 방지하려면 다음 .vmx 설정을 유지합니다.

tools.guestlib.enableHostInfo = "FALSE"

이 설정에서는 일부 메트릭을 차단하지만 모든 메트릭을 차단하지는 않습니다. 이 속성을 FALSE로 설정하면 다음 메트릭이 차단됩니다.

  • GUESTLIB_HOST_CPU_NUM_CORES

  • GUESTLIB_HOST_CPU_USED_MS

  • GUESTLIB_HOST_MEM_SWAPPED_MB

  • GUESTLIB_HOST_MEM_SHARED_MB

  • GUESTLIB_HOST_MEM_USED_MB

  • GUESTLIB_HOST_MEM_PHYS_MB

  • GUESTLIB_HOST_MEM_PHYS_FREE_MB

  • GUESTLIB_HOST_MEM_KERN_OVHD_MB

  • GUESTLIB_HOST_MEM_MAPPED_MB

  • GUESTLIB_HOST_MEM_UNMAPPED_MB

vSphere에 노출되지 않지만 취약성의 원인이 될 수 있는 기능

VMware 가상 시스템은 vSphere뿐 아니라 많은 VMware 제품에서 실행되기 때문에 일부 가상 시스템 매개 변수가 vSphere 환경에 적용되지 않습니다. 이러한 기능이 vSphere 사용자 인터페이스에 나타나지 않을지라도 이러한 기능을 사용하지 않도록 설정하면 게스트 운영 체제가 호스트에 액세스하는 데 매개가 되는 벡터 수가 줄어듭니다. 이런 기능을 사용하지 않도록 설정하려면 다음 .vmx 설정을 사용합니다.

isolation.tools.unity.push.update.disable = "TRUE"
isolation.tools.ghi.launchmenu.change = "TRUE"
isolation.tools.ghi.autologon.disable = "TRUE"
isolation.tools.hgfsServerSet.disable = "TRUE"
isolation.tools.memSchedFakeSampleStats.disable = "TRUE"
isolation.tools.getCreds.disable = "TRUE"