Подробный гайд: «Доступ запрещён» к QEMU в Astra Linux

Как исправить ошибку «доступ запрещён» к QEMU в Astra Linux: проверка прав /dev/kvm, группы, настройка МРД и политик безопасности.

2026.08.31                  


Подробный гайд: «Доступ запрещён» к QEMU в Astra LinuxПодробный гайд: «Доступ запрещён» к QEMU в Astra Linux

1. Диагностика — определяем, что именно блокирует

Сначала выясним источник ошибки.

# Попытка запуска и точный текст ошибки
qemu-system-x86_64 --version

# Проверка прав на /dev/kvm
ls -la /dev/kvm

# Проверка групп текущего пользователя
id

# Проверка статуса службы МРД (мандатного разграничения доступа)
sudo systemctl status mcsc
# или
sudo /usr/sbin/pdpl --status 2>/dev/null

Типичные варианты ошибок и их причины:

Ошибка Вероятная причина
Could not access KVM kernel module: Permission denied Нет в группе kvm или МРД
qemu: could not open /dev/kvm: Operation not permitted Мандатная метка / политика безопасности
failed to initialize KVM: Permission denied AppArmor / политики ядра
Недостаточно прав для доступа к... Уровень защищённости ОС (МРД)



2. Базовое исправление — группы и права

Добавление пользователя в группы

sudo usermod -aG kvm $USER
sudo usermod -aG libvirt $USER
sudo usermod -aG disk $USER   # только если используется прямой доступ к дискам

Важно: после добавления в группы нужно выйти и заново войти в сессию (или перезагрузиться), либо временно применить:

newgrp kvm

Проверка прав на /dev/kvm

ls -la /dev/kvm
# Ожидается: crw-rw---- 1 root kvm 10, 232 ... /dev/kvm

Если группа не kvm:

sudo chown root:kvm /dev/kvm
sudo chmod 660 /dev/kvm

Для постоянного применения — создаём правило udev:

sudo tee /etc/udev/rules.d/99-kvm.rules <<'EOF'
KERNEL=="kvm", GROUP="kvm", MODE="0660"
EOF

3. Мандатный доступ (МРД) — специфика Astra Linux SE

В Astra Linux Special Edition (уровни «Смоленск», «Орёл», «Брест» и выше) действует МРД (мандатное разграничение доступа). Даже при наличии групп доступ может блокироваться.

Проверка текущего уровня и меток

# Текущий уровень конфиденциальности сессии
cat /proc/self/attr/current

# Метка файла /dev/kvm
ls -Z /dev/kvm 2>/dev/null

# Просмотр политик
sudo mcsc --list 2>/dev/null || sudo pdpl --list 2>/dev/null

Типовые решения МРД

Вариант А: запуск в сессии с нужным уровнем

Если рабочий стол запущен на уровне 0 (неклассифицированный), а устройство имеет метку выше — доступ будет запрещён.

Переключите уровень сессии при входе или:

# Запуск терминала с повышенным уровнем (пример)
sudo -E su -

Вариант Б: изменение мандатных меток устройства

# Установка метки для /dev/kvm (синтаксис зависит от версии МРД)
sudo /usr/sbin/setflabel /dev/kvm 0 2>/dev/null
# или
sudo chcon system_u:object_r:kvm_device_t:s0 /dev/kvm 2>/dev/null

Вариант В: добавление исключения в политику МРД

# Просмотр текущего правила
sudo grep -r kvm /etc/mcsc/ 2>/dev/null
sudo grep -r kvm /etc/pdpl/ 2>/dev/null

# Добавление разрешения (пример, синтаксис зависит от версии)
sudo mcsc --add-rule "allow * qemu* : file { read write execute }" 2>/dev/null
sudo systemctl restart mcsc

Вариант Г: временное отключение МРД для теста (только для диагностики!)

sudo systemctl stop mcsc
# Проверяем, заработал ли QEMU
sudo systemctl start mcsc

В промышленной среде отключать МРД нельзя. Только для локализации проблемы.


4. Настройка libvirt / virt-manager

Если проблема проявляется через virt-manager или virsh:

Добавление в группу и настройка сокета

sudo usermod -aG libvirt $USER
sudo usermod -aG kvm $USER

# Проверка сокета
ls -la /var/run/libvirt/libvirt-sock
# Должен быть доступен группе libvirt

