- Вопрос или проблема
- Ответ или решение
- Шаг 1: Установите необходимые инструменты
- Шаг 2: Загрузите и распакуйте исходный код OpenSSH
- Шаг 3: Удалите старую версию OpenSSH
- Шаг 4: Соберите и установите OpenSSH
- Шаг 5: Настройте службу sshd
- Шаг 6: Перезапустите систему управления службами и запустите новую службу
- Шаг 7: Убедитесь, что служба работает
Вопрос или проблема
Я работаю над устранением некоторых уязвимостей в нашей среде, и одна из них заключается в том, что мы используем OpenSSH 8.9. Наша команда безопасности посоветовала нам обновиться до 9.3, но я не вижу никаких указаний на то, что этот пакет доступен для Ubuntu 22.04. Есть ли способ обновиться до этой версии?
Ваша команда безопасности, вероятно, полагается в частности на результаты сканирования, которые обычно неверны.
Ubuntu исправляет уязвимости CVE с помощью патчей, отобранных и применённых к версии в репозиториях Ubuntu, и, насколько мне известно, нет CVE, которые не были бы уже исправлены в упаковке. Проверьте трекер CVE для получения дополнительной информации и попросите вашу ‘команду безопасности’ научиться не полагаться исключительно на свои инструменты и на самом деле проверять, исправлены ли логируемые CVE и т.д. (Вот почему мы используем Rapid7 InsightVM для проверки безопасности всех наших систем с доступом по средствам агента у моего работодателя).
Имейте в виду, что некоторые CVE, вероятно, исправлены, в то время как другие не относятся к делу и т.д., так что вам и вашей команде безопасности нужно найти конкретные CVE в трекере и выяснить, есть ли патч для используемой версии Ubuntu. Если патч есть, будет указана версия пакета с патчем. Затем вы можете проверить apt policy openssh-server
и узнать, какая версия OpenSSH-сервера установлена на системе. Если она старше версии пакета, для которого есть патч, вам нужно выполнить обновления на ваших системах.
(Отказ от ответственности: Я профессионал в области ИТ-безопасности, и этот ‘недоразумение’ о “вы ДОЛЖНЫ обновиться до последней версии OpenSSH, иначе вы не в безопасности!” — это мнение, которому команды безопасности должны перестать следовать слепо, и им нужно научиться понимать, как на самом деле работает инфраструктура и обновляется с учетом конкретных систем, которые они поддерживают. Это известная проблема в мире ИТ-безопасности, но немного дополнительного исследования могло бы помочь решить ее в большинстве кругов.)
Если вы намерены обновиться до новой версии OpenSSH, чтобы исправить это, вам нужно вручную скомпилировать OpenSSH и установить его на пострадавшие системы. Это не будет тривиально и плохо документируется здесь.
Чтобы установить сервер ssh с исправленной уязвимостью версии 9.8p1 на Ubuntu:
Скачайте его:
wget https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz
Удалите существующую установку:
sudo systemctl stop sshd
sudo apt-get remove openssh-server openssh-client
Установите инструменты для сборки:
sudo apt update
sudo apt install -y build-essential zlib1g-dev libssl-dev libpam0g-dev libselinux1-dev libwrap0-dev libedit-dev libbsd-dev autoconf automake libtool pkg-config wget curl git
Разархивируйте и соберите:
tar zxvf openssh-9.8p1.tar.gz
cd openssh-9.8p1
./configure
make
sudo make install
Настройте службу:
sudo nano /etc/systemd/system/sshd.service
Вставьте это в файл:
[Unit]
Description=OpenSSH server daemon
After=network.target
[Service]
ExecStart=/usr/local/sbin/sshd -D
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
Сохраните и закройте (ctrl+x y enter)
Перезагрузите демон, запустите и включите службу:
sudo systemctl daemon-reload
sudo systemctl start sshd
sudo systemctl enable sshd
Теперь у меня возникли проблемы на этом этапе, но всё, что мне было нужно, это размаскировать ssh:
sudo systemctl unmask ssh
Затем повторите перезагрузку демона, запуск и включение
Проверьте статус:
sudo systemctl status sshd
Готово!
Ответ или решение
Для того чтобы обновить OpenSSH с версии 8.9 до 9.3 на Ubuntu 22.04.2 LTS, выполните следующие шаги. Обратите внимание, что версия OpenSSH 9.3 может не быть доступна в стандартных репозиториях Ubuntu, поэтому потребуется компиляция из исходных кодов. Также стоит учитывать, что при установке программного обеспечения вне стандартных репозиториев вы берете на себя дополнительный риск и ответственность.
Шаг 1: Установите необходимые инструменты
Сначала необходимо установить необходимые зависимости и инструменты для сборки:
sudo apt update
sudo apt install -y build-essential zlib1g-dev libssl-dev libpam0g-dev libselinux1-dev libwrap0-dev libedit-dev libbsd-dev autoconf automake libtool pkg-config wget curl git
Шаг 2: Загрузите и распакуйте исходный код OpenSSH
Загрузите исходный код необходимой версии OpenSSH с официального сайта:
wget https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.3.tar.gz
tar zxvf openssh-9.3.tar.gz
cd openssh-9.3
Шаг 3: Удалите старую версию OpenSSH
Остановите и удалите существующую версию OpenSSH:
sudo systemctl stop sshd
sudo apt-get remove openssh-server openssh-client
Шаг 4: Соберите и установите OpenSSH
Теперь выполните следующие команды для конфигурации, сборки и установки OpenSSH:
./configure
make
sudo make install
Шаг 5: Настройте службу sshd
Создайте файл конфигурации для системы systemd
, чтобы управлять службой sshd:
sudo nano /etc/systemd/system/sshd.service
Вставьте следующее содержимое в файл:
[Unit]
Description=OpenSSH server daemon
After=network.target
[Service]
ExecStart=/usr/local/sbin/sshd -D
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
Сохраните и закройте файл (нажмите Ctrl + X
, затем Y
и Enter
).
Шаг 6: Перезапустите систему управления службами и запустите новую службу
Обновите систему управления службами, запустите и включите службу sshd:
sudo systemctl daemon-reload
sudo systemctl start sshd
sudo systemctl enable sshd
Шаг 7: Убедитесь, что служба работает
Проверьте статус службы sshd:
sudo systemctl status sshd
Если служба не запускается, вам может потребоваться выполнить следующие команды для устранения проблем:
sudo systemctl unmask ssh
sudo systemctl daemon-reload
sudo systemctl start sshd
sudo systemctl enable sshd
Если вы внимательно выполнили все вышеперечисленные шаги, то теперь у вас установлена версия OpenSSH 9.3 на Ubuntu 22.04.2 LTS. Обязательно протестируйте подключение к SSH и убедитесь, что всё работает корректно.