SA-MP Forums Archive
Атака сервера - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Атака сервера (/showthread.php?tid=400823)

Pages: 1 2 3 4


Атака сервера - stabker - 20.12.2012

За 40 минут сервер вырубался уже 3 раза. Последние сообщения из лога http://pastebin.com/4YCAsxVu
В логе вижу только то, что много подключений посылают и по-словам игроков, сервер начинает лагать.

Сначала думал на ошибку в коде, но по логам видно, что сервер вырубается на разных естественных событиях. То есть, они тут не причем.


Re: Атака сервера - Barabashka - 20.12.2012

https://sampforum.blast.hk/showthread.php?tid=399288


Re: Атака сервера - stabker - 20.12.2012

Quote:
Originally Posted by Barabashka
View Post
С чего вы взяли, что у меня та же самая проблема, как и у вас? И как проследить за тем, сколько он жрет оперативки, покуда у меня сервер на хостинге? Спасибо.


Re: Атака сервера - AirKite - 20.12.2012

Пиши в основной форум на английском. Тут тебе не помогут решить эту проблему.


Re: Атака сервера - stabker - 20.12.2012

Quote:
Originally Posted by AirKite
View Post
Пиши в основной форум на английском. Тут тебе не помогут решить эту проблему.
Я параллельно создал тему в англоязычном разделе https://sampforum.blast.hk/showthread.php?tid=400833


Re: Атака сервера - eakwarp - 20.12.2012

Quote:
Originally Posted by stabker
View Post
С чего вы взяли, что у меня та же самая проблема, как и у вас? И как проследить за тем, сколько он жрет оперативки, покуда у меня сервер на хостинге? Спасибо.
Нормальный хостинг предоставляет лог потребления ресурсов.


Re: Атака сервера - stabker - 20.12.2012

Quote:
Originally Posted by eakwarp
View Post
Нормальный хостинг предоставляет лог потребления ресурсов.
В ПУ ничего подобного нету. Щас в поддержку напишу, гляди, дня через 2 ответят.


Re: Атака сервера - eakwarp - 20.12.2012

Quote:
Originally Posted by stabker
View Post
В ПУ ничего подобного нету. Щас в поддержку напишу, гляди, дня через 2 ответят.
Повод сменить хостинг.


Re: Атака сервера - stabker - 20.12.2012

Quote:
Originally Posted by eakwarp
View Post
Повод сменить хостинг.
Хочу перейти на ru-hoster, но у меня более 97500 аккаунтов (файловых).

Кстати, только что сервер залагал и выкинуло чуть больше 50 игроков. Видимо опять атака.


Re: Атака сервера - stabker - 20.12.2012

Вообщем, вот ответ от техподдержки:

Quote:

Мы не ведем логи статистики потребления ресурсов сервером
Можно настроить вашему порту более усиленную защиту, но нужно знать с какими параметрами: сколько соединений может быть к порту за N секунд

Я не знаю сколько "может быть нормальных соединений за N секунд". Кто-то подскажет? И поможет ли это?


Re: Атака сервера - -Stranger- - 23.12.2012

AirKite, сначала скажите хоть одну причину НЕ удалять управляющие символы из строки диалога?
PS> 50% серверов уязвимы через диалог, типа "000000\nadmin=9999". На нескольких десятков серверов проверял, и причём это были не нубосервера...

Свитч стоит потому что у меня идут ещё и другие замены.

Читами, OnDialogResponse можно вызвать с любым ID игрока, даже 1000


Re: Атака сервера - AirKite - 23.12.2012

Quote:
Originally Posted by DartfoL
View Post
в чате и в командах есть, а в диалогах - нет
Серверная сторона или клиент?

Quote:
Originally Posted by -Stranger-
View Post
AirKite, сначала скажите хоть одну причину НЕ удалять управляющие символы из строки диалога?
PS> 50% серверов уязвимы через диалог, типа "000000\nadmin=9999". На нескольких десятков серверов проверял, и причём это были не нубосервера...

Свитч стоит потому что у меня идут ещё и другие замены.

