最近在做物聯(lián)網(wǎng)項目,TCP協(xié)議是給設(shè)備訪問的,也綁定了域名,但是最近查看日志發(fā)現(xiàn)有一些國外的IP通過掃描端口進行攻擊,其中也有通過http的方式訪問,國內(nèi)的IP也有,國外的IP可以一封了之,那國內(nèi)的就沒辦法了,雖然做了數(shù)據(jù)驗證,但覺得不夠完美,請問有沒有什么辦法禁止通過http協(xié)議訪問呢
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
上面是接收到的消息內(nèi)容,端口666是為了保密隨便輸?shù)?/p>
一般情況,沒辦法完全避免;你是使用了基于TCP的自定義協(xié)議,只要不滿足協(xié)議規(guī)范就拋棄就好了,也沒有太大的問題。
通常來說不滿足協(xié)議規(guī)范的請求只需要做一個請求計數(shù),滿足協(xié)議規(guī)范的請求做請求日志,也不會有太大壓力;
比較完善的方案就是基于請求計數(shù),自動化封禁對應(yīng)ip,比如某個ip請求了3次,那么就封禁一段時間,計數(shù)清零。
想請教下樓上兩位佬,tcp協(xié)議并且綁定域名,客戶端那邊是不是不能通過瀏覽器訪問地址直接訪問。比如樓主說的,是給設(shè)備訪問的,設(shè)備那邊是不是也是通過tcp的一個客戶端服務(wù)來訪問的?
是的,單獨處理,TCP也是訪問域名,定制一個消息格式用于過濾非法請求,我是給客戶端和設(shè)備開了兩個不同的gateway
各搞各的,而且客戶端上報、設(shè)備上報、系統(tǒng)下發(fā)指令給設(shè)備、下發(fā)數(shù)據(jù)給客戶端,都是不同的格式,再加上客戶端和設(shè)備的驗證,非法請求也就是惡心一下,基本很難攻破,長期騷擾就封他
噢噢噢,我平時用的都是 websocket 的協(xié)議,不太了解 tcp 的。 其實就是兩個 tcp 協(xié)議的 gatewayworker 服務(wù)之間的通信 是吧。
不是啊,TCP是給設(shè)備用的,websocket是給客戶端用的(小程序、app、網(wǎng)頁)我是這么做的,當然現(xiàn)在微信小程序好像也可以直接用TCP