升级openssh和nginx

需求

因为服务器中正在运行的openssh和nginx版本存在漏洞,需对openssh和nginx进行升级

目前环境

cat /etc/redhat-release
# CentOS Linux release 7.9.2009 (Core)

nginx -V
# built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
# built with OpenSSL 1.0.2k-fips  26 Jan 2017
# TLS SNI support enabled
# configure arguments: --prefix=/usr/local/nginx --with-http_gzip_static_module --with-http_stub_status_module --with-http_ssl_module --with-pcre --with-file-aio --with-http_realip_module --with-stream

openssl version -a
# OpenSSL 1.0.2k-fips  26 Jan 2017
# built on: reproducible build, date unspecified
# platform: linux-x86_64
# options:  bn(64,64) md2(int) rc4(16x,int) des(idx,cisc,16,int) idea(int) blowfish(idx) 
# compiler: gcc -I. -I.. -I../include  -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DKRB5_MIT -m64 -DL_ENDIAN -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches   -m64 -mtune=generic -Wa,--noexecstack -DPURIFY -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DRC4_ASM -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
# OPENSSLDIR: "/etc/pki/tls"

ssh -V
# OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017

目标

将openssl版本升级为 openssl-1.1.1w

将openssh版本升级为openssh-9.8p1

将nginx版本升级为nginx-1.26.2

步骤

一、openssl升级

pwd
# /usr/local

# 下载openssl对应版本
wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1w.tar.gz

# 解压
tar xzvf openssl-1.1.1w.tar.gz

cd openssl-1.1.1w/

# 检查环境
./config --prefix=/usr/local/openssl

# 编译
make

# 编译安装
make install

cd /usr/local

# 检查函数库
ldd /usr/local/openssl/bin/openssl

# 添加所缺函数库
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf

# 更新函数库
ldconfig -v

# 查看新安装的版本
openssl/bin/openssl version

 
# 查看旧版本openssl命令在哪里
which openssl

# 将旧版本openssl移除
mv /bin/openssl /usr/bin/openssl.old

# 新版本制作软链接
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl

# 最后查看版本,更新完毕
openssl version

二、openssh升级

1、安装telnet
# 查看是否安装telnet服务
rpm -qa | grep telnet
rpm -qa | grep xinetd

# 若无安装,yum安装
yum -y install telnet* 
yum -y install xinetd

 
#将服务开机自启(此处根据自身情况考虑)
systemctl enable xinetd.service
systemctl enable telnet.socket

 
#开启服务
systemctl start telnet.socket  
systemctl start xinetd

vi /etc/securetty
# 在最后添加两行
pts/0
pts/1

systemctl restart xinetd
netstat -plnt |grep 23  # 确认下是否启动成功
2、升级openssh
# 下载openssh新版本
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz

# 安装依赖包
yum install gcc pam-devel zlib-devel openssl-devel net-tools

# 解压
tar xzvf openssh-9.8p1.tar.gz

# 移除旧版本,需要注意,移除之后,不能退出当前终端,若退出,只能通过telnet连了
mv /etc/ssh /etc/ssh.old


cd openssh-8.0p1/

# 配置
./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/usr/local/openssl --with-md5-passwords --mandir=/usr/share/man --with-zlib --without-hardening

# 编译安装
make && make install


# 拷贝启动脚本
cp ./contrib/redhat/sshd.init /etc/init.d/sshd

# 修改启动脚本
vim /etc/init.d/sshd

# 按如下图修改,需要注意,此路径是你安装新版本的openssh路径,根据你的实际情况修改
SSHD=/usr/local/openssh/sbin/sshd

# 修改sshd配置文件/etc/ssh/sshd_config
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config    #直接用root登录终端(此处根据自身情况考虑)
echo 'X11Forwarding yes' >> /etc/ssh/sshd_config   #设置是否允许X11转发
echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config   #是否允许密码验证

# 卸载原有ssh(先安装后卸载,也是怕升级失败,如果有把握,可先卸载)
for i in $(rpm -qa | grep openssh);do rpm -e $i --nodeps ;done

# 将警告中被修改的文件名字再改回来
mv /etc/ssh/sshd_config.rpmsave /etc/ssh/sshd_config
mv /etc/ssh/ssh_config.rpmsave /etc/ssh/ssh_config
mv /etc/ssh/moduli.rpmsave /etc/ssh/moduli


# 替换相关命令,并重启sshd服务
cp -arp /usr/local/openssh/bin/* /usr/bin/
service sshd restart
3、验证升级并设置开机自启
ssh -V
# OpenSSH_9.8p1, OpenSSL 1.1.1w  11 Sep 2023

chkconfig --add sshd
chkconfig --level 2345 sshd on
chkconfig --list 
4、关闭telnet
#关闭服务(此处根据自身情况考虑)
systemctl stop telnet.socket  
systemctl stop xinetd

#关闭服务开机自启(此处根据自身情况考虑)
systemctl disable xinetd.service
systemctl disable telnet.socket

三、nginx升级

# 下载nginx新版本
# 解压
tar xzvf nginx-1.26.2.tar.gz

cd nginx-1.26.2/

# 查看旧版本nginx配置,新版本按原样配置
nginx -V
# 为了更新nginx依赖的openssl版本,使用--with-openssl
./configure --prefix=/usr/local/nginx --with-http_gzip_static_module --with-http_stub_status_module --with-http_ssl_module --with-pcre --with-file-aio --with-http_realip_module --with-openssl=/usr/local/openssl-1.1.1w --with-stream

#不要用mkae install
make

# 将原版本的nginx执行文件备份
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old

# 将objs目录下的nginx执行文件复制到sbin目录下
cp objs/nginx /usr/local/nginx/sbin/

# 查看版本
nginx -V

# 重启nginx
nginx -s stop
nginx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值