Читами, OnDialogResponse можно вызвать с любым ID игрока, даже 1000
Такое ощущение что ответ был дан не на мой пост. Где я хоть слово сказал о управляющих символах?
Что значит свитч потому что идут и другие замены? Я о конкретном диапазоне... Вообще case x...y: где между x и y большой диапозон, юзать не целесообразно. И где я хоть слово сказал об идах? Я это подозревал и проверил ещё почти сразу после выхода версии с диалогами. Никогда даже не принимал ид из OnDialogResponse. Вообще нахрен там сделали ID's если диалог может быть всего 1шт (сразу). Логично ведь что ID будет таким же как и тот что ты отправил последний. (Кроме reconnect случаев, но это уже не актуально). Ах да, ещё и максимальный ид диалога ограничен до 32767 (не критично естественно).

Если это всё был не уход от ответа, и вы действительно хотели бы ответить, то пожалуйста перечитайте внимательнее: http://forum.sa-mp.com/showpost.php?...5&postcount=40


Re: Атака сервера - DartfoL - 23.12.2012

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


Re: Атака сервера - -Stranger- - 24.12.2012

AirKite, такое ощущение, что под Вашим аккаунтом сидит куча народа или вы забываете что пишете.

Quote:

Странно... А в скромном примере убило
case 0x00 .. 0x1F

Это и есть управляющие символы, и что тут Вас так 'убило'?

Quote:

Вообще case x...y: где между x и y большой диапозон, юзать не целесообразно.

Лучше сделать 17 if ?

Quote:

И где я хоть слово сказал об идах?

Quote:

Это вообще реально что бы OnDialogResponse ответил с INVALID_PLAYER_ID или ответил от имени отключенного игрока

Вы, друг мой, сами прочтите что написали и сравните 2 поста...


Re: Атака сервера - AirKite - 24.12.2012

-Stranger-, Да уж, кто то из нас упоролся или мною правят зелёные человечики. Если серьёзно, давайте разберёмся уже в недопонимании

Какое отношение INVALID_PLAYER_ID (playerid - тот от кого был отправлен диалог) имеет к dialogid (ID диалога) DIALOG_ID можно подменить, но причём тут playerid?

OnDialogResponse(playerid, dialogid, response, listitem, inputtext)
[данные от клиента (их можно подменить) - грубо говоря SAMP CONNECT ID (архитектура не позволяет его подменить)]

Идём дальше: О case 0x00...0x1F я говорил опять таки не о самих символах 0x00 и 0x1F а о switch и нецелесообразности юзать большой диапазон в switch > case. Ваш способ при компиляции условно создаёт 17 case. Если делать через if достаточно сделать одного условия if(inputtext[itr] >= 0x00 && inputtext[itr] <= 0x1F).

Для того что бы вы поняли о чём речь, попробуйте скомпилировать любой скрипт с диапазоном в case 0...99999999: (Не поленитесь и проверьте, надеюсь это вам поможет).


Re: Атака сервера - eakwarp - 24.12.2012

Quote:
Originally Posted by AirKite
View Post
-Stranger-, Да уж, кто то из нас упоролся или мною правят зелёные человечики. Если серьёзно, давайте разберёмся уже в недопонимании

Какое отношение INVALID_PLAYER_ID (playerid - тот от кого был отправлен диалог) имеет к dialogid (ID диалога) DIALOG_ID можно подменить, но причём тут playerid?

OnDialogResponse(playerid, dialogid, response, listitem, inputtext)
[данные от клиента (их можно подменить) - грубо говоря SAMP CONNECT ID (архитектура не позволяет его подменить)]

Идём дальше: О case 0x00...0x1F я говорил опять таки не о самих символах 0x00 и 0x1F а о switch и нецелесообразности юзать большой диапазон в switch > case. Ваш способ при компиляции условно создаёт 17 case. Если делать через if достаточно сделать одного условия if(inputtext[itr] >= 0x00 && inputtext[itr] <= 0x1F).

Для того что бы вы поняли о чём речь, попробуйте скомпилировать любой скрипт с диапазоном в case 0...99999999: (Не поленитесь и проверьте, надеюсь это вам поможет).
switch - в павне if based, делайте выводы.


Re: Атака сервера - -Stranger- - 24.12.2012

AirKite, всё-же я настаиваю на том, что playerid в OnDialogResponse подменить можно, используя бота.
Но смысл не в том, как это можно сделать, а в том что это можно сделать, и добиться, как минимум вызова playerid, которого не существует на сервере в данный момент.
По мне лучше перестраховаться, и проверить как на IsPlayerConnected, так и на INVALID_PLAYER_ID.
Данная проверка хуже серверу ну никак не сделает. А вот пользу может принести.

На счёт switch > case. Тут больше дело вкуса, но ради интереса сделаю тесты и выложу в эту тему.


