Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Бан по шаре распознаётся как DoS #1023

Open
pavel-pimenov opened this issue Aug 23, 2015 · 10 comments
Open

Бан по шаре распознаётся как DoS #1023

pavel-pimenov opened this issue Aug 23, 2015 · 10 comments

Comments

@pavel-pimenov
Copy link
Owner

From JhaoDa on April 08, 2013 11:51:51

Вот такой цикл в CMD-отладчике я отловил, раз в секунду, 30-40 раз, потом перерыв в минуту и снова:
17:07:42 Client:[Incoming]$MyNick Максян
17:07:42 Client:[Outgoing]$MyNick JhaoDa|
17:07:42 Client:[Outgoing]$Lock EXTENDEDPROTOCOLABCABCABCABCABCABC Pk=DCPLUSPLUS0.785ABCABC|
17:07:42 Client:[Incoming]$Lock EXTENDEDPROTOCOLABCABCABCABCABCABC Pk=DCPLUSPLUSPeLinkDc++ v:5.94ABCABC
17:07:42 Client:[Outgoing]$Supports MiniSlots XmlBZList ADCGet TTHL TTHF ZLIG|
17:07:42 Client:[Outgoing]$Direction Upload 18204|
17:07:42 Client:[Outgoing]$Key СА° A С±±АА0Р0 0 0 0 0 0|
17:07:42 Client:[Incoming]$Supports MiniSlots XmlBZList ADCGet TTHL TTHF BanMsg ZLIG
17:07:42 Client:[Incoming]$Direction Download 19596
17:07:42 Client:[Incoming]$Key СА° A С±±АА0Р0 0 0 0 0 0
17:07:42 Client:[Incoming]$ADCGET tthl TTH/WSLQQIYKGBE6FZTHPVG5E7JQ4WE662OTO27OICI 0 -1
17:07:42 Client:[Outgoing]$Error BAN for Share < 20 Gb Msg: Вам бан. Расшарьте больше файлов. Халявы не будет.|

Последнее сообщение заканчивается так:
17:07:43 Client:[Outgoing]$Error Please update your DC++ http://flylinkdc.com|

У юзера шара нулевая или меньше установленного лимита. В итоге в лог падает:
[2013-04-08 17:09] [DoS] Атака от: Максян с хаба dchub://dc.krasfiles.ru. Число попыток > 30. Файл = TTH/WSLQQIYKGBE6FZTHPVG5E7JQ4WE662OTO27OICI]

Вопрос: зачем оно падает в лог? Это же не тот DoS, который от битой базы, это обычный бан по шаре. Юзера надо просто банить на 10 минут, например, после первого же запроса и не гадить в лог.

Original issue: http://code.google.com/p/flylinkdc/issues/detail?id=986

@pavel-pimenov
Copy link
Owner Author

From toss.Alexey on April 08, 2013 06:49:27

А если он сразу шару поднимет - зачем ему ждать целых 10 минут?

@pavel-pimenov
Copy link
Owner Author

From a.rain...@gmail.com on April 08, 2013 07:24:31

С долей шутки: автобан - зло :)

Только для дополнительной информации:
Сообщение выдаётся по причине того, что автобан это единственный надёжный признак по которому можно определить наши СТАРЫЕ клиенты.
Цитирую кусочек кода:
if (aSource.isSet(UserConnection::FLAG_SUPPORTS_BANMSG))
aSource.error(UserConnection::PLEASE_UPDATE_YOUR_CLIENT);

Защита от DDOS срабатывает по причине того, что набирается 30 попыток получения одного и того же файла одним и тем же юзером в течении одной минуты.

Дорабатывать тут что либо с протокольной точки зрения (обменом между клиентаи) смысла не вижу, ибо в последних версиях обоих веток r4xx и r5xx (по времени уже около года) флажёк FLAG_SUPPORTS_BANMSG отсутсвует, стало быть сообщения вида:
17:07:43 Client:[Outgoing]$Error Please update your DC++ http://flylinkdc.com|
уйдёт только на наши старые клиенты, ну и на Грей :)

Что касается непосредственно ишьи: смысла убирать именно эти сообщение из лога не вижу, ибо запросы по 30-40 раз в секунду с той стороны это самый настоящий ДДОС. Поясню подробнее: мы посылаем туда ошибки, а клиент на той стороне вместо того что бы добавить нас в плохие источники продолжает попытки с нас скачать. Хотя немного не уверне на счёт этого момента, ибо есть сомнения должна ли та сторона добавлять нас в BadSource. В общем так или иначе для решения, описанной в ишье, проблемы необходима доработка механизма автобана, вероятно проверки автобана надо вынести выше проверок на DDOS в функции UploadManager::prepareFile.

Labels: Usability Component-Logic

@pavel-pimenov
Copy link
Owner Author

From Pavel.Pimenov@gmail.com on April 08, 2013 11:24:06

Подробнее про отсуствие FLAG_SUPPORTS_BANMSG
он в коде есть
на основании какой проблемы он удален кем и когда?

@pavel-pimenov
Copy link
Owner Author

From a.rain...@gmail.com on April 08, 2013 11:33:49

Не совсем точно написал. FLAG_SUPPORTS_BANMSG есть и работает. Однако наши новые клиенты уже не посылают в Supports признак BanMsg (UserConnection::FEATURE_BANMSG).
Отсылка выключена директивой SMT_ENABLE_FEATURE_BAN_MSG для того, что бы в будущем включить фичу IRAINMAN_DISALLOWED_BAN_MSG и тем самым принудить к обновлению сильно устаревшие клиенты, ибо они содержат кучу ошибок, и в них даже авто-апдейт не везде есть.

@pavel-pimenov
Copy link
Owner Author

From JhaoDa on April 08, 2013 11:50:01

А если он сразу шару поднимет - зачем ему ждать целых 10 минут?
Ой, какая беда, прямо жуть, да как же это он, целых 10 минут???

Сообщение выдаётся по причине того, что автобан это единственный надёжный признак по которому можно определить наши СТАРЫЕ клиенты.
Мнэээ... я наблюдал, что клиент может быть, например, 411. Или 502. Или стронг свежий.

@pavel-pimenov
Copy link
Owner Author

From JhaoDa on June 23, 2013 17:40:59

Поразительным образом проблема исчезла примерно месяц назад. Вроде ничего не менял в настройках, значит, починили мимоходом?

@pavel-pimenov
Copy link
Owner Author

From a.rain...@gmail.com on June 28, 2013 10:30:58

Вероятно так, закрою ишью тогда.

Status: Done

@pavel-pimenov
Copy link
Owner Author

From JhaoDa on June 29, 2013 02:15:08

Накаркали. Бага неожиданно вернулась, r14301 .

Status: Accepted

@pavel-pimenov
Copy link
Owner Author

@pavel-pimenov
Copy link
Owner Author

From Pavel.Pimenov@gmail.com on November 04, 2013 09:23:42

Owner: Pavel.Pimenov@gmail.com

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant