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 будет запущена и включена для автозапуска.
