☁️ Как проверить, является ли система Linux физической или виртуальной машиной — Information Security Squad
☁️ Как проверить, является ли система Linux физической или виртуальной машиной
Как узнать работаете ли вы на физической или виртуальной машине?
Большую часть времени мы получаем доступ к своим серверам и управляем ими удаленно.
У вас зачастую может и не быть физического доступа к вашим серверам, и вы можете даже не знать, где находится сервер.
Однако можно проверить, является ли ваша система Linux физической или виртуальной машиной, используя пару утилит Linux.
В этом руководстве перечислены все возможные способы проверить, является ли система Linux, в которой вы работаете, физическим или виртуальным сервером.

Как определить является ли система Linux физической или виртуальной машиной

Существует множество способов определить, является ли система физической или виртуальной.

В настоящее время мне известны следующие методы.

Я сообщу, если найду другие способы в ближайшие дни.

Метод 1 — Использование утилиты Dmidecode

Самый простой способ узнать, работаем ли мы на виртуальной или физической машине, — это использовать утилиту dmidecode.

Dmidecode, декодер таблиц DMI, используется для поиска аппаратных компонентов вашей системы, а также другой полезной информации, такой как серийные номера и версия BIOS.

Как получить информацию о системе в Ubuntu Linux


Dmidecode предустановлен в большинстве дистрибутивов Linux.

На всякий случай, если он еще не установлен, вы можете установить его с помощью диспетчера пакетов вашего дистрибутива.

Скажем, например, следующая команда установит dmidecode в системах на основе DEB, таких как Ubuntu, Linux Mint.

$ sudo apt-get install dmidecode

После установки Dmidecode выполните следующую команду, чтобы узнать, является ли ваша система физической или виртуальной машиной:

$ sudo dmidecode -s system-manufacturer

Если это физическая система, вы получите результат, подобный приведенному ниже.

Dell Inc.

Если это виртуальная система, созданная с помощью Virtualbox, вы получите следующий результат:

innotek GmbH

Для тех, кому интересно, innotek — это немецкая компания-разработчик программного обеспечения, которая разрабатывает программное обеспечение для виртуализации ПК под названием VirtualBox.

Если это виртуальная система, созданная с помощью KVM / QEMU, вывод будет:

QEMU

Как видно из вышеприведенного вывода, если это физическая система, dmidecode покажет имя производителя (например, Dell Inc.).

Если это виртуальная система, то она покажет программное обеспечение / технологию виртуализации (например, VirtualBox или QEMU).

Кроме того, вы можете использовать эту команду, чтобы проверить, является ли это физической или виртуальной системой.

 

$ sudo dmidecode | grep Product

Примеры вывода:

[Физическая машина]

Product Name: 01HXXJ
Product Name: Inspiron N5050

[VirtualBox]

Product Name: VirtualBox
Product Name: VirtualBox

[KVM/QEMU]

Product Name: Standard PC (Q35 + ICH9, 2009)

Еще одна команда, чтобы узнать, является ли это физической или виртуальной системой:

$ sudo dmidecode -s system-product-name

Примеры вывода:

[Физическая машина]

Inspiron N5050

[VirtualBox]

VirtualBox

[KVM/QEMU]

Standard PC (Q35 + ICH9, 2009)

Еще одна команда dmidecode для определения типа удаленной системы:

$ sudo dmidecode | egrep -i 'manufacturer|product'

Примеры вывода:

[Физическая машина]

 Manufacturer: Intel 
 Manufacturer: Sanyo 
 Manufacturer: Not Specified
 Manufacturer: Dell Inc.
 Product Name: 01HXXJ
 Manufacturer: Dell Inc.
 Manufacturer: Dell Inc.
 Product Name: Inspiron N5050
 Manufacturer: 014F

[VirtualBox]

 Manufacturer: innotek GmbH
 Product Name: VirtualBox
 Manufacturer: Oracle Corporation
 Product Name: VirtualBox
 Manufacturer: Oracle Corporation

[KVM/QEMU]

