服务器在做漏扫时发现openssh有几个高危漏洞,现在需要将openssh版本升级到9.4p1
查看openssh版本号
ssh -V
环境准备下载相关依赖和命令
yum install wget gcc openssl-devel pam-devel rpm-build zlib-devel -y
现有openssl1.0.2k升级openssl到1.1.1t
下载安装包
wget https://www.openssl.org/source/openssl-1.1.1t.tar.gz --no-check-certificate
解压
tar zxvf openssl-1.1.1t.tar.gz -C /usr/local/
cd /usr/local/openssl-1.1.1t/
编译安装
./config --prefix=/usr/local/openssl
执行完看一下回显,是否成功。回显0是无报错
然后执行make
make -j 4
make install
执行完每一步都检查一下回显 echo $?
备份原来的openssl
mv /usr/bin/openssl /usr/bin/openssl-1.0.2
mv /usr/include/openssl/ /usr/include/openssl-1.0.2
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl 配置使用新版本
ln -s /usr/local/openssl/include/openssl/ /usr/include/openssl 配置使用新版本
echo “/usr/local/openssl/lib” >> /etc/ld.so.conf 更新动态链接库数据
chmod 755 -R /usr/local/openssl 给对应文件提权
ldconfig -v 更新缓存库
openssl version -a 此时查看版本号报下面错误
这是因为openssl库的位置不正确造成的,需重新指定和配置openssl库的位置
ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/
openssl version 版本号
下面升级openssh
rpm -qa | grep openssh 查看当前安装包
先备份当前的ssh
mv /etc/ssh/ /etc/ssh.bak && mv /usr/bin/ssh /usr/bin/ssh.bak && mv /usr/sbin/sshd /usr/sbin/sshd.bak
卸载与 openssh 相关的所有 RPM 包
rpm -e --nodeps $(rpm -qa |grep openssh)
此时会显示上面备份的几个文件移除失败不用管
然后在检查一下是否卸载干净
rpm -qa | grep openssh
下载需要安装的openssh
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.4p1.tar.gz --no-check-certificate
如果有需要其他版本请到https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/
tar zxvf openssh-9.4p1.tar.gz 解压
mv openssh-9.4p1 /usr/local/
cd /usr/local/openssh-9.4p1/
开始编译安装
CCFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib64" ./configure --sysconfdir=/etc/ssh --with-zlib --with-ssl-dir=/usr/local/openssl
CCFLAGS="-I/usr/local/include":指定 C 编译器的附加选项,其中 -I 表示添加包含文件搜索路径,/usr/local/include 是要添加的路径。
LDFLAGS="-L/usr/local/lib64":指定链接器的附加选项,其中 -L 表示添加库文件搜索路径,/usr/local/lib64 是要添加的路径。
./configure:运行 configure 脚本,该脚本用于检查系统环境并生成相应的 Makefile。
--sysconfdir=/etc/ssh:指定 OpenSSH 的配置文件目录为 /etc/ssh。
--with-zlib:启用对 zlib 压缩库的支持,以便在传输过程中进行数据压缩。
--with-ssl-dir=/usr/local/openssl:指定 OpenSSL 库的安装路径为 /usr/local/openssl。
执行完了 查看一下回显 echo $?
make -j 4
make install
执行每一步都看一下回显 echo $?
修改一下对应目录的权限
chmod 600 /etc/ssh/*
复制配置文件到对应目录
cp -rf /usr/local/sbin/sshd /usr/sbin/sshd
cp -rf /usr/local/bin/ssh /usr/bin/ssh
cp -rf /usr/local/bin/ssh-keygen /usr/bin/ssh-keygen
cp -ar /usr/local/openssh-9.4p1/contrib/redhat/sshd.init /etc/init.d/sshd
cp -ar /usr/local/openssh-9.4p1/contrib/redhat/sshd.pam /etc/pam.d/sshd.pam
注意新升级的openssh是禁止root用户远程登录的我们这里修改一下配置
vim /etc/ssh/sshd_config 最底部添加
PermitRootLogin yes
X11Forwarding yes
PasswordAuthentication yes
KexAlgorithms diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group1-sha1,curve25519-sha256@libssh.org
sed -i "s/^#Port/Port/g" /etc/ssh/sshd_config 打开22端口的注释
chmod 755 /etc/init.d/sshd
systemctl enable sshd 设置开启自启
systemctl restart sshd 重启ssh服务
systemctl status sshd 查看ssh服务状态
ssh -V 在次查看版本号
到这里就全部升级好了