cod*_*lex 6 ssh security openssh
我最近注意到在我的运行 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.
Run Code Online (Sandbox Code Playgroud)
IP 地址很可能已更改,这不足为奇。但是我最近没有更改 ubuntu 设置。但是,我通过执行重新安装了 openssh-server
sudo apt-get remove openssh-server
Run Code Online (Sandbox Code Playgroud)
并重新安装它
sudo apt-get install openssh-server
Run Code Online (Sandbox Code Playgroud)
这让我认为主机密钥仅取决于目录 /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
Run Code Online (Sandbox Code Playgroud)
今天是 9 月 27 日,所以自 4 月以来所有 ssh_host* 文件都没有改变。我不确定用户公钥是否会影响主机密钥。所以为了确定,我检查了用户 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
Run Code Online (Sandbox Code Playgroud)
所以用户公钥也没有改变。
问:是否还有其他因素会影响主机密钥或主机指纹?有什么我没有考虑到的吗?重新安装 openssh-server 是否可能更改了主机密钥?如果是,更新的文件在哪里?
[编辑]我已经检查同时在服务器上的ECDSA指纹通过执行(见本的详细信息)
$ nmap localhost --script ssh-hostkey
Run Code Online (Sandbox Code Playgroud)
并且指纹与欺骗通知中显示的指纹匹配。因此,似乎不是服务器发生了变化,而是我用来连接到服务器的机器上的 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 行是:
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
Run Code Online (Sandbox Code Playgroud)
绝对值得检查文件以查看您是否使用来自非标准位置的主机密钥,因为您的密钥文件似乎没有被修改。
如果服务器上的密钥符合预期,则警告很可能是在客户端生成的。正如 Germar 所说,该问题可能是由于重复使用以前被另一台服务器使用过的动态分配的 IP 地址造成的。
| 归档时间: |
|
| 查看次数: |
6079 次 |
| 最近记录: |