Manufacturer: QEMU
Product Name: Standard PC (Q35 + ICH9, 2009)
Manufacturer: QEMU
Manufacturer: QEMU
Manufacturer: QEMU
Manufacturer: QEMU

И еще одна команда dmidecode предназначена для достижения той же цели:

$ sudo dmidecode | egrep -i 'vendor'

Примеры вывода:

[Физическая машина]
Vendor: Dell Inc.

[VirtualBox]

Vendor: innotek GmbH

[KVM/QEMU]

Vendor: EFI Development Kit II / OVMF

Метод 2 — Использование утилиты Facter

Facter — это утилита командной строки для сбора и отображения информации о системе.

В отличие от Dmidecode, Facter по умолчанию не предустановлен.

Возможно, вам потребуется установить его, как показано ниже, в зависимости от используемого вами дистрибутива Linux.

$ sudo pacman -S facter

На Fedora:

$ sudo dnf install facter

На CentOS, RHEL:

$ sudo yum install epel-release
$ sudo yum installl facter

На openSUSE:

$ sudo zypper install facter

После установки facter выполните следующую команду, чтобы проверить, является ли система физической или виртуальной машиной:

$ facter 2> /dev/null | grep virtual

Если эта команда не работает, попробуйте с привилегиями sudo:

$ sudo facter 2> /dev/null | grep virtual

Примеры вывода:

[Физическая машина]
is_virtual => false
virtual => physical

[VirtualBox и KVM/QEMU]

is_virtual => true
virtual => kvm

Как вариант, используйте следующую команду:

$ facter virtual

или

$ sudo facter virtual
Если это физическая машина, вывод будет такой:
physical
Если это виртуальная машина, вы увидите результат, как показано ниже:
kvm

Метод 3 — Использование утилиты lshw

Утилита lshw — это небольшая утилита командной строки, которая отображает подробную информацию об оборудовании Unix-подобной системы.

Она отображает все детали оборудования, включая конфигурацию памяти, версию прошивки, конфигурацию материнской платы, версию и скорость процессора, конфигурацию кеша, скорость шины и т. д.

В некоторых дистрибутивах Linux предустановлен lshw.

Если он еще не установлен, вы можете установить его, как показано ниже.

В Arch Linux и производных:

$ sudo pacman -S lshw

В Fedora:

$ sudo dnf install lshw

В RHEL и производных, таких как CentOS, scientific Linux:

$ sudo yum install epel-release
$ sudo yum install lshw

На Debian, Ubuntu, Linux Mint:

$ sudo apt-get install lshw

В SUSE / openSUSE:

$ sudo zypper in lshw

После установки lshw выполните следующую команду, чтобы узнать, является ли ваша система физической или виртуальной:

$ sudo lshw -class system

Примеры вывода:

[Физическая машина]
sk 
 description: Portable Computer
 product: Inspiron N5050 (To be filled by O.E.M.)
 vendor: Dell Inc.
 version: Not Specified
 serial: JSQ9PR1
 width: 4294967295 bits
 capabilities: smbios-2.6 dmi-2.6 smp vsyscall32
 configuration: boot=normal chassis=portable sku=To be filled by O.E.M. uuid=44454C4C-5300-1051-8039-CAC04F505231

[VirtualBox]

ubuntuserver 
 description: Computer
 product: VirtualBox
 vendor: innotek GmbH
 version: 1.2
 serial: 0
 width: 64 bits
 capabilities: smbios-2.5 dmi-2.5 vsyscall32
 configuration: family=Virtual Machine uuid=78B58916-4074-42E2-860F-7CAF39B5E6F5

[KVM/QEMU]

centos8uefi.ostechnix.lan   
    description: Computer
    product: Standard PC (Q35 + ICH9, 2009)
    vendor: QEMU
    version: pc-q35-4.2
    width: 64 bits
    capabilities: smbios-2.8 dmi-2.8 smp vsyscall32
    configuration: boot=normal uuid=C40041DE-2E63-094C-8DCF-BBDE29170268
  *-pnp00:00
       product: PnP device PNP0b00
       physical id: 1
       capabilities: pnp
       configuration: driver=rtc_cmos

Метод 4 — Использование утилиты dmesg

