У меня есть несколько пользовательских приложений, которые действуют как серверы, принимающие TCP-соединения.Они не являются веб-серверами и не говорят на http;это все пользовательские протоколы.Они открыты для мира, хотя, как правило, в неясных портах.И их довольно часто проверяют, в основном, я думаю, из-за сканеров, пытающихся найти неохраняемые веб-серверы.
Я пытаюсь найти лучший способ воспрепятствовать этому.Для меня тривиально проверить, чтобы первым поступающим токеном был GET или POST и т. Д., Который не является частью какого-либо из моих пользовательских протоколов, поэтому сигналы сигнализируют о том, что меня ткнул сканер.Я хотел бы расстроить людей, пытающихся сделать это, просто в качестве государственной службы.
Я не знаком с кодом, используемым в сканерах, и я надеюсь, что кто-то здесь есть.В идеале я мог бы ответить чем-нибудь, чтобы сломать сканер, запутать его или потратить впустую его время.
Ограничение состоит в том, что я бы предпочел не держать гнездо открытым очень долго.Если я это сделаю, кто-то может ответить сотнями соединений, что приведет к DoS.
До сих пор я пытался ответить 308 (постоянное перенаправление) на сайт ЦРУ.Но могут ли сканеры портов следовать за перенаправлениями?
Я пытался отправить тело запроса с плохо сформированным 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"
Мой вопрос, просто, "есть ли лучший способ?"Это должно быть проблемой, с которой люди часто сталкиваются.Мне лучше просто закрыть соединение или выбросить бинарный мусор ...?Примечание: я рисую линию при отправке вирусов.Существует небольшая вероятность того, что мои пользователи по ошибке направят браузер на эти порты.