处理tcp客户端数据出现的问题

之前我们处理客户端上传的数据一直都很顺利,解析环节从未出过问题。但最近接连碰到数据解析报错的情况,多批数据都无法正常识别。结合现状推测,程序可能受到了外网攻击,造成数据异常。在尝试重启程序后,数据解析恢复正常

1.

2.发现挑衅语句


3


服务器端口正在被外网扫描和探测

日志里的 OPTIONS / HTTP/1.0SMBrCookie: mstshash=nmap 等,都是外网攻击者直接发给服务端端口的探测请求

服务端:同时收到了合法业务数据 + 外网扫描 / 攻击数据

这些数据完全不是正常的格式,而是各种网络探测行为:

  1. OPTIONS / HTTP/1.0 / OPTIONS / RTSP/1.0 这是标准的 HTTP/RTSP 探测请求,黑客 / 扫描器在尝试识别你端口上跑的服务类型。
  2. Cookie: mstshash=nmap 这是Nmap 扫描工具的标志性特征,攻击者在用 Nmap 探测你的服务指纹。
  3. SMBr / MICROSOFT NETWORKS / LANMAN / Samba 这是在探测 SMB(文件共享)协议,尝试识别 Windows/Samba 服务,是暴力破解、永恒之蓝等攻击的前置行为。
  4. GET /nice%20ports%2C/Tri%6Eity.txt%2ebak HTTP/1.0 典型的目录爆破 / 敏感文件探测请求,扫描常见的备份文件路径。
  5. EHL0 / HELP / 乱码二进制数据 这些是通用协议探测、甚至恶意 payload 尝试,试图触发服务的异常响应,来识别漏洞。

二、为什么会出现这种情况?

  • 你的服务端口(大概率是客户端连接的那个端口)被暴露到了公网,被自动扫描器扫到了。
  • 扫描器会发送各种通用协议的请求(HTTP、RTSP、SMB、SSH、Telnet 等),来判断你端口上跑的是什么服务,尝试找可利用的漏洞。
  • 这些请求全部不是你的设备发来的,而是外网的攻击者 / 扫描器发的,所以格式和标准协议完全不匹配,解析自然会报错。

三、为什么重启程序后就正常了?

重启程序不会改变外部的扫描行为,只是:

  • 重启后,旧的连接被清空,扫描器的连接断开了,暂时没有新的扫描请求打进来。
  • 但只要端口还是公网可访问,扫描行为大概率还会再出现。

四、你现在必须做的排查 / 防护动作

  1. 紧急:确认端口是否公网暴露

    • 检查你的服务器 / 设备,是否把业务端口(比如服务端口)直接映射到了公网。
    • 建议改成只允许内网访问,或者通过 VPN / 白名单访问。
  2. 防火墙 / 安全组限制

    • 只允许你的客户端 IP 段访问该端口,拒绝所有其他来源的请求。
    • 开启防火墙日志,监控异常访问。
  3. 检查服务本身是否有漏洞

    • 确认你的服务没有溢出、命令注入等可被利用的漏洞。
    • 对所有非业务协议的请求(HTTP/SMB 等)直接拒绝,不做解析。
  4. 日志层面过滤

    • 在解码器中增加协议校验,非开头的请求直接丢弃,不记录或仅做错误日志,避免日志刷屏。
    • 如果是客户端被入侵,攻击者要破坏你的业务,只会篡改协议里的字段,不会用 HTTP/SMB 这些完全无关的协议去探测。

五、总结

  • 这些异常数据不是客户端被入侵发来的,而是公网扫描器 / 攻击者在探测你的服务器端口。
  • 问题根源是端口暴露 + 无访问控制,而不是客户端本身被篡改。
  • 重启只是临时缓解,真正要解决问题,必须做网络隔离 + 访问控制
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