我有一台运行Ubuntu 14.04的服务器,但我有PCI要求的问题。我已经在我的服务器上安装了OpenSSH 6.6p1,然后我将其升级到OpenSSH 7.2p,使用 make编译代码并直接从OpenSSH的存储库进行安装,但似乎有些东西被打破,因为我继续得到检查dpkg -l openssh\*
后的旧版本:
ii openssh-client 1:6.6p1-2ubunt amd64 secure shell (SSH) client,
ii openssh-server 1:6.6p1-2ubunt amd64 secure shell (SSH) server,
ii openssh-sftp-serve 1:6.6p1-2ubunt amd64 secure shell (SSH) sftp server
PCI扫描仪继续报告我必须安装最新版本的OpenSSH的相同问题。
这是问题的CVI ID:CVE-2016-3115
答案 0 :(得分:9)
我也需要安装最新的OpenSSH,但我想通过包安装它而不是从源代码编译。
sudo apt-add-repository 'deb http://archive.ubuntu.com/ubuntu yakkety main universe multiverse'
sudo apt-get update
sudo apt-get install openssh-server=1:7.3p1-1
它对我有用。 (技术上只需要主要和宇宙)
$ ssh -V
OpenSSH_7.3p1 Ubuntu-1, OpenSSL 1.0.2g 1 Mar 2016
编辑(2017-10-04):这个答案最近受到了一些关注,现在可能已经过时了。请记住,此时只需要main
和universe
,我特别想将其作为包安装而不是从源代码编译。无论陌生人(在这种情况下是我)的意义如何,请小心从互联网输入随机命令!
答案 1 :(得分:5)
在Ubuntu 16.04上测试
将ssh-client升级到最新版本。 更新许多其他内容!
sudo apt-add-repository 'deb http://old-releases.ubuntu.com/ubuntu yakkety main universe multiverse'
sudo apt-get update
sudo apt-get install openssh-server=1:7.4p1-10
删除已添加的存储库,以免以后再进行其他更新:
sudo apt-add-repository --remove 'deb http://old-releases.ubuntu.com/ubuntu yakkety main'
sudo apt-get update
注意: 对于17.04,将yakety更改为zesty(未试用)
答案 2 :(得分:3)
有两个答案已经提到重新编译。如果你已经与ssh连接,他们建议它的方式听起来可能不是一个安全的选择。他们也没有建议如何处理OpenSSL 1.0.2 vs 1.1.0问题,默认情况下./configure在Ubuntu 14.04 LTS上发现了OpenSSL的1.1.0版本。要修补OpenSSL 7.7源以使用OpenSSL 1.1.0,这里有一个补丁:
http://www.linuxfromscratch.org/blfs/view/svn/postlfs/openssh.html
wget http://mirror.exonetric.net/pub/OpenBSD/OpenSSH/portable/openssh-7.7p1.tar.gz
tar -zxvf openssh-7.7p1.tar.gz
cd openssh-7.7p1
wget http://www.linuxfromscratch.org/patches/blfs/svn/openssh-7.7p1-openssl-1.1.0-1.patch
patch -Np1 -i ./openssh-7.7p1-openssl-1.1.0-1.patch
这就是诀窍:你可以拥有两个SSHD,这样你就不会失去当前的连接。我们将其他sshd安装到/ opt,其配置将在/ opt / etc
中./configure --prefix=/opt
make ## in the end make will write where it will install, double check everything will go to /opt
make install
nano /opt/etc/ssh/sshd_config
在这里编辑端口,将它从22转到例如1888(确保端口被转发/打开/等)
现在你可以开始新的sshd
了/opt/sbin/sshd
确保重新启动时(例如systemd)也会启动另一个ssh。
2个sshds现在同时运行。您可以尝试连接这个新建的。完成后,您可以安全地从apt中删除缺少openssh6.6的过时和安全更新,或者至少停止守护程序并从启动中删除守护程序。
您离安全系统更近了一步。
答案 3 :(得分:0)
这是来自@ dszakal评论的编辑,因为我没有完全相同的事情要做(这里是Ubuntu 16)。
cd
wget http://mirror.exonetric.net/pub/OpenBSD/OpenSSH/portable/openssh-7.7p1.tar.gz
tar -zxvf openssh-7.7p1.tar.gz
cd openssh-7.7p1
wget http://www.linuxfromscratch.org/patches/blfs/svn/openssh-7.7p1-openssl-1.1.0-1.patch
patch -Np1 -i ./openssh-7.7p1-openssl-1.1.0-1.patch
./configure --prefix=/opt
make
sudo make install
cp ~/openssh-7.7p1/sshd_config /opt/etc/
cp ~/openssh-7.7p1/ssh_config /opt/etc/
sudo nano /opt/etc/sshd_config
# Uncomment the lines I wrote below
---------------------------------------------
Port 33333 # You can change the port here
AddressFamily any
ListenAddress 0.0.0.0
ListenAddress ::
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
PasswordAuthentication yes
PermitEmptyPasswords no
---------------------------------------------
# Then launch the service
sudo /opt/sbin/sshd
然后尝试使用您的常规凭据登录,它应该可以正常工作。
Nmap报告:
PORT STATE SERVICE VERSION
33333/tcp open ssh OpenSSH 7.7 (protocol 2.0)
现在我们将新的SSH转移到端口22.我登录了端口33333以禁用旧的SSH服务&在/ opt / etc / sshd_config中将33333更改为22
sudo service ssh stop
sudo nano /opt/etc/sshd_config
Port 22
# Then re-launch the service
sudo /opt/sbin/sshd
然后尝试使用您的常规凭据登录,它应该可以正常工作。
Nmap报告:
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.7 (protocol 2.0)
非常感谢@dszakal !!
答案 4 :(得分:0)
如果您正在使用Ubuntu LTS,则不需要。似乎Ubuntu安全团队正在向您推送补丁!详细的answer:
Qualys和nmap之类的工具并不聪明,无法弄清楚。您可以访问ubuntu软件包changelog page [对于我来说,该软件包是openssh-server6.6]以查看是否已提供补丁。
为了安全起见,只需执行sudo apt-get install --only-upgrade openssh-server即可获取补丁。
答案 5 :(得分:-5)
使用以下内容更新至最新版本:
wget http://mirror.exonetric.net/pub/OpenBSD/OpenSSH/portable/openssh-7.5p1.tar.gz
tar -zxvf openssh-7.5p1.tar.gz
cd openssh-7.5p1
./configure
make
sudo make install