Авторские статьи

Proxmox VE сглаживает ситуацию с Meltdown и Spectre.


Две уязвимости Meltdown и Spectre, которые грянули, как гром среди ясного неба в январе 2018, вынудили латать их на стороне операционных систем. Пла́той за разделение памяти ядра от пользовательского пространства стало падение производительности. Различные проекты по-разному оценивали падение, но чаще всего мелькали цифры о 5-30%. Беда больнее всего ударила по системам виртуализации, так как дыры Meltdown и Spectre позволяют читать информацию одной виртуальной машины из другой или выудить информацию у хоста-гипервизора. Проект Proxmox VE, который стоит на плечах Debian GNU/Linux и, естественно, использует гипервизор KVM + Qemu, предлагает смягчить падение производительности за счёт Process-context identifier (PCID).

Статья устарела и носит исторический характер, описывая, как в разработчики программно сглаживали аппаратную проблему-уязвимость. В современных дистрибутивах нужно добавить параметр ядра mitigations=off. В мире Debian откройте файл sudo -e /etc/default/grub, добавьте GRUB_CMDLINE_LINUX="mitigations=off". Выполните sudo update-grub


Напомню вам, что в ядре Linux технология разделения памяти ядра от пользовательского пространства именуется Kernel Page-Table Isolation (KPTI) (рабочие названия KAISER, UASS, FUCKWIT).

Для управления поведением KPTI введены два параметра к ядру Linux.

nopti		[X86-64] Disable kernel page table isolation

И pti=значение

pti=		[X86_64]
		Control user/kernel address space isolation:
		on - enable
		off - disable
		auto - default setting

Если вам совсем не страшно, то можно отказаться от защиты KPTI и вернуть себе потерянную производительность - nopti или pti=off. Но мне кажется, что мир уже безвозвратно изменился и дальше многие вещи будут делаться под углом "таблицы ядра и пользователя разделены". Итак, специалисты говорят, что процессоры с Processor-Context ID позволяют не так упасть производительности и не нужно напрасно жертвовать безопасностью.

Если вы используете Proxmox VE, как систему виртуализации, то вначале подверьтесь на ваших серверах - grep pcid /proc/cpuinfo Если вывод не пустой, то всё отлично! Выключите все виртуальные машины, штатно обновите все сервера Proxmox VE и перезагрузитесь. Ваши версии должны быть не ниже.
pveversion

pve-manager/5.1-42/724a6cb3 (running kernel: 4.13.13-5-pve)

Если виртуальная машина с 64 битной операционной системой использует процессор типа host, то есть вы его отдали "как есть" - без эмуляции, то делать больше ничего не нужно. Если вы используете эмуляцию типа kvm64, то выставьте галочку PCID. Можете вызвать в данном месте справку и найти по PCID Flag детальную информацию на английском языке.

Proxmox VE PCID

Теперь включите виртуальную машину и обновите её штатно. В ситуации с Linux серверами вам нужно получить последние ядра линукс, в которых появилась защита KPTI. Проверьте вашего 64 битного виртуального гостя - grep -q "cpu_insecure\|cpu_meltdown\|kaiser" /proc/cpuinfo && echo "patched :)" || echo "unpatched :("

Для админов Ubuntu 16.04 Server LTS - sudo apt update && sudo apt upgrade, а для админов Ubuntu 14.04 Server LTS, чья поддержка будет до 2019, настоятельно рекомендую задействовать классную фичу LTS Enablement Stacks и получить новые ядра, оставаясь в рамках релиза 14.04 - sudo apt-get install --install-recommends linux-generic-lts-xenial

Теперь вы в безопасности и не сильно потеряли в быстродействии. Тестов "до-после" не делал, но если поделитесь - буду благодарен. Если вы ещё не перешли на современную ветку, то настоятельно рекомендую - много вкусного!



Дата последней правки: 2023-12-18 14:58:19

RSS vasilisc.com   


Разделы

Главная
Новости
Ворох бумаг
Видео Linux
Игры в Linux
Безопасность
Статьи об Astra Linux
Статьи о FreeBSD
Статьи об Ubuntu
Статьи о Snappy
Статьи об Ubuntu Phone
Статьи о Kubuntu
Статьи о Xubuntu
Статьи о Lubuntu
Статьи об Open Source
Карта сайта