Автообновления безопасности (unattended-upgrades)
Большинство взломов эксплуатируют давно закрытые уязвимости — просто патч не установили вовремя. unattended-upgrades ставит security-обновления сам, ночью, без вашего участия. Настроим за десять минут.
Содержание
Что делает unattended-upgrades
['Пакет автоматически скачивает и устанавливает обновления из выбранных репозиториев — обычно только security. Это снижает окно уязвимости с недель до часов и не требует вашего внимания. Работает он через systemd-таймеры apt-daily и apt-daily-upgrade, которые запускаются раз в сутки со случайным сдвигом, чтобы не грузить зеркала одновременно.', 'Важно понимать границу: обновления безопасности почти всегда безопасны для продакшена, а вот полное обновление всех пакетов может что-то сломать — сменить мажорную версию демона, перезаписать конфиг. Поэтому по умолчанию включают именно security-канал, а остальные обновления накатывают вручную в плановое окно.', 'Проверить, что таймеры активны, можно так:', 'systemctl list-timers | grep apt\nsystemctl status apt-daily-upgrade.timer']
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.
Арендовать VPS с root-доступомУстановка и включение
['На Debian/Ubuntu ставим пакет и сопутствующий apt-listchanges:', 'apt update\napt install -y unattended-upgrades apt-listchanges\ndpkg-reconfigure -plow unattended-upgrades', 'Последняя команда создаёт файл /etc/apt/apt.conf.d/20auto-upgrades с включённым автоскачиванием и установкой. Проверить его содержимое:', 'cat /etc/apt/apt.conf.d/20auto-upgrades', 'APT::Periodic::Update-Package-Lists "1";\nAPT::Periodic::Unattended-Upgrade "1";']
Настройка правил обновления
['Основной конфиг — /etc/apt/apt.conf.d/50unattended-upgrades. Откройте его и убедитесь, что включён только security-источник:', 'Unattended-Upgrade::Allowed-Origins {\n "${distro_id}:${distro_codename}-security";\n "${distro_id}ESMApps:${distro_codename}-apps-security";\n};', 'Полезные опции — автоудаление ненужных зависимостей и уведомление на почту:', 'Unattended-Upgrade::Remove-Unused-Dependencies "true";\nUnattended-Upgrade::Mail "admin@example.com";\nUnattended-Upgrade::MailReport "on-change";', 'Если какой-то пакет обновлять нельзя (например, вы держите конкретную версию nginx или MySQL под приложение), внесите его в чёрный список — тогда автомат его не тронет:', 'Unattended-Upgrade::Package-Blacklist {\n "nginx";\n "mysql-server";\n};', 'Опция MailReport со значением on-change шлёт письмо только когда что-то реально обновилось — почтовый ящик не забивается ежедневными отчётами «изменений нет».']
Автоперезагрузка после обновления ядра
['Обновление ядра или libc требует перезапуска. Разрешите автоперезагрузку в тихое время, чтобы не держать в памяти уязвимый код:', 'Unattended-Upgrade::Automatic-Reboot "true";\nUnattended-Upgrade::Automatic-Reboot-Time "04:00";', 'Если перезагрузка нежелательна (например, база без репликации), оставьте false и следите за флагом /var/run/reboot-required вручную. На тарифах MAATRIX ежедневные бэкапы делают ночной ребут менее рискованным — есть к чему откатиться.']
Проверка и тестовый прогон
['Прогоните обновление в режиме симуляции — увидите, что было бы установлено, ничего не меняя:', 'unattended-upgrade --dry-run --debug', 'Логи работы лежат отдельно:', 'cat /var/log/unattended-upgrades/unattended-upgrades.log\ntail -f /var/log/unattended-upgrades/unattended-upgrades.log', 'Проверить, требуется ли перезагрузка после патчей:', '[ -f /var/run/reboot-required ] && echo "Нужен ребут" || echo "OK"', 'Раз в пару месяцев полезно заглянуть в лог и убедиться, что автомат действительно работает, а не молча падает из-за сломанного зеркала или конфликта пакетов. Если видите строки об удержанных (kept back) обновлениях — их придётся накатить руками командой apt upgrade в плановое окно.']
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.
Арендовать VPS с root-доступомЧастые вопросы
Не сломает ли автообновление боевой сервер?
Security-обновления тщательно тестируются мейнтейнерами и меняют минимум. Риск низкий. Полные обновления (dist-upgrade) в автомат не ставьте.
Как отключить автоперезагрузку?
Задайте Unattended-Upgrade::Automatic-Reboot "false" в 50unattended-upgrades и перезагружайте вручную в удобное окно.
Работает ли это на CentOS/AlmaLinux?
Там аналог — dnf-automatic. Ставится через dnf install dnf-automatic и включается systemd-таймером dnf-automatic.timer.