Конфигурация libvirt для доступа без root

sudo tee -a /etc/libvirt/libvirtd.conf <<'EOF'
unix_sock_group = "libvirt"
unix_sock_rw_perms = "0770"
auth_unix_ro = "none"
auth_unix_rw = "none"
EOF

sudo systemctl restart libvirtd

Проверка через virsh

virsh list --all
virsh uri   # должно показать что-то вроде qemu:///system

Если virsh просит пароль или выдаёт Permission denied, проверьте:

sudo systemctl status libvirtd
journalctl -u libvirtd --since "5 minutes ago" | tail -50

5. Проверка и настройка политик безопасности ядра

AppArmor (если используется)

# Проверка статуса
sudo aa-status

# Поиск блокировок
dmesg | grep -i apparmor | grep -i qemu | tail -20
journalctl | grep -i apparmor | grep -i qemu | tail -20


Если найдены блокировки:

# Перевод профиля в режим жалоб
sudo aa-complain /usr/bin/qemu-system-x86_64 2>/dev/null
sudo aa-complain /usr/libexec/qemu-kvm 2>/dev/null

# Или создание собственного профиля
sudo aa-genprof qemu-system-x86_64

Проверка модулей ядра

lsmod | grep kvm
# Должно быть: kvm_intel или kvm_amd, и kvm

# Если нет — загрузка вручную
sudo modprobe kvm
sudo modprobe kvm_intel   # для Intel
sudo modprobe kvm_amd     # для AMD

Проверка виртуализации в BIOS/UEFI

# Intel
sudo grep -E 'vmx' /proc/cpuinfo

# AMD
sudo grep -E 'svm' /proc/cpuinfo

# Если вывод пуст — виртуализация отключена в BIOS/UEFI

6. Проверка через dmesg и системные журналы

dmesg | grep -iE 'kvm|qemu|denied' | tail -30
journalctl -xe | grep -iE 'qemu|kvm|denied' | tail -30
ausearch -m avc -ts recent 2>/dev/null   # если есть SELinux-аудит

Типичные записи и их значение:

  • audit: type=1400 ... denied { read write } for ... scontext=... tcontext=... — блокировка МРД/мандатной политикой
  • kvm: disabled by bios — виртуализация выключена в BIOS
  • kvm: no hardware support — нет поддержки или отключена

7. Комплексный чек-лист устранения

Выполните по порядку:

# 1. Виртуализация включена?
egrep -c '(vmx|svm)' /proc/cpuinfo   # > 0 — есть поддержка

# 2. Модули загружены?
lsmod | grep kvm

# 3. Права на устройство
ls -la /dev/kvm

# 4. Пользователь в группах
id | grep -oE 'kvm|libvirt'

# 5. МРД активен?
sudo systemctl is-active mcsc 2>/dev/null

# 6. Перезапуск служб
sudo systemctl restart libvirtd
sudo udevadm control --reload-rules && sudo udevadm trigger

# 7. Перелогиниться и проверить
virsh list
qemu-system-x86_64 -enable-kvm -cpu host -m 2048 -nographic

8. Если ничего не помогло

1. Проверьте версию Astra Linux:

   cat /etc/os-release
   astra-version 2>/dev/null

В разных версиях (1.7, 1.8, 2.0) механизмы МРД могут отличаться.

2. Соберите диагностический пакет:

   dmesg > /tmp/dmesg.log
   journalctl -b > /tmp/journal.log
   ls -laZ /dev/kvm > /tmp/kvm_perms.log
   id > /tmp/user_groups.log

3. Проверьте, нет ли конфликтующих гипервизоров:

   sudo systemctl list-units --type=service | grep -iE 'virtualbox|vmware|xen'

4. Обратитесь к документации:

  • /usr/share/doc/astra-doc/ — локальная документация
  • Официальная вики Астра Линукс: wiki.astralinux.ru
  • Раздел «Настройка МРД» и «Работа с QEMU/KVM»

Главный принцип:

В 90% случаев проблема в одном из трёх пунктов — нет группы kvm, блокировка МРД, или выключена виртуализация в BIOS. Начните с них.


Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.


Статью подготовил: Аверко Денис Сергеевич @Nymexis г. Омск (специалист по ЗИ)

Комментарии

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