На четырёх серверах автора статьи unattended-upgrades был установлен и включён, таймеры apt срабатывали по расписанию, но с июля служба не поставила ни одного пакета. Проблему заметили 2 ноября, когда панель начала сверять установленные пакеты с базой уязвимостей Canonical: на каждом сервере оказалось от 53 до 58 пакетов, для которых исправление уже вышло, но установлено не было.
Среди них openssl версии 3.0.13-0ubuntu3.11 при исправленной 3.0.13-0ubuntu3.16, а также glibc, openssh, mysql-8.0 и brotli. Серверы были созданы 20 июля из образа хостера, в файле источников которого не оказалось строки с noble-security: при сборке образа источники, судя по всему, перевели на российское зеркало и потеряли строфу с безопасностью.
Исправления безопасности Ubuntu публикуются в noble-security, часть из них затем попадает в noble-updates, а unattended-upgrades по умолчанию берёт пакеты только из самого релиза и из -security. Поэтому исправления из noble-updates apt видит, но unattended-upgrades их пропускает, а те, что есть только в noble-security, сервер не видит вовсе. После возврата стандартной строки источников на серверах установилось от 182 до 197 пакетов.
Ещё одна ловушка — мониторинг: apt помечает обновление безопасности по карману-источнику, и без подключённого noble-security такой пометки нет ни у одного пакета. Панель считала обновления безопасности по этой пометке и показывала ноль при 197 доступных обновлениях.
На серверах другого проекта из готового образа службы apt-daily и apt-daily-upgrade были замаскированы, таймеры apt не срабатывали ни разу, и к моменту проверки там накопилось 118, 19, 14 и 14 обновлений безопасности. Снимать маску стоит только с этих двух служб, поскольку в том же образе намеренно заглушен systemd-networkd.
Третья проблема касается PHP из PPA ondrej/php: его пакеты приходят с origin LP-PPA-ondrej-php, которого нет в стандартном списке, поэтому патч-релизы PHP сами не ставятся. Их разрешают отдельным файлом, запрещая в нём метапакеты без версии, иначе php-fpm из PPA подтянет новую ветку PHP.
После исправления источников на четырёх серверах установилось новое ядро 6.8.0-147, серверы перезагрузили по одному, дольше всех поднимался сервер приложения — около 3 минут. Проверить себя предлагается тремя командами: первая должна вернуть не ноль строк, вторая не должна писать masked, третья показывает, что unattended-upgrades поставил бы сейчас.