Ubuntu 16.04 升级OpenSSH至7.7p1
因网安漏洞扫描扫出OpenSSH漏洞,需要对OpenSSH进行升级操作
安装zlib
# 下载zlib 编译安装
wget http://zlib.net/zlib-1.2.11.tar.gz
tar xf zlib-1.2.11.tar.gz && cd zlib-1.2.11/
./configure && make && make install
安装OpenSSH
需要安装有OpenSSL 1.0.2版本,由于我的服务器已经安装了1.0.2g,此处未进行OpenSSL的升级
# 安装OpenSSH
wget https://fastly.cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/OpenSSH-7.7p1.tar.gz
tar xf OpenSSH-7.7p1.tar.gz && cd OpenSSH-7.7p1/
# 备份启动脚本以及配置文件
cp /etc/init.d/ssh /etc/init.d/ssh.old && cp -r /etc/ssh /etc/ssh.old
# 安装OpenSSH
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-zlib --with-privsep-path=/var/lib/sshd
make && make install
编译OpenSSH可能遇到的报错
# 报错: configure: error: PAM headers not found
# 解决: ubuntu: apt-get install libpam0g-dev
# centos: yum -y install pam-devel
# 报错: configure: error: *** OpenSSL headers missing - please install first or check config.log ***
# 解决: ubuntu: apt-get install libssl-dev
# centos: yum -y install openssl-devel
查看OpenSSH版本
OpenSSH -V
systemctl超时
OpenSSH升级完成后,使用systemctl
启动或重启sshd服务,systemctl
会卡住90秒超时,然后报错ssh启动失败,但是查看进程状态是正常运行并且使用正常的。
上网上查找资料也没有类似案例,无奈只能修改ssh的systemctl文件/lib/systemd/system/ssh.service
中Type
一项
Type=notify
表示当前服务启动完毕,会通知Systemd,再继续往下执行,判断是编译安装后的ssh服务正常启动后,没有给systemctl返回启动成功的信号。
将Type=notify
修改为Type=simple
,这样systemctl不会等待ssh返回的信号。执行systemctl daemon-reload
并重启sshd进程可以解决systemctl超时的问题