我正在尝试解密我所有的 ssh 日志(以便使用 logstash 为它们提供合理的标签)。但是我发现了一个我不太理解的案例:
Oct 23 07:43:47 sshd[59830]: Connection from 74.194.6.5 port 60126 on 213.67.100.148 port 22
Oct 23 07:43:51 sshd[59830]: error: maximum authentication attempts exceeded for root from 74.194.6.5 port 60126 ssh2 [preauth]
Oct 23 07:43:51 sshd[59830]: Disconnecting authenticating user root 74.194.6.5 port 60126: Too many authentication failures [preauth]
Run Code Online (Sandbox Code Playgroud)
它如何在不给出任何身份验证尝试迹象的情况下达到最大身份验证尝试?
通常我会在“最大身份验证...”行出现之前得到类似的信息。
Oct 23 08:54:06 sshd[62392]: Failed keyboard-interactive/pam for [...]
Oct 23 08:52:41 sshd[49690]: Failed publickey for [...]
Run Code Online (Sandbox Code Playgroud)
但不总是。
请注意,我登录时没有问题..
HBr*_*ijn 13
当 ssh 客户端尝试基于密钥的登录并提供的不仅仅是MaxAuthTries
无效密钥时,就会触发该错误消息。然后 SSH 服务器将断开连接。这可能是由根本没有有效密钥的(恶意)客户端引起的,也可能是由具有许多不同密钥对的有效用户引起的,并且MaxAuthTries
在有效密钥可以交换之前就达到了数量。发生这种情况时,连接将终止,甚至不会到达提供/尝试替代登录方法的阶段。
(在默认日志级别)ssh 服务器不记录交换失败的密钥,因此错误消息“ error: maximum authentication attempts exceeded for ... ssh2 [preauth]
”似乎在日志文件中没有任何先前的身份验证尝试的情况下出现。
您可以使用以下方法轻松模拟:
for n in $(seq 1 10 ) ; do ssh-keygen -b 2048 -t rsa -f /tmp/sshkey-$n -q -N "" ; done
ssh -v -i /tmp/sshkey-1 -i /tmp/sshkey-2 -i /tmp/sshkey-3 ... user@host
Run Code Online (Sandbox Code Playgroud)
debug1:下一个认证方法:publickey
debug1:提供RSA公钥:/tmp/sshkey- 1
debug2:我们发送了一个publickey包,等待回复
debug1:可以继续的认证:publickey,gssapi-keyex,gssapi-with-mic
debug1 :提供 RSA 公钥:/tmp/sshkey- 2
debug2:我们发送了一个公钥数据包,等待回复
debug1:可以继续的身份验证:publickey,gssapi-keyex,gssapi-with-mic
debug1:提供 RSA 公钥:/tmp /sshkey- 3
debug2: 我们发送了一个公钥包,等待回复
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic
debug1: 提供 RSA public key: /tmp/sshkey- 4
debug2:我们发送了一个公钥包,等待回复
debug1:可以继续的身份验证:publickey,gssapi-keyex,gssapi-with-mic
debug1:提供 RSA 公钥:/tmp/sshkey- 5
debug2:我们发送了一个公钥包,等待回复
debug1:可以继续的身份验证:publickey,gssapi-keyex,gssapi-with-mic
debug1:提供 RSA 公钥:/tmp/sshkey- 6
debug2:我们发送了一个公钥数据包,等待回复
Received disconnect from hostn port 22:2:认证失败太多
认证失败
其缺省值MaxAuthTries
是6。
sshd[19032]:错误:从 10.9.8.7 端口 54956 登录时超出了最大身份验证尝试次数 ssh2 [preauth]
sshd[19032]:断开连接:身份验证失败过多 [preauth]
将 sshd_configLogLevel
增加到VERBOSE
将生成更有意义的额外日志事件:
的sshd [19271]:从10.9.8.7端口58823上10.9.8.8端口22连接
的sshd [19271]:用于登录失败公钥从10.9.8.7端口58823 SSH2:RSA SHA256:QGnu ... FPY
的sshd [19271]:无法公钥从 10.9.8.7 端口 58823 ssh2 登录:RSA SHA256:cjje...dDo
sshd[19271]:从 10.9.8.7 端口 58823 ssh2 登录的公钥失败:RSA SHA256:IIWe...d19 Failed
sshd[19271]:用于从10.9.8.7端口58823 SSH2登录:RSA SHA256:xrQs ... ET0
的sshd [19271]:用于登录失败公钥从10.9.8.7端口58823 SSH2:RSA SHA256:0Zln ... UI4
sshd的[19271]:无法公钥对于从 10.9.8.7 端口 58823 ssh2 登录:RSA SHA256:hhsj...7Q4
sshd[19271]:错误:从 10.9.8.7 端口 58823 ssh2 [preauth] 登录时超出了最大身份验证尝试
sshd[19271]:断开连接:身份验证失败过多 [preauth]
MaxAuthTries
指定每个连接允许的最大身份验证尝试次数。一旦失败次数达到该值的一半,就会记录更多失败。默认值为 6。
正如您所看到的,该限制在每个连接的基础上有效,并且并非所有尝试都会被记录。您还可以选择日志中需要多少信息
LogLevel
给出从 sshd(8) 记录消息时使用的详细级别。可能的值为:QUIET、FATAL、ERROR、INFO、VERBOSE、DEBUG、DEBUG1、DEBUG2 和 DEBUG3。默认为信息。DEBUG 和 DEBUG1 是等效的。DEBUG2 和 DEBUG3 各自指定更高级别的调试输出。使用 DEBUG 级别进行日志记录会侵犯用户的隐私,因此不建议使用。
在OpenSSH/日志记录和故障排除中,您可以查看日志示例,其中您可以看到拒绝部分与您显示的部分类似:
...
Mar 19 11:11:10 server sshd[54798]: Failed password for root from 122.121.51.193 port 59928 ssh2
Mar 19 11:11:10 server sshd[54798]: error: maximum authentication attempts exceeded for root from 122.121.51.193 port 59928 ssh2 [preauth]
Mar 19 11:11:10 server sshd[54798]: Disconnecting authenticating user root 122.121.51.193 port 59928: Too many authentication failures [preauth]
Run Code Online (Sandbox Code Playgroud)
总而言之,失败的身份验证尝试并不总是发送到日志。可以在 httpd 的conf 文件中配置该行为。
现在,根据我将 ssh 暴露到互联网的不太愉快的经历,让我给出一些一般性建议:
归档时间: |
|
查看次数: |
31569 次 |
最近记录: |