Автоматическое обновление пакетов безопасности на сервере Linux настраивается через инструмент unattended-upgrades на Debian/Ubuntu или yum-cron/dnf-automatic на RHEL/CentOS/Fedora, который загружает и устанавливает критические обновления без вмешательства администратора. Это предотвращает уязвимости и экономит время на ручное администрирование сервера.
Зачем нужно автоматическое обновление безопасности
- Защита от известных уязвимостей и киберугроз, которые появляются ежедневно
- Снижение рисков несанкционированного доступа и компрометации данных
- Экономия времени администратора на постоянный мониторинг и ручные обновления
- Соответствие требованиям безопасности и стандартам (PCI DSS, SOC 2, ISO 27001)
- Автоматическое перезагружение сервера при необходимости без простоя основных сервисов
- Ведение логов всех обновлений для аудита и отчётности
Пошаговая инструкция для Debian/Ubuntu
- Подключитесь к серверу по SSH с правами root или используйте
sudo. - Обновите список пакетов командой
apt update. - Установите пакет
unattended-upgradesкомандойapt install unattended-upgrades apt-listchanges -y. - Откройте конфигурационный файл в редакторе:
nano /etc/apt/apt.conf.d/50unattended-upgrades. - Раскомментируйте (удалите
//в начале) строкуUnattended-Upgrade::Allowed-Originsи убедитесь, что там указаны источники обновлений вашей ОС. - Найдите строку
Unattended-Upgrade::Package-Blacklistи добавьте критичные пакеты, которые НЕ должны обновляться автоматически (например, ядро системы). - Включите автоматическую перезагрузку, раскомментировав
Unattended-Upgrade::Automatic-Reboot "true";. - Установите время перезагрузки строкой
Unattended-Upgrade::Automatic-Reboot-Time "02:00";(или другое удобное время). - Сохраните файл (в nano:
Ctrl+O,Enter,Ctrl+X). - Откройте файл
/etc/apt/apt.conf.d/20auto-upgradesкомандойnano /etc/apt/apt.conf.d/20auto-upgrades. - Убедитесь, что там присутствуют строки:
APT::Periodic::Update-Package-Lists "1";APT::Periodic::Download-Upgradeable-Packages "1";APT::Periodic::AutoclassifySecurityUpdates "true";APT::Periodic::Unattended-Upgrade "1"; - Сохраните файл и закройте редактор.
- Включите и запустите сервис командой
systemctl enable unattended-upgrades && systemctl start unattended-upgrades. - Проверьте статус сервиса командой
systemctl status unattended-upgrades. - Проверьте логи обновлений командой
tail -f /var/log/unattended-upgrades/unattended-upgrades.log.
Пошаговая инструкция для RHEL/CentOS/Fedora
- Подключитесь к серверу по SSH с правами root.
- Установите пакет
dnf-automatic(для Fedora/RHEL 8+) командойdnf install dnf-automatic -yилиyum-cron(для CentOS 7) командойyum install yum-cron -y. - Откройте конфигурационный файл:
nano /etc/dnf/automatic.conf(для dnf) илиnano /etc/yum/yum-cron.conf(для yum). - Найдите параметр
apply_updatesи установите значениеyesдля автоматической установки обновлений. - Установите время проверки обновлений, отредактировав параметр
random_sleep(максимальная задержка в минутах). - Включите уведомления по электронной почте, отредактировав параметры
email_fromиemail_to. - Сохраните файл и закройте редактор.
- Для dnf: включите и запустите таймер командой
systemctl enable dnf-automatic.timer && systemctl start dnf-automatic.timer. - Для yum: включите и запустите сервис командой
systemctl enable yum-cron && systemctl start yum-cron. - Проверьте статус командой
systemctl status dnf-automatic.timer(dnf) илиsystemctl status yum-cron(yum). - Просмотрите логи обновлений командой
cat /var/log/dnf.log(dnf) илиcat /var/log/yum.log(yum).
Часто задаваемые вопросы
Как отключить автоматические перезагрузки сервера? Установите значение Unattended-Upgrade::Automatic-Reboot "false"; в конфигурационном файле и перезагрузитесь командой systemctl restart unattended-upgrades.
Почему обновления не устанавливаются, хотя сервис включен? Проверьте логи командой tail -100 /var/log/unattended-upgrades/unattended-upgrades.log, убедитесь, что в Allowed-Origins указаны корректные источники репозиториев вашей ОС и что пакеты не добавлены в чёрный список.
Можно ли исключить определённые пакеты от автоматического обновления? Да, добавьте названия пакетов в параметр Unattended-Upgrade::Package-Blacklist в кавычках через точку с запятой, например: "linux-image*"; "docker*";