我有许多充当服务器的自定义应用程序,它们接受TCP连接。它们不是网络服务器,也不讲http。这都是自定义协议。它们通常对不起眼的港口向世界开放。而且他们经常受到调查,主要是我认为是扫描仪试图找到不受保护的Web服务器。
我正在尝试提出最好的方法来阻止这种情况。对于我来说,检查第一个到达的令牌是GET还是POST等都很简单,这不是我的任何自定义协议的一部分,因此表示我正在被扫描仪戳。我想让尝试这样做的人感到不舒服,只是作为一种公共服务。
我对扫描仪中使用的代码不熟悉,我希望这里有人。理想情况下,我可以回复某些信息以使扫描仪崩溃,混淆或浪费时间。
约束是,我宁愿不必将套接字保持打开状态很长时间。如果这样做,某人可能会响应数百个连接,从而导致DoS。
到目前为止,我已经尝试用308(永久重定向)答复给CIA的网站。但是端口扫描程序是否可能会遵循重定向?
我尝试发送格式错误的UTF-8的请求正文,以希望有人处理得不好。但是我没有办法知道它的有效性。
我当前发送回的字符串是:
"HTTP/1.1 308 I'm a teapot. And you're an annoyance.\r\n"
"Content-Type: text/html; charset=utf-8\r\n"
//"Content-Length: 7673\r\n" //ugh, browser makes connection linger
//send him somewhere nice:
"Location: https://www.cia.gov\r\n"
"\r\n"
//make the body incomplete, ill-formed trash
"<html \xF0\x9F\x96\x95 \xf3\xf3\xf3\xf3\xf3\xf3\xf3\xf3\xf3\xf3"
我的问题很简单,“是否有更好的方法?”这必须是人们经常处理的问题。我最好只是关闭连接,还是喷出二进制垃圾...?注意:我在分发病毒软件时会划清界线。我的用户极有可能将浏览器错误地指向这些端口。
答案 0 :(得分:0)
我对这个问题寄予厚望,而且回应水平符合预期。因此,我只宣布我的发现很少-扫描程序的重复访问通常很少见,但是发送格式错误的答复似乎会比不做任何事情或重定向到CIA的可能性要大10%,从而阻止重复访问的人。这是基于较小的样本量,因此不要认为它值太多。