SA-MP Forums

SA-MP Forums (https://forum.sa-mp.com/index.php)
-   Русский/Russian (https://forum.sa-mp.com/forumdisplay.php?f=32)
-   -   Атака сервера (https://forum.sa-mp.com/showthread.php?t=400823)

eakwarp 06/07/2013 04:58 PM

Re: Атака сервера
 
Quote:

Originally Posted by Jon_De (Post 2600976)
те же симптомы (ботов выбивает, сервер на 30 сек виснет, варнинги от простых игроков), как исправил?

На данный момент уже не помню, свежая версия сервера, вроде как.

Jon_De 06/07/2013 05:04 PM

Re: Атака сервера
 
сейчас точно такая же проблема. судя по гетнетворк, отловить можно, но
1) игрок зашел
2) послал большое кол-во данных
3) вышел (!!)

после чего сервер уже начал виснуть

это мои данные, за несколько минут игры
Messages sent: 1332
Bytes sent: 56517
KBits per second sent: 7162435.0
KBits per second received: 7201775.7


это его данные за несколько секунд игры
Messages sent: 711
Bytes sent: 30555
KBits per second sent: 29858181.8
KBits per second received: 30012825.3

если его и забанить, всё равно сервер повиснет думаю, потому что на момент вылета игроков, его уже нет

James_Braga 18/07/2013 09:13 AM

Re: Атака сервера
 
Аналогичная ситуация, как мне сказал атакующий, что он даже не заходит на сервер, сервер просто подвисает на секунд 5-10 и всё игроки теряют соединение с сервером.

Думал по началу что то в коде упустил работал сервер в дебаге день, и не одной ошибки, просто игроки теряют соединение и заново подключаются.

Jon_De 18/07/2013 10:24 AM

Re: Атака сервера
 
он не заходит, но бот заходит. никто походу исправлять не собирается, уже много людей жаловались в сервер саппорт

White_116 18/07/2013 10:47 AM

Re: Атака сервера
 
0.3x как бы намекает.

hub4 18/07/2013 12:41 PM

Re: Атака сервера
 
старую бабку заточили штоле? ну от мп только нет защиты, но оно не валит серв. остальное по нетстату вычисляется

Jon_De 18/07/2013 01:02 PM

Re: Атака сервера
 
Quote:

Originally Posted by hub4 (Post 2618440)
старую бабку заточили штоле? ну от мп только нет защиты, но оно не валит серв. остальное по нетстату вычисляется

по каким параметрам? у меня Acks sent на локалке ок работает, на хостинге не успевает словить ничего

White_116 18/07/2013 01:09 PM

Re: Атака сервера
 
Byte Recive:

BJIADOKC 18/07/2013 11:19 PM

Re: Атака сервера
 
Quote:

Originally Posted by dimonml (Post 2286905)
Так и тут: если удалось подменить player_id, то злоумышленник способен отсылать rpc вызовы от имени любого игрока и вся архитектура шифрования сессий RakNet уже скомпрометирована: наличие дополнительной проверки сервер уже не спасет :)

Немного вас повеселю.
http://savepic.ru/4696500.png
Как это прикажете понимать? :)

White_116 19/07/2013 11:11 AM

Re: Атака сервера
 
Quote:

Originally Posted by BJIADOKC (Post 2619396)
Немного вас повеселю.
http://savepic.ru/4696500.png
Как это прикажете понимать? :)

Остался на сетевом уровне, не?
Ban(playerid) спасёт мир. :D

BJIADOKC 19/07/2013 11:15 AM

Re: Атака сервера
 
Quote:

Originally Posted by White_116 (Post 2619954)
Остался на сетевом уровне, не?
Ban(playerid) спасёт мир. :D

Просто тут все в один голос утверждали, что от невалидного playerid нельзя отправлять пакеты, и тем более вызывать коллбэки. Я и решил немного опровергнуть их точку зрения :)

hub4 19/07/2013 03:54 PM

Re: Атака сервера
 
такие записи в логе были и на старой версии. т.е. отвал бота а потом от него еще пакеты летят.
из буфера наверно. т.е. ничего нового, имхо

BJIADOKC 19/07/2013 04:40 PM

Re: Атака сервера
 
Quote:

Originally Posted by hub4 (Post 2620286)
такие записи в логе были и на старой версии. т.е. отвал бота а потом от него еще пакеты летят.
из буфера наверно. т.е. ничего нового, имхо

Нет, вы не представляете, но из-за криворукости *кхм-кхм* отключенный игрок может посылать RPC пакеты на сервер :)

DartfoL 19/07/2013 05:44 PM

Re: Атака сервера
 
Quote:

Originally Posted by BJIADOKC (Post 2619396)
Немного вас повеселю.
http://savepic.ru/4696500.png
Как это прикажете понимать? :)

зачем ты пропалил название проги?

BJIADOKC 20/07/2013 01:14 AM

Re: Атака сервера
 
Quote:

Originally Posted by DartfoL (Post 2620452)
зачем ты пропалил название проги?

Я думаю ни один разумный человек качать ее не будет, так как она с нештой

stabker 20/07/2013 02:52 PM

Re: Атака сервера
 
На ргхосте есть и вылеченная. Да и вылечить-то проще простого

exclide1 06/08/2013 04:37 PM

Re: Атака сервера
 
У меня нету подобного в логах, но сервер падает на раз. Насколько я понимаю, это функции "Dos+100" и "DoZer". Как от них защититься?

AirKite 06/08/2013 04:54 PM

Re: Атака сервера
 
Quote:

Originally Posted by BJIADOKC (Post 2619956)
Просто тут все в один голос утверждали, что от невалидного playerid нельзя отправлять пакеты, и тем более вызывать коллбэки. Я и решил немного опровергнуть их точку зрения :)

И я даже был инициатором этого холивара. Во первых скриншот ваш ничего не опровергает, а во вторых речь шла о невалидном playerid, т.е. произвольный ид, не полученной сессии клиентом. Например взять и отправить пакет от любого не присвоенного ему playerid и что уж ещё тем более (как тут многие усерались) от INVALID_PLAYERID.

Ничего конкретного, по вашему случаю не скажу, однако решение вопроса херня. Вот только честно говоря я сомневаюсь в валидности вашего OnPlayerDisconnect, в противном случае блокируйте всё после OnPlayerDisconnect...

exclide1 12/08/2013 10:33 PM

Re: Атака сервера
 
Вот что напилил...
pawn Code:
forward hTimer();
public hTimer()
{
    new stats[500], KBits[5];
    for(new i; i<MAX_PLAYERS; i++)
    {
        if(!IsPlayerNPC(i))
        {
            if(!IsPlayerConnected(i)) return Kick(i); //защита от "фейк" дисконнекта
            GetPlayerNetworkStats(i,stats,sizeof(stats));
            new temp = strfind(stats,"Inst. KBits per second:");
            strmid(KBits,stats,temp+23,sizeof(stats));
            new k = strval(KBits);
            printf("%i is %i",i,k);
            if(k>150) Kick(i);
        }
    }
    return 1;
}
На первый взгляд работает нормально. Ну и еще, чтобы отсеивать большинство пользователей бота:
pawn Code:
public OnPlayerText(playerid, text[])
{
    if(!strcmp(text,"Бля админы скажите что делать чтобы дальше регаться у меня ничего не нетууу")) Ban(playerid);
    return 0;
}

Jon_De 13/08/2013 10:16 AM

Re: Атака сервера
 
Inst. KBits per second: спокойно у простого игрока может за 100 переваливать, а у читера оставаться в норме

exclide1 13/08/2013 10:18 AM

Re: Атака сервера
 
Quote:

Originally Posted by Jon_De (Post 2657243)
Inst. KBits per second: спокойно у простого игрока может за 100 переваливать, а у читера оставаться в норме

Нет. Я проверял, прежде чем скинуть.

stabker 13/08/2013 10:41 AM

Re: Атака сервера
 
exclide1, а что за "фейк дисконнект" вообще? Подробнее об этом можно?

exclide1 13/08/2013 10:46 AM

Re: Атака сервера
 
Quote:

Originally Posted by stabker (Post 2657259)
exclide1, а что за "фейк дисконнект" вообще? Подробнее об этом можно?

Это функция все в том же PizDoS-боте "bypass protection". Вы как бы покидаете сервер (идет OnPlayerDisconnect), но на самом деле остаетесь на нем. Подробнее этого пока не могу, только начал изучать RakSAMP.

stabker 13/08/2013 10:57 AM

Re: Атака сервера
 
Quote:

Originally Posted by exclide1 (Post 2657264)
Это функция все в том же PizDoS-боте "bypass protection". Вы как бы покидаете сервер (идет OnPlayerDisconnect), но на самом деле остаетесь на нем. Подробнее этого пока не могу, только начал изучать RakSAMP.

pawn Code:
public OnPlayerDisconnect(playerid, reason)
{
    //...
    Kick(playerid);
    return 1;
}

:cool:

XemyL 13/08/2013 11:42 AM

Re: Атака сервера
 
Quote:

Originally Posted by stabker (Post 2657275)
pawn Code:
public OnPlayerDisconnect(playerid, reason)
{
    //...
    Kick(playerid);
    return 1;
}

:cool:

И привет рекурсия.

pawn Code:
public OnPlayerDisconnect(playerid, reason)
{
    //...
    if(reason < 2) Kick(playerid);
    return 1;
}

exclide1 13/08/2013 11:53 AM

Re: Атака сервера
 
Quote:

Originally Posted by XemyL (Post 2657323)
И привет рекурсия.

pawn Code:
public OnPlayerDisconnect(playerid, reason)
{
    //...
    if(reason < 2) Kick(playerid);
    return 1;
}

Можно ограничиться "if(!reason) Kick(playerid);", т.к. при том дисконнекте идет таймаут.

stabker 13/08/2013 11:58 AM

Re: Атака сервера
 
Quote:

Originally Posted by XemyL (Post 2657323)
И привет рекурсия.

pawn Code:
public OnPlayerDisconnect(playerid, reason)
{
    //...
    if(reason < 2) Kick(playerid);
    return 1;
}

Не совсем, но профлудит, пока игрок не отключится окончательно.

pawn Code:
public OnPlayerDisconnect(playerid)
{
    static DisconnectState[MAX_PLAYERS char];
    if(!DisconnectState{playerid}) Kick(playerid), DisconnectState{playerid} = 1;
    else DisconnectState{playerid} = 0;
}

ЗЫ. Такой код может повлиять на работу некоторых инклудов/плагинов

sniper-termit 15/08/2013 10:37 AM

Re: Атака сервера
 
Quote:

Originally Posted by stabker (Post 2657275)
pawn Code:
public OnPlayerDisconnect(playerid, reason)
{
    //...
    Kick(playerid);
    return 1;
}

:cool:

Уже давно начали подменять причину выхода, отправляется пакет что ты как-бы кикнут, но ты еще можешь спокойно сервер положить.

Stepashka 15/08/2013 11:34 AM

Re: Атака сервера
 
Quote:

Originally Posted by sniper-termit (Post 2659734)
Уже давно начали подменять причину выхода, отправляется пакет что ты как-бы кикнут, но ты еще можешь спокойно сервер положить.

И по фиг что причина выхода определяется и устанавливается на сервере.
Бред в преть писать не будем, ок!?

Jon_De 15/08/2013 06:18 PM

Re: Атака сервера
 
Quote:

Originally Posted by sniper-termit (Post 2659734)
Уже давно начали подменять причину выхода, отправляется пакет что ты как-бы кикнут, но ты еще можешь спокойно сервер положить.

Если в OnPlayerDisconnect кикнуть еще в добавок, то уже не сможешь

AirKite 15/08/2013 07:26 PM

Re: Атака сервера
 
Stepashka, можешь что ни будь сказать по этому поводу? После OnPlayerDisconnect реально выполнять какие либо действия?

Stepashka 16/08/2013 05:26 AM

Re: Атака сервера
 
Quote:

