我最近注意到在我的运行 ubuntu 和 openssh-server 的服务器上发生了几次 ssh 暴力攻击。除了采取一些对策之外,我自然变得格外小心。今天早上我尝试 ssh 进入服务器时,收到了 dns 欺骗警告:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: POSSIBLE DNS SPOOFING DETECTED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
The ECDSA host key for somehost.com has changed,
and the key for the corresponding IP address xx.xx.xxx.xxx
is unknown. This could either mean that
DNS SPOOFING is happening or the IP address for the host
and its host key have changed at the same time.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
IP地址很可能已更改,这不足为奇。但我最近没有更改 ubuntu 设置。但是,我通过执行重新安装了 openssh-server
sudo apt-get remove openssh-server
并重新安装它
sudo apt-get install openssh-server
这让我觉得主机密钥只取决于目录/etc/ssh/。就我而言,它看起来像这样:
drwxr-xr-x 2 root root 4096 Sep 3 19:12 .
drwxr-xr-x 160 root root 12288 Sep 27 08:41 ..
-rw-r--r-- 1 root root 300261 Aug 11 18:24 moduli
-rw-r--r-- 1 root root 1756 Aug 11 18:24 ssh_config
-rw-r--r-- 1 root root 2542 Sep 3 19:09 sshd_config
-rw------- 1 root root 668 Apr 21 15:27 ssh_host_dsa_key
-rw-r--r-- 1 root root 606 Apr 21 15:27 ssh_host_dsa_key.pub
-rw------- 1 root root 227 Apr 21 15:27 ssh_host_ecdsa_key
-rw-r--r-- 1 root root 178 Apr 21 15:27 ssh_host_ecdsa_key.pub
-rw------- 1 root root 411 Apr 21 15:27 ssh_host_ed25519_key
-rw-r--r-- 1 root root 98 Apr 21 15:27 ssh_host_ed25519_key.pub
-rw------- 1 root root 1675 Apr 21 15:27 ssh_host_rsa_key
-rw-r--r-- 1 root root 398 Apr 21 15:27 ssh_host_rsa_key.pub
-rw-r--r-- 1 root root 338 Sep 3 19:12 ssh_import_id
今天是 9 月 27 日,因此所有 ssh_host* 文件自 4 月以来都没有更改。我不确定用户公钥是否会影响主机密钥。所以为了确定,我检查了用户 ssh 目录 ~/.ssh/,它看起来像这样:
drwx------ 2 user user 4096 Sep 5 18:41 .
drwxr-xr-x 49 user user 4096 Sep 27 08:43 ..
-rw------- 1 user user 748 Apr 21 19:20 authorized_keys
-rwx------ 1 user user 3326 Jan 21 2016 id_rsa
-rw-rw-rw- 1 user user 748 Jan 21 2016 id_rsa.pub
-rw-r--r-- 1 user user 2726 Mai 3 13:00 known_hosts
所以用户公钥也没有改变。
问题:还有什么会影响主机密钥或主机指纹的吗?有什么我没有考虑到的吗?重新安装 openssh-server 是否有可能更改了主机密钥?如果是,更新的文件在哪里?
[编辑] 同时,我通过执行检查了服务器本身的 ECDSA 指纹(有关详细信息,请参阅此内容)
$ nmap localhost --script ssh-hostkey
并且指纹与恶搞通知中显示的指纹匹配。因此,似乎不是服务器发生了变化,而是我用来连接服务器的机器上的 known_hosts 文件发生了变化。也许 Germar 是对的,并且 IP 地址与我之前连接的服务器匹配。我仍然不确定为什么我收到了欺骗通知。但是除非 nmap 命令也没有被欺骗(我认为不是),否则我应该有一个安全的连接。
如果您已
openssh-server
使用apt-get purge openssh-server
或清除,您的原始主机密钥将被删除apt-get remove --purge openssh-server
。在这种情况下,密钥将被重新生成,并且自然会有所不同。如果openssh-server
刚刚删除,则在重新安装时不应触及密钥文件。主机密钥确实只依赖于 中的文件
/etc/ssh/
,除非 ssh 被配置为在别处查找。HostKey
中任何不寻常的线条都可以看出这一点/etc/ssh/sshd_config
。默认的 HostKey 行是:绝对值得检查该文件以查看您是否使用来自非标准位置的主机密钥,因为您的密钥文件似乎没有被修改。
如果服务器上的密钥符合预期,则很可能在客户端生成警告。正如 Germar 所说,这个问题可能是由于重新使用了之前被另一台服务器使用过的动态分配的 IP 地址造成的。
当您删除软件包并重新安装时,密钥保持不变。仅当您清除软件包时,它们才会被删除。并且仅当密钥文件不存在时才会创建。要全面了解正在发生的事情,您可以阅读以下文件:
这些是 dpkg 在删除或安装 - 或重新配置 - 软件包时运行的脚本。