Узнать тип системы можно с помощью утилиты dmesg.

dmesg используется для проверки кольцевого буфера ядра или управления им.

Чтобы проверить, является ли ваша система Linux физической или виртуальной, просто запустите:

$ sudo dmesg | grep "Hypervisor detected"

Если ваша система физическая, вы не увидите никаких выходных данных.

Если ваша система — виртуальная машина, вы увидите результат, подобный приведенному ниже.

[ 0.000000] Hypervisor detected: KVM

Метод 5 — Использование команды hostnamectl

Мы можем узнать, является ли наша система виртуальной или физической, используя команду hostnamectl.

Для работы требуется systemd.

$ hostnamectl status

или

$ hostnamectl

Примеры вывода:

[Физическая машина]
Static hostname: sk
 Icon name: computer-laptop
 Chassis: laptop
 Machine ID: 84e3c8e37e114ac9bc9f69689b49cfaa
 Boot ID: 19cf3572e1634e778b5d494d9c1af6e9
 Operating System: Arch Linux
 Kernel: Linux 4.10.13-1-ARCH
 Architecture: x86-64

[VirtualBox]

Static hostname: ubuntuserver
 Icon name: computer-vm
 Chassis: vm
 Machine ID: 2befe86cf8887ba098b509e457554beb
 Boot ID: 8021c02d65dc46a1885afb25dddcf18c
 Virtualization: oracle
 Operating System: Ubuntu 16.04.1 LTS
 Kernel: Linux 4.4.0-78-generic
 Architecture: x86-64

[KVM/QEMU]

Static hostname: centos8uefi.ostechnix.lan
Icon name: computer-vm
Chassis: vm
Machine ID: de4100c4632e4c098dcfbbde29170268
Boot ID: 6136783bb9c241d08c8901aeecc7c30d
Virtualization: kvm
Operating System: CentOS Linux 8 (Core)
CPE OS Name: cpe:/o:centos:centos:8
Kernel: Linux 4.18.0-80.el8.x86_64
Architecture: x86-64

Метод 6 — Использование systemd-detect-virt

Инструмент systemd-detect-virt обнаруживает технологию виртуализации и может отличить полную виртуализацию машины от аппаратной или контейнерной виртуализации.

Выполните следующую команду, чтобы проверить, является ли система физической или виртуальной:

$ systemd-detect-virt

Примеры вывода:

[Физическая машина]
none

[Virtual machine on VirtualBox]

oracle

[Virtual machine on KVM/QEMU]

KVM

Метод 7 — Использование скрипта virt-what

Virt-what — это небольшой скрит оболочки, разработанный Red Hat, чтобы определить, работаем ли мы на виртуальной или физической машине.

virt-what собран для всех популярных дистрибутивов Linux, таких как RHEL, Fedora, CentOS, Debian, Ubuntu, Arch Linux (AUR).

В Arch Linux вы можете установить его из AUR с помощью любых помощников AUR, например Yay.

$ yay -S virt-what

В RHEL, Fedora, CentOS:

$ sudo yum install virt-what

На Debian, Ubuntu:

$ sudo apt-get install virt-what
После установки выполните следующую команду, чтобы отобразить, является ли ваша система физической или виртуальной:

$ sudo virt-what

Если ничего не выводится и скрит завершается с кодом 0 (без ошибок), это означает, что либо система является физической, либо является типом виртуальной машины, о которой мы не знаем или не можем обнаружить.

Если ваша система виртуальная, вы увидите результат, как показано ниже.

virtualbox
kvm

Метод 8 — Использование скрипта imvirt

Imvirt — это еще один небольшой скрипт Perl, который помогает вам определить, работает ли мы на виртуальной машине.

В Arch Linux вы можете установить его из AUR с помощью вспомогательной программы Yay.

$ yay -S imvirt

На Debian, Ubuntu, Linux Mint:

$ sudo apt-get install imvirt
После установки выполните следующую команду, чтобы отобразить, является ли ваша система физической или виртуальной:

$ sudo imvirt
Если ваша система физическая, вывод будет:

Physical
если система виртуальная, вы увидите:

KVM

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *