背景
云服务器检测报ssh漏洞,决定升级解决。
涉及的漏洞有:
OpenSSH 安全漏洞(CVE-2023-38408)
OpenSSH远程代码执行漏洞(CVE-2024-6387)
OpenSSH 安全漏洞(CVE-2023-51767)
OpenSSH 安全漏洞(CVE-2023-48795)
OpenSSH 安全漏洞(CVE-2023-51385)
OpenSSH 安全漏洞(CVE-2023-51384)
安装telnet
为防止在ssh安装失败导致无法远程连接服务器,可以安装telnet远程连接。
apt -y install telnetd
apt -y install xinetd
service xinetd status
用户登录成功示例:
安装openssh
备份旧ssh配置文件及目录
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
mv /etc/ssh/ /home/ssh-bak
mv /usr/bin/ssh /usr/bin/ssh.bak
mv /usr/sbin/sshd /usr/sbin/sshd.bak
mv /etc/pam.d/sshd /etc/pam.d/sshd.old
卸载旧版本
- 卸载安装
sudo apt-get remove openssh-server openssh-client --purge -y
- 停掉进程
ps -ef|grep sshd
kill id
安装必要的构建工具
sudo apt install build-essential libssl-dev zlib1g-dev libedit-dev libpam0g-dev libwrap0-dev
下载并解压文件
wget https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz
tar -zxvf openssh-9.8p1.tar.gz
编译安装openssh
cd openssh-9.8p1
./configure --prefix=/usr/ssh/ --sysconfdir=/etc/ssh
make
sudo make install
将ssh的bin加入环境变量
# 修改 ~/.bashrc文件,将以下语句加入文件末尾
export PATH=$PATH:/usr/ssh/bin
#使配置生效
source ~/.bashrc
手动编写sshd.service
- 编辑/etc/systemd/system/sshd.service
[Unit]
Description=OpenSSH server daemon
After=network.target
[Service]
ExecStart=/usr/ssh/sbin/sshd -D
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
Type=simple
[Install]
WantedBy=multi-user.target
- 重新加载 systemd 配置
sudo systemctl daemon-reload
- 启用并启动 sshd 服务
sudo systemctl enable sshd
- 启动 sshd 服务
sudo systemctl start sshd
- 检查服务状态
sudo systemctl status sshd
重启,验证安装
sudo systemctl enable ssh
sudo systemctl restart sshd
ssh -V
报错分析
- Privilege separation user sshd does not exist 在执行make install时报错内容如下:
/usr/ssh/sbin/sshd -t -f /etc/ssh/sshd_config
Privilege separation user sshd does not exist
make: [Makefile:396: check-config] Error 255 (ignored)
解决办法: 修改/etc/passwd文件,在其中加入:
sshd:x:109:65534::/var/run/sshd:/usr/sbin/nologin
修改后重新make install即可。