在我的VPS上运行Debian 7,我在默认端口22上启用了ssh,只启用了私钥authentication,所有其他端口都使用iptables进行过滤。 我经常在伪造用户名的情况下获得来自中国的login尝试,例如“plesk”或“r00t”,显示在我的/var/log/auth.log
唯一的问题是authentication尝试不提供私钥,并尝试在有效的用户名下login,日志中出现的唯一行
sshd [4364]:连接closures了123.45.67.89 [preauth]
当sshd日志logging级别设置为VERBOSE时,会打印一条附加行,指出连接的用户和他们连接的端口。
有什么办法让sshd日志,它断开用户,因为他们缺less一个私钥?
你的问题的答案是否定的。至less,不是没有采取英雄的措施(例如,运行DEBUG级别和处理脚本)比一些明智的select更难。 相同的[preauth]
错误报告为没有密钥或无效的密钥。
另一方面,如果他们真的连接,你的日志将明确地说
Jul 7 15:59:38 ws6 sshd[9578]: Accepted password for robohacker...
要么
Jul 7 15:59:38 ws6 sshd[9578]: Accepted publickey for robohacker...
你可以做的是进一步强化你的configuration。 您已经需要一个密钥,您还可以使用AllowUsers
和AllowGroups
命令来防止未经特别授权的任何人的连接。
就个人而言,我总是安装DenyHosts,虽然它似乎没有最近的更新。 我听说Fail2Ban也不错
您可以使用“作弊” – 在auth部分的/etc/pam.d/ssh(d)中,您可以在pam_unix或@include common-auth语句之前添加日志语句(pam_log)。 如果这个声明被击中,那么已经尝试了密码authentication。
任何sshd可以执行的日志都将logging在man sshd_config
。 尝试search“日志”,但我没有看到任何具体的东西 – 主要是LogLevel和SyslogFacility,虽然也许MaxAuthTries会帮助。
在详细模式下,你的sshd确实已经logging了disconnect语句。
如果您需要更多的信息,您也可以使用最终的DEBUG日志logging模式,但是要小心这个日志logging模式,因为日志会在没有良好的日志转换策略的情况下快速增长;-)