Сообщений: 433
Тем: 35
Зарегистрирован: Jun 2009
Репутация:
1,392
Уважаемые форумчане.
Задался проблемой создания DDoS-устойчивого логина.
Инструменты для теста:
- [SSRC]DC DDoS - 70+ хабов с 200к+ активных юзеров.
- Чистый логин от овера.
Логин умирает от избытка коннектов, пытаясь все их обработать. После некоторого шаманства с mmocore добился выживаемости логина, принудительно завершая все коннекты при достижении определенного числа одновременных. Проблема в том, что в таком случае, дропаются и валидные конекты юзеров.
Цель каким-либо образом попытаться отловить лишние коннекты к ЛС.
Есть люди, кто уже что-либо делал в этом направлении и готов поделиться наработками или хотя бы натолкнуть на нужный путь?)
Буду рад любым идеям и советам. Заранее спасибо)
Сообщений: 2,101
Тем: 40
Зарегистрирован: Apr 2008
Репутация:
12,296
Сообщений: 433
Тем: 35
Зарегистрирован: Jun 2009
Репутация:
1,392
В данный момент в качестве эксперемента прикручен ПК от ЛГ -> не катит
+ я хочу средствами логина непосредственно отфильтровывать коннекты. Входящее соединение от клиента как-то отличается от бота, например? Я так понимаю, там на уровне установки соединения различий нет совершенно. Это просто коннект.
Сообщений: 502
Тем: 36
Зарегистрирован: Mar 2013
Репутация:
3,346
KilRoy Написал:Только это Это защитит после соединения с логином. Доступа к ГС не будет, пока игрок не пройдет авторизацию на логин-сервере. ЛС это не поможет. Может быть и я не понял, что Вы именно хотите сделать, но обычно делают для того, что я описал ранее.
Сообщений: 433
Тем: 35
Зарегистрирован: Jun 2009
Репутация:
1,392
12-30-2013, 03:21 PM
(Сообщение последний раз редактировалось: 12-30-2013, 03:27 PM Aristocrat.)
Twinker Написал:Это защитит после соединения с логином. Доступа к ГС не будет, пока игрок не пройдет авторизацию на логин-сервере. ЛС это не поможет. Может быть и я не понял, что Вы именно хотите сделать, но обычно делают для того, что я описал ранее.
Совершенно верно. Так и получается. ГС закрыт, ЛС под ударом.
ЛГ вроде чуть по другому работает, но по факту тоже не помогает. Коннекты до ЛС все равно есть.
Ну вот к примеру затычка в SelectorTread, метод acceptConnection
Код: //Тестовая затычка
if (_connections.size() > 500) {
for (MMOConnection<T> mMOConnection : _connections) {
closeConnectionImpl(mMOConnection);
}
return;
}
Самое просто, что пришло в голову.
Резкое увеличение числа соединений возможно только при DDoS. Поэтому, если ставить целью выживание ЛС, не обращая внимания на сохранение соединения обычных юзеров, то задача решена, но если стараться сохранить возможность конекта к ЛС, то нет.
Сообщений: 2,101
Тем: 40
Зарегистрирован: Apr 2008
Репутация:
12,296
Twinker;342749 Написал:Это защитит после соединения с логином. Доступа к ГС не будет, пока игрок не пройдет авторизацию на логин-сервере. ЛС это не поможет. Может быть и я не понял, что Вы именно хотите сделать, но обычно делают для того, что я описал ранее. окда. Яхз как и что вы там делаете. По факту - выручало всегда и выручает.
---
Что-бы ЛС дал добро и открыл порты авторизации(в выделенное время, естесно), для начала ему надо выслать пакет нужной длинны - иначе дроп. Других вариантов тупо нет. Сложить аутх, дело простое.
Сообщений: 433
Тем: 35
Зарегистрирован: Jun 2009
Репутация:
1,392
Ну как я понимаю, без модификации клиента тут не обойтись? "Постучать" в ЛС, чтобы пройти верификацию, клиент штатными средствами не сможет?
Сообщений: 2,101
Тем: 40
Зарегистрирован: Apr 2008
Репутация:
12,296
Aristocrat;342764 Написал:Ну как я понимаю, без модификации клиента тут не обойтись? "Постучать" в ЛС, чтобы пройти верификацию, клиент штатными средствами не сможет? Увы нет  Но это не столь сложно, как кажется
Сообщений: 433
Тем: 35
Зарегистрирован: Jun 2009
Репутация:
1,392
Ок. Тогда получается первый вариант у нас Port knocking.
Есть еще варианты? Как-то можно отличить коннект клиента от любого другого?
Сообщений: 502
Тем: 36
Зарегистрирован: Mar 2013
Репутация:
3,346
KilRoy Написал:окда. Яхз как и что вы там делаете. По факту - выручало всегда и выручает.
---
Что-бы ЛС дал добро и открыл порты авторизации(в выделенное время, естесно), для начала ему надо выслать пакет нужной длинны - иначе дроп. Других вариантов тупо нет. Сложить аутх, дело простое.
Значит у Вас немного другое понимание порт-кнокинга. Хотя, может быть у меня оно другое, а у Вас нормальное.
|