Centos7.6编译升级openssl、openssh服务,关闭rpcbind服务

目录

1. 安装telnet服务(可选)

2. openssl升级 

 2.1 备份原有openssl服务

 2.2编译安装、及编译安装出现的报错

 2.3 建立软连接 

 2.4 更新动态连接数据库

 2.5查看openssl版本,确认是否升级成功

3.  SSH升级

 3.1备份原有ssh数据   !!!!!

 3.2. 卸载原有ssh服务

 3.3.源码包编译升级

 3.4.拷贝开机启动脚本设置为开机自启、还原ssh-keygen文件

 3.5.修改sshd服务端的配置文件

 3.6.检查、测试SSH服务是否正常

4.关闭rpcbind服务

5.禁用telnet远程连接(可选)


为什么要升级openssl、openssh,关闭rpcbind服务?

由于Centos7自带的openssh、openssl版本过低、第三方安全软件扫描过不了存在严重漏洞所以必须升级

京东云安全团队检测到多起黑客利用云主机上的RPCBind服务进行UDP反射DDoS攻击导致用户流量暴增的案例

#升级前记得一定一定要提前备份好数据

 环境:CentOS 7.6 64bit

 查看当前系统openssl、openssh版本

[root@cowboy ~]# ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017

[root@cowboy ~]# rpm -qa |egrep "openssh|openssl"
openssh-7.4p1-22.el7_9.x86_64
openssl-1.0.2k-25.el7_9.x86_64
openssh-server-7.4p1-22.el7_9.x86_64
openssl-devel-1.0.2k-25.el7_9.x86_64
openssh-clients-7.4p1-22.el7_9.x86_64
openssl-libs-1.0.2k-25.el7_9.x86_64

   wget下载openssh-8.1p1.tar.gz、openssl-1.1.1q.tar.gz

  • openssl官网:https://www.openssl.org/
  • openssh官网:http://www.openssh.com/
[root@cowboy ~]# wget http://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.3p1.tar.gz
[root@cowboy ~]# wget -c https://www.openssl.org/source/openssl-1.1.1q.tar.gz --no-check-certificate

[root@cowboy ~]# tar -zxvf openssh-8.3p1.tar.gz 
[root@cowboy ~]# tar -zxvf openssl-1.1.1q
[root@cowboy ~]#  ls
openssh-8.3p1  openssh-8.3p1.tar.gz  openssl-1.1.1q  openssl-1.1.1q.tar.gz

--no-check-certificate: 不检查证书

tar -C: 指定解压到那个目录 

#下载编译安装的依赖
yum -y install gcc gcc-c++ zlib zlib-devel openssl openssl-devel  libselinux-devel perl pam-devel

1. 安装telnet服务(可选)

 #防止ssh连接不上,安装telnet作为备用远程连接服务

yum -y install telnet-server xinetd
systemctl restart xinetd
systemctl restart telnet.socket
#telnet服务由xinetd守护的,安装完telnet-server后,需要重新启动xinetd守护进程

1.2. 启动xinetd

 修改配置文件,安装完之后是默认不开启的(如果文件不存在则vim 创建)

cat /etc/xinetd.d/telnet 
service telnet
{
	disable = no
	flags = REUSE
	socket_type = stream
	wait = no
	user = root
	server = /usr/sbin/in.telnetd
	log_on_failure += USERID
}

参数含义

 启动报错:bind failed (Address already in use (errno = 98)). ser...net

信息表明,有其它的程度占用了端口,致使xinetd服务无法启动.

 解决方法: 有两种启动telnet服务的方式,两种方法同时使用会导致端口占用,所以停止telnet.socket服务

systemctl stop telnet.socket
systemctl disble telnet.socket
systemctl restart xinetd.service 

1.3.防火墙、端口服务的放通 

查看进程知否正常运行、过滤23端口

[root@cowboy ~]# ps -ef|grep telnet
root      9674  1155  0 10:18 pts/1    00:00:00 grep --color=auto telnet
[root@cowboy ~]# lsof -i :23
COMMAND  PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
xinetd  8429 root    5u  IPv6 2217950      0t0  TCP *:telnet (LISTEN)

服务器端防火墙放通23端口 

[root@cowboy ~]# firewall-cmd --zone=public --add-port=23/udp --permanent
[root@cowboy ~]# firewall-cmd --zone=public --add-port=23/tcp --permanent
[root@cowboy ~]# firewall-cmd --reload 
success
[root@cowboy ~]# firewall-cmd --list-ports 
80/tcp 23/tcp 23/udp

 因为博主用的是云服务器,所以还需在 云服务器控制台进行操作

