CentOS7源码升级OpenSSL和OpenSSH
一、安装telnet
这里启用telnet的原因是:
如果通过ssh远程连接服务器后进行的版本升级操作,如果出现意外可能连接会断开并且无法再远程登录上去,如果服务器安装了iDRAC远程管理卡还有救,如果没有iDRAC远程管理卡,则需要提前开启telnet远程登录或是到机房现场进行升级操作比较妥当。
注1:实测centos7不开也影响不大,centos6可能会断,所以还是开启比较保险。
1、查看系统版本
1
2
3
4
|
cat /etc/centos-release
# 临时关闭selinux
getenforce
setenforce 0
|
2、安装telnet
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
yum -y install telnet-server
# 如果是centos6 需要修改配置
vim /etc/xinetd.d/telnet
# default: on
# description: The telnet server serves telnet sessions; it uses \
# unencrypted username/password pairs for authentication.
service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
disable = no # 将默认的yes改为no , 否则telnet启动后,23端口就会起不来
}
/etc/init.d/xinetd restart
netstat -antup|grep 23
# 如果是centos7
systemctl start telnet.socket
systemctl status telnet.socket
ss -tnlp|grep 23
|
3、添加防火墙放行规则
1
2
3
4
|
# centos6 最好限制一下允许telnet登录的ip
iptables -I INPUT -p tcp -s 192.168.1.1 --dport 23 -j ACCEPT
# centos7
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.56.0/24" service name="telnet" log prefix="telnet" level="info" limit value="1/m" accept'
|
4、测试是否可以登录
1
2
|
telnet -l username 192.168.1.1
# 最好在成功升级以后关闭telnet
|
二、升级OpenSSL
深坑:OpenSSl升级到最新版后,运行系统自带的软件比如curl,wget等命令虽然能够正确但是会有报错信息
1
2
3
|
curl: /lib64/libcrypto.so.10: no version information available (required by /lib64/libssh2.so.1)
curl: /lib64/libssl.so.10: no version information available (required by /lib64/libldap-2.4.so.2)
curl: /lib64/libcrypto.so.10: no version information available (required by /lib64/libldap-2.4.so.2)
|
可能的原因是软件版本不支持最新的openssl,所以如果有强迫症的话,可以不升级,直接升级OenpSSH。
1、查看ssl版本及下载相关依赖包
1
2
|
openssl version -a
yum install gcc pam-devel rpm-build
|
2、下载安装包(查询最新安装包)
1
2
|
mkdir downloads && cd downloads
wget https://distfiles.macports.org/openssl/openssl-1.0.2r.tar.gz
|
3、卸载当前openssl
1
2
|
rpm -qa | grep openssl
rpm -qa |grep openssl|xargs -i rpm -e --nodeps {}
|
4、解压openssl源码并编译安装
1
2
3
4
5
|
tar -xzvf openssl-1.0.2r.tar.gz
cd openssl-1.0.2r
./config --prefix=/usr --openssldir=/etc/ssl --shared zlib
make -j 4
make install
|
5、创建库文件软链接并查看版本
由于OpenSSL不提供libcrypto.so.10和libssl.so.10这两个库,而yum、wget等工具又依赖此库,需要创建软连接使用
1
2
3
4
5
6
|
cd /usr/lib64/
ll /usr/lib64/libssl.so*
ll /usr/lib64/libcrypto.so*
ln -s /usr/lib64/libssl.so.1.0.0 libssl.so.10
ln -s /usr/lib64/libcrypto.so.1.0.0 libcrypto.so.10
openssl version -a
|
三、升级OpenSSH
1、查看当前ssh版本
2、下载安装包(查询最新安装包)
1
2
|
cd downloads
wget http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-7.9p1.tar.gz
|
3、卸载原Openssh
1
2
3
|
rpm -qa |grep openssh
for i in `rpm -qa |grep openssh`;do rpm -e $i --nodeps;done
mv /etc/ssh /tmp/ # 删除操作请谨慎,最好提前看一下
|
4、解压openssh安装包
1
2
|
tar -zxvf openssh-7.9p1.tar.gz
cd openssh-7.9p1
|
5、编译安装
1
2
3
|
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-tcp-wrappers --without-hardening --with-zlib
make -j 4
make install
|
6、安装完成,执行配置
1
2
3
4
5
6
7
8
9
|
rm -rf /etc/init.d/sshd
cp contrib/redhat/sshd.init /etc/init.d/sshd
chkconfig --add sshd
chkconfig --list|grep sshd
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config # 一般不推荐
systemctl enable sshd
systemctl restart sshd
systemctl status sshd
ssh -V
|