最近在做物联网项目,TCP协议是给设备访问的,也绑定了域名,但是最近查看日志发现有一些国外的IP通过扫描端口进行攻击,其中也有通过http的方式访问,国内的IP也有,国外的IP可以一封了之,那国内的就没办法了,虽然做了数据验证,但觉得不够完美,请问有没有什么办法禁止通过http协议访问呢
message:
GET http://47.*.*.*:666/ HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36
Accept-Encoding: gzip, x-gzip, deflate
Host: 47.*.*.*:666
上面是接收到的消息内容,端口666是为了保密随便输的
一般情况,没办法完全避免;你是使用了基于TCP的自定义协议,只要不满足协议规范就抛弃就好了,也没有太大的问题。
通常来说不满足协议规范的请求只需要做一个请求计数,满足协议规范的请求做请求日志,也不会有太大压力;
比较完善的方案就是基于请求计数,自动化封禁对应ip,比如某个ip请求了3次,那么就封禁一段时间,计数清零。
感谢解答,这些家伙都鸡贼的很,一个IP就访问那么一两次,然后隔天再来,目前是没办法应对了
这种请求对你的系统来说没有危害,其实可以忽略,自动化处理主要是预防危险请求或者破坏性请求
想请教下楼上两位佬,tcp协议并且绑定域名,客户端那边是不是不能通过浏览器访问地址直接访问。比如楼主说的,是给设备访问的,设备那边是不是也是通过tcp的一个客户端服务来访问的?
是的,单独处理,TCP也是访问域名,定制一个消息格式用于过滤非法请求,我是给客户端和设备开了两个不同的
gateway
各搞各的,而且客户端上报、设备上报、系统下发指令给设备、下发数据给客户端,都是不同的格式,再加上客户端和设备的验证,非法请求也就是恶心一下,基本很难攻破,长期骚扰就封他噢噢噢,我平时用的都是 websocket 的协议,不太了解 tcp 的。 其实就是两个 tcp 协议的 gatewayworker 服务之间的通信 是吧。
不是啊,TCP是给设备用的,websocket是给客户端用的(小程序、app、网页)我是这么做的,当然现在微信小程序好像也可以直接用TCP