#注意 云服务器放通 安全组 轻量级服务器放通防火墙

云服务器

 轻量级服务器

 win端

打开控制面板→程序

4.测试是否可以正常连接

 

2. openssl升级 

 2.1 备份原有openssl服务

find / -name openssl
cp -r /usr/lib64/openssl /usr/lib64/openssl.old
cp -r /usr/bin/openssl /usr/bin/openssl.old
cp -r /etc/pki/ca-trust/extracted/openssl /etc/pki/ca-trust/extracted/openssl.old

cp /usr/lib64/libcrypto.so.10 /usr/lib64/libcrypto.so.10.old
cp /usr/lib64/libssl.so.10 /usr/lib64/libssl.so.10.old
#如下两个库文件必须先备份,因系统内部分工具(如yum、wget等)依赖此库,而新版OpenSSL不包含这两个库

[root@cowboy ~]# echo $?
0
[root@cowboy ~]# ls /usr/lib64 |grep openssl
openssl
openssl.old
[root@cowboy ~]# ls /usr/bin/ |grep openssl
openssl
openssl.old
[root@cowboy ~]# ls -al /usr/lib64/libcrypto.so.10
lrwxrwxrwx 1 root root 19 Jul 25 17:04 /usr/lib64/libcrypto.so.10 -> libcrypto.so.1.0.2k
[root@cowboy ~]# ls -al /usr/lib64/libssl.so.10
lrwxrwxrwx 1 root root 16 Jul 25 17:04 /usr/lib64/libssl.so.10 -> libssl.so.1.0.2k
#确认已经备份

 2.2编译安装、及编译安装出现的报错

cd /openssl-1.1.1q
./config shared && make && make install

ll /usr/local/bin/openssl
ll -d /usr/local/include/openssl/
#编译完成之后,可以在以下目录找到文件

[root@cowboy openssl-1.1.1q]# ll /usr/local/bin/openssl
-rwxr-xr-x 1 root root 749088 Oct 14 10:17 /usr/local/bin/openssl
[root@cowboy openssl-1.1.1q]# ll -d /usr/local/include/openssl/
drwxr-xr-x 2 root root 4096 Oct 14 10:17 /usr/local/include/openssl/

 2.3 建立软连接 

ln -sf /usr/local/bin/openssl /usr/bin/openssl
ln -s /usr/local/include/openssl/ /usr/include/openssl

 2.4 更新动态连接数据库

echo "/usr/local/lib64" >> /etc/ld.so.conf
将新的库文件地址写入记录so库的配置文件

/sbin/ldconfig
#更新动态连接数据库

 2.5查看openssl版本,确认是否升级成功

openssl version -a

3.  SSH升级

 3.1备份原有ssh数据   !!!!!

[root@cowboy ~]# mkdir /opt/sshbak
[root@cowboy ~]# find / -name ssh
/etc/ssh
/etc/selinux/targeted/active/modules/100/ssh
/usr/share/bash-completion/completions/ssh
/usr/bin/ssh

############数据备份#############
cp /etc/ssh/sshd_config /opt/sshbak
tar -cvf /opt/sshbak/ssh.bak.tar /etc/ssh  
cp /usr/bin/ssh-copy-id /usr/bin/ssh-copy-id.bak 

 3.2. 卸载原有ssh服务

rpm -qa |grep openssh |xargs rpm -e --allmatches  --nodeps

xargs:               给命令传递参数的一个过滤器,也是组合多个命令的一个工具

--allmatches:    删除与 packge_name 匹配的包的所有版本

--nodeps:         不检查依赖直接删除rpm包

rm -rf /etc/ssh/    

#删除之前,建议安装telnet远程服务防止ssh断开

只要不重启sshd服务,就不会断开

 3.3.源码包编译升级

mkdir /usr/local/openssh
###########编译安装################
./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh \
--with-openssl-includes=/usr/local/include \
--with-ssl-dir=/usr/local/lib64 \
--with-md5-passwords \
--with-zlib \
--with-pam

make && make install

参数含义:–prefix 安装目录
                  –sysconfdir 配置文件目录       
                  –with-privsep-path 支持特权分离
                  –with-md5-passwords 支持读取经过MD5加密的口令

 zlib库:一套通用的解压缩开源库,提供了内存(in-memory)压缩和解压函数,
 能检测解压出来的数据完整性

 3.4.拷贝开机启动脚本设置为开机自启、还原ssh-keygen文件

