You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

未发布应用的KTor服务器收到随机请求:是否需警惕或处理?

日志分析与处理建议

这些日志属于互联网公开端口普遍会遇到的随机扫描流量,既不是针对你的定向黑客攻击,也不是正常的爬虫机器人,本质是全网扫描工具在批量探测端口服务类型,属于网络“背景噪音”。下面逐个分析日志类型:

1. 请求解码失败(空文本/无效HTTP版本)

2023-11-19 11:14:25.444 [eventLoopGroupProxy-4-1] TRACE Application - Failed to decode request
java.lang.IllegalArgumentException: text is empty (possibly HTTP/0.9)

这类是扫描工具发送的非标准HTTP数据或乱码,目的是试探端口上运行的服务类型,没有针对性,属于批量扫描的常规操作。

2. 连接被对方重置(Connection reset by peer)

20-11-2023 11:40:31.413 [eventLoopGroupProxy-3-1] [WARN ] i.n.channel.DefaultChannelPipeline - An exceptionCaught() event was fired...
java.io.IOException: Connection reset by peer

通常是扫描工具发送部分试探数据后主动断开连接,或是网络波动导致的中断,完全是扫描过程中的正常现象,不会对服务造成威胁。

3. TLS握手失败(NotSslRecordException)

18-11-2023 05:48:54.505 [eventLoopGroupProxy-3-1] [WARN ] i.n.h.s.ApplicationProtocolNegotiationHandler - TLS handshake failed:
io.netty.handler.ssl.NotSslRecordException: not an SSL/TLS record: ...

你的端口配置了HTTPS,但扫描工具发送了其他协议的明文数据(示例中的ANY-SCP是类SSH协议的试探),属于跨协议扫描,也是全网批量探测的常见行为。


针对性处理建议

日志优化

调整KTor/Netty的日志级别,过滤掉这类无意义的噪音日志:

  • 在logback.xml或对应的日志配置文件中,将io.netty.handler.codec.http、io.netty.channel.DefaultChannelPipeline等包的日志级别设为ERROR或OFF,避免日志刷屏。

网络层面限制

  • 开发阶段尽量不要将服务器直接暴露在公网,使用内网穿透工具仅允许测试设备访问;
  • 若必须公网运行,通过防火墙(如云服务器安全组、iptables)限制IP范围,只开放给测试用的客户端IP。

服务层面拦截

给KTor添加前置中间件,提前过滤不符合HTTP规范的请求:

intercept(ApplicationCallPipeline.Receive) {
    val request = call.request
    if (!request.httpVersion.isValid()) {
        call.respond(HttpStatusCode.BadRequest)
        finish()
    }
}

提前终止无效连接,减少服务器资源消耗。

内容的提问来源于stack exchange,提问作者Cool_Coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 15:18:30