我有一个设置相当简单的服务器,它不允许密码验证,只允许使用密钥。而且它肯定没有安装 Java。通常我不会关注脚本小子每天数千次试图猜测我的密码 - 我认为他们在我的系统上浪费的时间是他们不会在那些系统上浪费的时间做允许密码验证。但我在 /var/log/auth.log 中看到此消息:
Dec 7 13:43:43 hostname sshd[7412]: Received disconnect from 189.203.240.57: 3: com.jcraft.jsch.JSchException: Auth fail [preauth]
这是否提到了看起来像是来自攻击者的 Java 异常,或者这只是我这边的某种异常?
答案1
看起来 openssh 服务器在其“收到断开连接”错误消息中传递了来自客户端的最后一条消息,因此看起来这是来自用 Java 编写的僵尸网络的僵尸登录尝试。
请参阅 openssh 的以下代码示例packet.c
:
case SSH2_MSG_DISCONNECT:
if ((r = sshpkt_get_u32(ssh, &reason)) != 0 ||
(r = sshpkt_get_string(ssh, &msg, NULL)) != 0)
return r;
/* Ignore normal client exit notifications */
do_log2(ssh->state->server_side &&
reason == SSH2_DISCONNECT_BY_APPLICATION ?
SYSLOG_LEVEL_INFO : SYSLOG_LEVEL_ERROR,
"Received disconnect from %s: %u: %.400s",
ssh_remote_ipaddr(ssh), reason, msg);
free(msg);
return SSH_ERR_DISCONNECTED;