Как обновить OpenSSH до версии 9.8p1

ChatGPT – как установить патч OpenSSH 9.8p1
PasterCopy – критическая уязвимость OpenSSH


Ubuntu

Для удобства создал 2 скрипт: 1-ый отработает на текущем старом подключении SSH, а 2-ой на обновлённом сервере но запущенным вручную и временно на порту 2222

Создаём папку в которую скачаем 2 скрипта

mkdir ~/upgrade_OpenSSH_9_8p1
cd ~/upgrade_OpenSSH_9_8p1
wget https://pastercopy.ru/wp-content/uploads/2024/07/script_1
wget https://pastercopy.ru/wp-content/uploads/2024/07/script_2

Запускаем 1-ый

chmod +x script_1
./script_1

Отключаемся от старого сервера, далее работаем в терминале на 2222 порту

Запускаем 2-ой скрипт

cd ~/upgrade_OpenSSH_9_8p1
chmod +x script_2
sudo ./script_2

Далее проверьте статус службы SSH:



1. Подготовка системы

Обновите все пакеты системы до последних версий:

sudo apt update
sudo apt upgrade -y

2. Установка зависимостей

Установите необходимые зависимости для компиляции OpenSSH:

sudo apt install -y build-essential zlib1g-dev libssl-dev libpam0g-dev

3. Скачивание исходного кода OpenSSH 9.8p1

Создаём папку в которой будем собирать новую версию OpenSSH из исходных кодов:

mkdir ~/project_OpenSSH_9_8p1
cd ~/project_OpenSSH_9_8p1

Перейдите на официальный сайт OpenSSH и скачайте исходный код, или используйте команду wget для загрузки архива:

wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz

Распакуйте загруженный архив:

tar -xzf openssh-9.8p1.tar.gz
cd openssh-9.8p1

4. Конфигурация и компиляция

Сконфигурируйте, скомпилируйте и установите OpenSSH:

./configure --with-pam --with-md5-passwords
make
sudo make install

5. Удаляем старую пакетную версию OpenSSH и переходим на новую

Создайте резервную копию текущих конфигурационных файлов:

sudo cp -r /etc/ssh /etc/ssh.bak

Запустите новый сервер вручную:

sudo /usr/local/sbin/sshd -f /etc/ssh/sshd_config -p 2222

Подключитесь к новому серверу (вариант для Putty):

putty.exe user@IP_сервера -pw пароль -P 2222

отключаемся от старого сервера, далее работаем в терминале на 2222 порту:

sudo systemctl stop ssh
sudo systemctl disable ssh
sudo systemctl daemon-reload

Удалите старую версию OpenSSH:

sudo apt remove -y openssh-server openssh-client

Приступаем к переходу на новую версию OpenSSH

sudo rm /etc/systemd/system/ssh.service

sudo mcedit /etc/systemd/system/ssh.service

[Unit]
Description=OpenBSD Secure Shell server
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target auditd.service
ConditionPathExists=!/etc/ssh/sshd_not_to_be_run

[Service]
EnvironmentFile=-/etc/default/ssh
ExecStartPre=/usr/local/sbin/sshd -t -f /etc/ssh/sshd_config
ExecStart=/usr/local/sbin/sshd -D -f /etc/ssh/sshd_config
ExecReload=/usr/local/sbin/sshd -t -f /etc/ssh/sshd_config
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartPreventExitStatus=255
Type=notify
RuntimeDirectory=sshd
RuntimeDirectoryMode=0755

[Install]
WantedBy=multi-user.target
Alias=sshd.service

Перезагрузите конфигурацию systemd:

sudo systemctl daemon-reload

Включите службу, чтобы она запускалась автоматически при загрузке:

sudo systemctl enable ssh

Запустите службу:

sudo systemctl start ssh

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

sudo systemctl status ssh

Проверьте, что служба включена для автозапуска:

sudo systemctl is-enabled ssh

вы должны увидеть: enabled

После выполнения этих шагов, перезагрузите систему и убедитесь, что SSH-сервер автоматически запускается:

sudo reboot

Теперь ваша служба SSH, собранная из исходников, будет автоматически запускаться при каждой загрузке системы.

6. Шаги для остановки SSH-сервера на порту 2222

1) Найдите PID (идентификатор процесса) SSH, использующий порт 2222. Для этого вы можете использовать команду netstat или ss:

sudo netstat -tulnp | grep :2222

или

sudo ss -tulnp | grep :2222

Предположим что PID процесса равен 1234

2) После нахождения PID вы можете завершить процесс с помощью команды kill:

sudo kill 1234

Если процесс не завершится, вы можете использовать kill -9, чтобы принудительно завершить его:

sudo kill -9 1234

Архив


Приступаем к переходу на новую версию OpenSSH

Для начала можно убедиться что старая служба погасла:

sudo systemctl is-enabled ssh

вывод на экране:

masked

Статус masked означает, что служба была явно отключена и даже не может быть случайно запущена. Это достигается путем создания символической ссылки на /dev/null, что предотвращает запуск службы.

Чтобы исправить это и настроить службу SSH на автоматический запуск, выполните следующие шаги:

1. Размаскируйте службу SSH:

sudo systemctl unmask ssh

2. Создаём символическую ссылку на новую версию sshd и включаем службу SSH для автозапуска:

sudo ln -sf /usr/local/sbin/sshd /usr/sbin/sshd
sudo systemctl enable ssh

3. Запустите службу SSH:

sudo systemctl start ssh

4. Проверьте статус службы SSH:

sudo systemctl status ssh

5. Проверьте, что служба включена для автозапуска:

sudo systemctl is-enabled ssh

Теперь вы должны увидеть: enabled

После выполнения этих шагов, перезагрузите систему и убедитесь, что SSH-сервер автоматически запускается:

sudo reboot

После перезагрузки, проверьте статус службы SSH:

sudo systemctl status ssh

Если все настроено правильно, служба SSH будет запущена и включена для автозапуска.