kex_exchange_identification 错误的解决方法

admin 2021年08月06日 3,466次浏览

最近在查看服务器的安全日志时,发现日志中有很多的 "kex_exchange_identification: banner line contains invalid characters" 错误,经过错误重现,现在将该错误产生的原因和解决办法简单记录一下。

具体错误信息如下图

1、系统环境

  • OS:CentOS Linux release 8.4.2105
  • SSH:OpenSSH_8.0p1

2、故障产生原因

由于考虑到系统的安全性,所以将 22 号端口改成了 1433 端口(服务器上实际没有运行 SQL server 服务)。问题就出在这端口上,一些无聊的人使用类似于 Nmap 等工具对我的服务器进行了扫描,然后发现我开放了1433端口(估计发起扫描/攻击这家伙是个新手,也不看一下 1433 端口上跑的是啥服务,就开始瞎JB发起对 SQL server 服务的攻击), 因为1433端口上跑的是 SSH 服务,但是攻击者发送的却是 SQL 相关的报文,这就出现了标签不匹配的情况,也就出现了上面的错误信息。

在 OpenSSH_8.0p1 上体现的是上面的错误,而在 OpenSSH_7.4p1 出现的错误却是下图的错误

3、解决方法

既然找到原因了,那就好办了,像这种问题,如果服务器上没有跑对应服务的话,其实可以不用管的,但是日志文件中会记录大量的垃圾信息,所以还是处理一下,只需要把 SSH 服务的端口换成不常用的端口就行了。

4、后记

该问题在 OpenSSH_8.0p1 中表现为 "kex_exchange_identification: banner line contains invalid characters" 错误,而在 OpenSSH_7.4p1 出现的是: Did not receive identification string from xx.xx.xx.xx port xxxx 错误,请注意区分