Originally Posted by AirKite (Post 2660333)
Stepashka, можешь что ни будь сказать по этому поводу? После OnPlayerDisconnect реально выполнять какие либо действия?

OnPlayerDisconnect сугубо серверное событие и происходит когда игрок уже вышел с сервера, думаю я ответил на ваш вопрос.

DartfoL 16/08/2013 07:03 AM

Re: Атака сервера
 
Quote:

Originally Posted by Stepashka (Post 2660739)
OnPlayerDisconnect сугубо серверное событие и происходит когда игрок уже вышел с сервера, думаю я ответил на ваш вопрос.

А в сервере есть эксплоит: если отправить системный пакет (который в обычных случаях создаётся исключительно внутри сервера), то сервак обработает его и произойдёт вызов OnPlayerDisconnect с причиной 0, а сам игрок не будет удален из пула клиентов, и можно будет делать некоторые действия (не все, потому что 95% коллбэков защищены от этого) :)

Stepashka 16/08/2013 07:07 AM

Re: Атака сервера
 
Quote:

Originally Posted by DartfoL (Post 2660780)
А в сервере есть эксплоит: если отправить системный пакет (который в обычных случаях создаётся исключительно внутри сервера), то сервак обработает его и произойдёт вызов OnPlayerDisconnect с причиной 0, а сам игрок не будет удален из пула клиентов, и можно будет делать некоторые действия (не все, потому что 95% коллбэков защищены от этого) :)

вот о таких эксплойтах нужно писать сразу разрабам, потому что это серьезная дыра.

AirKite 16/08/2013 08:48 AM

Re: Атака сервера
 
Quote:

Originally Posted by DartfoL (Post 2660780)
А в сервере есть эксплоит: если отправить системный пакет (который в обычных случаях создаётся исключительно внутри сервера), то сервак обработает его и произойдёт вызов OnPlayerDisconnect с причиной 0, а сам игрок не будет удален из пула клиентов, и можно будет делать некоторые действия (не все, потому что 95% коллбэков защищены от этого) :)

Подтверждения этому есть? Кроме логов.

DartfoL 16/08/2013 08:50 AM

Re: Атака сервера
 
Quote:

Originally Posted by AirKite (Post 2660848)
Подтверждения этому есть? Кроме логов.

Да, есть, в исходнике того рак-сами знаете чего, в cmds.cpp
Если разобраться в структуре пакетов ракнета, и взглянуть на команду - всё станет очевидно

James_Braga 16/08/2013 02:05 PM

Re: Атака сервера
 
Quote:

Originally Posted by DartfoL (Post 2660780)
А в сервере есть эксплоит: если отправить системный пакет (который в обычных случаях создаётся исключительно внутри сервера), то сервак обработает его и произойдёт вызов OnPlayerDisconnect с причиной 0, а сам игрок не будет удален из пула клиентов, и можно будет делать некоторые действия (не все, потому что 95% коллбэков защищены от этого) :)

по этому некоторые и используют кик в дисконекте, но это не лучшая идея.

x_O 16/08/2013 02:13 PM

Re: Атака сервера
 
Quote:

Originally Posted by James_Braga (Post 2661130)
по этому некоторые и используют кик в дисконекте, но это не лучшая идея.

Предложи по лучше что-нибудь ???

DartfoL 16/08/2013 02:25 PM

Re: Атака сервера
 
Quote:

Originally Posted by Stepashka (Post 2660783)
вот о таких эксплойтах нужно писать сразу разрабам, потому что это серьезная дыра.

я уже 100 раз писал про рак-сами знаете чего и про всякие эксплоиты, но разработчикам как-то пофигу :(

James_Braga 17/08/2013 10:32 AM

Re: Атака сервера
 
Quote:

Originally Posted by DartfoL (Post 2661159)
я уже 100 раз писал про рак-сами знаете чего и про всякие эксплоиты, но разработчикам как-то пофигу :(

писать нужно не сюда, а в http://forum.sa-mp.com/forumdisplay.php?f=20
языковые разделы это просто форумы для обсуждения тем.


All times are GMT. The time now is 07:18 PM.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.