Модуль 1: Linux, Автоматизация и Бэкапы

Безопасное обновление системных пакетов в Linux

1. Проверка доступных обновлений

Перед установкой любых пакетов проверяется индекс репозиториев и список доступных обновлений.

Для Ubuntu / Debian:

# Обновление индекса пакетов
sudo apt update

# Вывод списка доступных обновлений
apt list --upgradable
Анализ списка пакетов: При выводе apt list --upgradable обращайте особое внимание на 3 категории высокого риска:
  • Ядро и системные библиотеки: linux-image-generic, libc6 (glibc), systemd. Требуют перезагрузки сервера.
  • Сетевые сервисы и безопасность: openssh-server, nginx, openssl. Требуют перезапуска служб или сокетов.
  • Утилиты окружения: python3, snapd, qemu-guest-agent.

Для RHEL / AlmaLinux / Rocky Linux:

sudo dnf check-update

2. Подготовка и обязательные чек-поинты

Перед выполнением команды обновления ответьте на 4 контрольных вопроса:

  1. Snapshot / Бэкап: Сделан ли снимок виртуальной машины (в Proxmox, VirtualBox, панели VPS) или бэкап конфигураций?
  2. Maintenance Window: Выполняется ли операция в согласованное окно обслуживания?
  3. Staging: Проверялись ли эти обновления на тестовом стенде?
  4. Резервирование (Rolling Update): Выведен ли сервер из балансировщика нагрузки (если работает в кластере)?

Создание бэкапа

  • Через панель управления VPS / Гипервизор:
    • Proxmox VE: VM -> Snapshots -> Take Snapshot.
    • VirtualBox: VM -> Snapshots -> Take.
    • Облачные панели (Hostpro / Virtualizor): Раздел List VPS -> Ваша VM -> Snapshots -> Create Snapshot (или раздел Резервні копії).
  • Альтернатива (Быстрый бэкап конфигураций из консоли):
    Если создание снимка в панели недоступно или зависает, сохраните критические конфигурации из терминала:
    sudo tar -czvf /tmp/etc_backup_$(date +%F).tar.gz /etc

3. Выполнение обновления

Для Ubuntu / Debian:

sudo apt upgrade -y

Важно: Используется apt upgrade, а не dist-upgrade / full-upgrade, чтобы случайно не удалить установленные зависимости без прямого указания.

При обновлении SSH-сервера может появиться диалоговое окно Configuring openssh-server относительно /etc/ssh/sshd_config:
Выбирайте keep the local version currently installed, чтобы сохранить существующие кастомные настройки доступа и безопасности (порт, запрет root-входа и т.д.). Новый дефолтный файл сохранится рядом как sshd_config.dpkg-dist.

Для RHEL / AlmaLinux:

sudo dnf upgrade -y

4. Пост-проверка и перезагрузка

  1. Проверка необходимости перезагрузки:
    cat /var/run/reboot-required
    Если файл существует (*** System restart required ***), обновилось ядро (linux-image) или базовые библиотеки. Выполните перезагрузку:
    sudo reboot
  2. Проверка зависших процессов (если reboot не требуется):
    sudo needrestart
    # Для RHEL:
    sudo needs-restarting -s
  3. Проверка статуса ключевых сервисов:
    uname -r                   # Проверка версии ядра (например, 6.8.0-137-generic)
    systemctl status nginx     # Веб-сервер
    systemctl status ssh       # SSH-сервер

5. Устранение неполадок: Восстановление SSH-доступа после обновления

В Ubuntu 24.04 LTS служба SSH управляется через активацию по сокету (ssh.socket). Если после перезагрузки сервер выдает ошибку Connection refused на 22 порту:

Шаг 1. Вход через Emergency Console (VNC)

  1. Зайдите в панель управления хостингом (Virtualizor / Hostpro).
  2. Откройте VNC / Web Console и авторизуйтесь под своим пользователем.

Шаг 2. Диагностика и запуск служб SSH

Проверьте статус сокета и службы:

sudo systemctl status ssh.socket
sudo systemctl status ssh

Если службы отключены (disabled / inactive), включите их:

sudo systemctl unmask ssh
sudo systemctl enable --now ssh.socket
sudo systemctl enable --now ssh.service

Шаг 3. Проверка прослушиваемого порта

Проверьте, на каком порту зафиксировался SSH:

sudo ss -tulpn | grep ssh
  • Если SSH перешел на кастомный порт (например, 2311):
    Подключитесь с локального ПК с указанием порта:
    ssh Niko@185.67.2.242 -p 2311
  • Возврат на стандартный порт 22:
    1. Проверьте параметр в конфигурации:
      sudo grep -i "Port" /etc/ssh/sshd_config
    2. Отредактируйте /etc/ssh/sshd_config, установив Port 22:
      sudo nano /etc/ssh/sshd_config
    3. Перезапустите сокет и службу:
      sudo systemctl daemon-reload
      sudo systemctl restart ssh.socket
      sudo systemctl restart ssh

Шаг 4. Контрольная проверка

Убедитесь, что SSH снова принимает соединения на порту 22:
sudo ss -tulpn | grep ssh
# Вывод должен содержать: *:22 или [::]:22