Linux Labs

Безопасность сервера / Ступень 2 из 10

Обновление есть — уязвимость ещё жива

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 4 из 7 · на машине · 8 мин

Одна библиотека — много служб

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

Общий код программы берут из общих библиотек — файлов .so: OpenSSL, zlib, libc. Библиотека отображается в память каждого процесса, который ей пользуется, и после её обновления каждый из них держит удалённый файл. Перебирать maps всех процессов вручную долго — это делает needrestart: он находит процессы с удалёнными программами и библиотеками и называет их службы.

bash
sudo needrestart -b    # NEEDRESTART-SVC: службы на перезапуск

apt после установки вызывает needrestart сам — так настроено в /etc/apt/apt.conf.d/99needrestart. После dpkg -i его запускают руками.

Упражнение · посмотреть

Найди службы со старой библиотекой

Ночью обновилась библиотека libexpat1 — разбор XML. Посмотри версию пакета и спроси needrestart, каким службам нужен перезапуск.

Сначала предположи

Обновился только пакет libexpat1, пакеты служб не менялись. Какие службы назовёт needrestart?

Теперь начни упражнение, выполни команду и сверь прогноз с выводом.

Войти и начать Машина доступна после входа

Одно обновление перезапуском служб не применить — ядро. Его загружают при старте машины, и работает оно до выключения. Новое ядро ставится рядом со старым, в /boot, а работает то, с которым машина загрузилась: его версию печатает uname -r. needrestart сравнивает их в строках NEEDRESTART-KCUR — работающее ядро — и NEEDRESTART-KEXP — самое новое из установленных. После установки ядра появляется и файл /run/reboot-required: серверу нужна перезагрузка.

Проверь себя 1 вопрос

После ночных обновлений sudo needrestart -b печатает NEEDRESTART-KCUR: 6.8.0-124-generic и NEEDRESTART-KEXP: 6.8.0-130-generic. Что сделаешь?

  • Службы работают поверх ядра, и их перезапуск ядро не меняет: uname -r останется 6.8.0-124-generic.

  • daemon-reexec перезапускает сам systemd, а ядро остаётся прежним: uname -r — 6.8.0-124-generic.

  • Работает ядро из KCUR — 124. Установленное 130 заработает только после загрузки с ним.

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

Ubuntu 24.04
Загрузка…