Re: Атака сервера - Stepashka - 24.12.2012

Quote:
Originally Posted by -Stranger-
View Post
AirKite, всё-же я настаиваю на том, что playerid в OnDialogResponse подменить можно, используя бота.
Но смысл не в том, как это можно сделать, а в том что это можно сделать, и добиться, как минимум вызова playerid, которого не существует на сервере в данный момент.
По мне лучше перестраховаться, и проверить как на IsPlayerConnected, так и на INVALID_PLAYER_ID.
Данная проверка хуже серверу ну никак не сделает. А вот пользу может принести.

На счёт switch > case. Тут больше дело вкуса, но ради интереса сделаю тесты и выложу в эту тему.
playerid сугубо внутрисерверная переменная и подменить её со стороны клиента нельзя.


Re: Атака сервера - AirKite - 24.12.2012

Quote:
Originally Posted by eakwarp
View Post
switch - в павне if based, делайте выводы.
Да выводы уже были давно сделаны и не только мной, switch работает быстрее if, только вот нужно учитывать то, что проверки по диапазону в switch не может быть. т.е. case 0...9999 по своей сути как макрос, который создаёт case 0:, case 1:, case 2:, case 3:, и в некоторых ситуациях целесообразней использовать if соответственно.

Quote:
Originally Posted by -Stranger-
View Post
AirKite, всё-же я настаиваю на том, что playerid в OnDialogResponse подменить можно, используя бота.
Но смысл не в том, как это можно сделать, а в том что это можно сделать, и добиться, как минимум вызова playerid, которого не существует на сервере в данный момент.

По мне лучше перестраховаться, и проверить как на IsPlayerConnected, так и на INVALID_PLAYER_ID.
Данная проверка хуже серверу ну никак не сделает. А вот пользу может принести
Даже у бота есть свой ID, и он никак не равен INVALID_PLAYER_ID. Ты конечно прав, что лучше перестраховаться. Однако я себе представлял немного иную архитектуру SAMP. Если playerid было бы возможно подменить, это уже бы давно делали. В любом случае твоя проверка не защитит от мистической подмены playerid, ибо по идее playerid создаётся по факту подключения, а если он есть то и IsPlayerConnected вернёт true... в прочем не будем холиварить, я исходных кодов последних версий samp не видел, как и вы

Quote:
Originally Posted by -Stranger-
View Post
На счёт switch > case. Тут больше дело вкуса, но ради интереса сделаю тесты и выложу в эту тему.
На самом деле всё зависит сугубо от ситуации. Пример:
pawn Code:
new tick, lol = 5000;
tick = GetTickCount();
for(new i; i < 100000; i++) {
    switch(lol) {
        case 0..10000: {
            // code
        }
    }
}
printf("SWITCH: %d ms", GetTickCount()-tick);
tick = GetTickCount();
for(new i; i < 100000; i++) {
    if(lol >= 0 && lol <= 10000) {
        // code
    }
}
printf("SWITCH: %d ms", GetTickCount()-tick);
покажет:
Code:
SWITCH: 771 ms
SWITCH: 20 ms
Однако для диапазона в 17, всё же switch будет чуток быстрее.
pawn Code:
new tick, lol = 17;
tick = GetTickCount();
for(new i; i < 100000; i++) {
    switch(lol) {
        case 0..17: {
            // code
        }
    }
}
printf("SWITCH: %d ms", GetTickCount()-tick);
tick = GetTickCount();
for(new i; i < 100000; i++) {
    if(lol >= 0 && lol <= 17) {
        // code
    }
}
printf("SWITCH: %d ms", GetTickCount()-tick);
Code:
SWITCH: 15 ms
SWITCH: 20 ms
p.s. Вспомнил тему где спрашивалось о том, как сделать case 0..∞:


Re: Атака сервера - dimonml - 24.12.2012

Злостный оффтоп: читая дискуссию вспомнилось.

Я сейчас ковыряюсь с united 1.2 и там обнаружилась интересная вещь. В Юнайтеде добавили педов (ид добавленных педов более 300), они без особых проблем подхватились сампом, за исключением колбека OnPlayerSpawn. Не смотря на то, что номер Skin является серверной переменной и кроме как самим сервером никак не выставляется, в обработчике rpc сампа стояла проверка и если SkinId был >= 300, то обработка прекращалась Вполне возможно, что это радумент, но сейчас выглядит довольно смешно.

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