cp ./contrib/redhat/sshd.init /etc/init.d/sshd
chkconfig --add sshd
cp -a ./contrib/redhat/sshd.pam /etc/pam.d/sshd.pam
cp /usr/local/ssh/sbin/sshd /usr/sbin/sshd
cp /usr/local/ssh/bin/ssh /usr/bin/ssh
cp /usr/local/ssh/bin/ssh-keygen /usr/bin/ssh-keygen

将脚本添加至开机自启列表

[root@cowboy init.d]# chkconfig --add sshd  && chkconfig sshd on
Note: Forwarding request to 'systemctl enable sshd.socket'.
Created symlink from /etc/systemd/system/sockets.target.wants/sshd.socket to /usr/lib/systemd/system/sshd.socket.
  
[root@cowboy openssh-8.3p1]# systemctl enable sshd --now

  chkconfig --add sshd &&chkconfig sshd on: 新增加sshd服务并设置开机启动

  chkconfig --list |grep sshd:                             列出sshd服务的设置情况

 3.5.修改sshd服务端的配置文件

echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config
echo 'PasswordAuthentication yes' >> /etc/ssh/sshd_config
echo 'Port 22' >> /etc/ssh/sshd_config
echo 'AddressFamily any' >> /etc/ssh/sshd_config
echo 'ListenAddress 0.0.0.0' >> /etc/ssh/sshd_config

[root@cowboy sshd]# vim /etc/ssh/sshd_config
#注释  :set number  显示行号

默认监听22端口
17 Port 22                                                                 (去掉注释)

ipv4和ipv6协议地址簇用那个一个,any 表示全用
18 AddressFamily any                                              (去掉注释) 

指名监控的地址,0.0.0.0表示本机的所有地址
19 ListenAddress 0.0.0.0                                          (去掉注释) 

允许使用ROOT用户登录
32 #PermitRootLogin prohibit-password                     改成 32 PermitRootLogin yes

运行使用公钥认证
37 PubkeyAuthentication yes                                    (去掉注释)    

禁止解析(优化项如果使用DNS解析速度会很慢)
98 UseDNS no                                                           (去掉注释)

###建立软连接###
ln -s /usr/local/openssh/bin/ssh /usr/bin/ssh
ln -s /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen
ln -s /usr/local/openssh/sbin/sshd /usr/sbin/sshd

systemctl daemon-reload

 3.6.检查、测试SSH服务是否正常

[root@cowboy init.d]# systemctl daemon-reload 
[root@cowboy init.d]# /etc/init.d/sshd restart
Restarting sshd (via systemctl):                           [  OK  ]
[root@cowboy init.d]# lsof -i :22
COMMAND   PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
sshd     1143 root    3u  IPv4 2666867      0t0  TCP cowboy:ssh->183.62.240.234:57082 (ESTABLISHED)
sshd     3040 root    3u  IPv4 2926334      0t0  TCP cowboy:ssh->183.62.240.234:61485 (ESTABLISHED)
sshd    15107 root    3u  IPv4 3027264      0t0  TCP *:ssh (LISTEN)
sshd    15107 root    4u  IPv6 3027266      0t0  TCP *:ssh (LISTEN)
[root@cowboy init.d]# netstat -ntup|grep 22
tcp        0      0 10.0.20.2:22            183.62.240.234:57082    ESTABLISHED 1143/sshd: root@pts 
tcp        0     52 10.0.20.2:22            183.62.240.234:61485    ESTABLISHED 3040/sshd: root@pts 
tcp        0      0 10.0.20.2:23            176.97.210.224:42958    ESTABLISHED 11518/in.telnetd    
[root@cowboy init.d]# ssh -V
OpenSSH_8.3p1, OpenSSL 1.1.1q  5 Jul 2022

4.关闭rpcbind服务

大部分服务是不依赖于rpcbind的,只有NFS需要用到这个服务。

systemctl status rpcbind.service
systemctl disable --now rpcbind.service
systemctl stop rpcbind.socket

 rpcbind服务作用:Centos上禁用 rpcbind 111端口 - 一路狂飙 (ylkb.net)

5.禁用telnet远程连接(可选)

[root@cowboy init.d]# systemctl disable xinetd.service && systemctl stop xinetd.service
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值