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)

White_116 21/12/2013 02:26 PM

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

Originally Posted by Jon_De (Post 2828227)
никто делиться не хочет как я понял ? :(

Никто и не сделал. Средствами павн этого не сделать. Разве что банальное чтение лога.

Jon_De 21/12/2013 02:34 PM

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

Originally Posted by White_116 (Post 2828243)
Никто и не сделал. Средствами павн этого не сделать. Разве что банальное чтение лога.

хм, я тут смотрю просто - продают всякие труЪ защиты на чистом павне. толи я нуб сделать не могу, толи они - подлые обманщики.

ReDiX 21/12/2013 04:02 PM

Re: Атака сервера
 
У кого вдска, не так сложно в принципе реализовать защиту в самом виртуальном сервере.
Средствами баш скриптинга (bash) и иптаблес (iptables).
Тк как в нехороших сообщениях которые пишутся в лог указывается ип, можно написать скрипт который будет читать сервер лога построчно, если находим нужное нам сообщение к примеру Invalid client connecting from , берем из него ип и отсылаем в иптаблес который соответственно банит игрока, как ожидается бан идет на уровне самого виртуального сервера, так что у забаненого самп-сервер не будет пинговаться.
Таким образом мы не нагружаем самп сервер ибо в работу идет только виртуальный сервер который в принципе справляется с этими задачами путем баш скриптов.Так же можно реализовать разбан этих ипов через опр время.
-----
Если на вашем виртуальном сервере одновременно стоит сайт то забаненый на него не сможет зайти.
Можно закрыть доступ забаненому только к порту на котором стоит самп-сервер.
Соответственно сайт будет доступен для него.
-----
Не всегда же над павном издеваться :)

Flaks 02/01/2014 02:04 AM

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

Originally Posted by DANGER1979 (Post 2803909)
Как вы смотрите на такую защиту
pawn Code:
new gTimer;
public OnFilterScriptInit()
{
    gTimer = SetTimer("GetNetworkStatsTimer", 1000, 1);
    print(" antipizdos v0.2 By: DANGER1979");
    print("_____________________________________________");
    print(" ");
    return true;
}
public OnFilterScriptExit()
{
    KillTimer(gTimer); gTimer = -1;
    return 1;
}
forward GetNetworkStatsTimer();
public GetNetworkStatsTimer()
{
    new stats[500]; new pip[16]; new playername[MAX_PLAYER_NAME];
    for(new i; i<MAX_PLAYERS; i++)
    {
        if(!IsPlayerConnected(i)) continue;
        if(IsPlayerNPC(i)) continue;
        //if(!IsPlayerConnected(i)) return Kick(i);
        //new stats[418+1];
        GetPlayerNetworkStats(i, stats, sizeof(stats));
       
        new MSB = strval(findParam(stats, "Messages in Send buffer: "));
        if(MSB > 10000) {
            GetPlayerName(i, playername, sizeof(playername));
            GetPlayerIp(i, pip, sizeof(pip));
            printf("antipizdos: kick %s[%d][ip:%s]. Messages in Send buffer: %d", playername, i, pip, MSB);
            Kick(i);
        }
       
        new AS = strval(findParam(stats, "Acks sent: "));
        if(AS > 3000) {
            GetPlayerName(i, playername, sizeof(playername));
            GetPlayerIp(i, pip, sizeof(pip));
            printf("antipizdos: kick %s[%d][ip:%s]. Acks sent: %d", playername, i, pip, AS);
            Kick(i);
        }
    }
    return 1;
}

проверил вроде работает
[02/12/2013 12:53:30] Packet was modified, sent by id: 15, ip: 188.116.54.12:51757
...
[02/12/2013 12:53:33] Packet was modified, sent by id: 15, ip: 188.116.54.12:51757
[02/12/2013 12:53:33] antipizdos: kick Vova_Betman[15][ip:188.116.54.12]. Acks sent: 4197

что не так? что исправить? как у вас?

what is FINDPARAM ?

stabker 07/05/2014 10:54 PM

Re: Атака сервера
 
От флуда incomming connection. Делал на будущее для себя и решил выложить сюда (хотя бы в качестве примера). Не тестировал. Если собираетесь использовать, настоятельно рекомендую настроить и оттестировать.

pawn Code:
public OnIncomingConnection(playerid, ip_address[], port)
{
    #define MAX_IPS         25      //Максимальное количество ип адресов, которое может храниться в массиве
    #define MAX_WARNINGS    10      //Максимальное количество предупреждений, после которого последует бан
    #define MIN_INTERVAL    3000    //Минимальный интервал между подключениями (в миллисекундах)
   
    enum ip_enumerator
    {
        Ip[16],
        Second
    }
    static Connection[MAX_IPS][ip_enumerator], Ip_Warnings[MAX_IPS char];
   
    if(!strcmp("127.0.0.1", ip_address)) return 1; //Ботов не проверяем
   
    new curtick = GetTickCount(), i;
   
    for(; i < MAX_IPS; i++)
    {
        if(Connection[i][Ip][0] == ip_address[0] && !strcmp(ip_address, Connection[i][Ip]))
        {
            if(curtick - Connection[i][Second] < MIN_INTERVAL)
            {
                if(Ip_Warnings{i}++ > MAX_WARNINGS)
                {
                    BlockIpAddress(ip_address, 600000);
                    Connection[i][Ip][0] = EOS;
                    Connection[i][Second] = Ip_Warnings{i} = 0;
                    //Не знаю, нужно ли здесь самому кикать этого игрока
                    return 1;
                }
            }
            else Ip_Warnings{i} = 0;
           
            Connection[i][Second] = curtick;
           
            return 1;
        }
    }
   
    for(i = 0; i < MAX_IPS; i++)
    {
        if(curtick - Connection[i][Second] > MIN_INTERVAL)
        {
            strmid(Connection[i][Ip], ip_address, 0, 16, 16);
            Connection[i][Second] = curtick;
            Ip_Warnings{i} = 0;
            break;
        }
    }
   
    return 1;
}

Dragunovje 08/05/2014 09:23 AM

Re: Атака сервера
 
от эксплойта диалога защита есть.

SHOROOP 08/05/2014 12:04 PM

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

Originally Posted by ReDiX (Post 2828398)
У кого вдска, не так сложно в принципе реализовать защиту в самом виртуальном сервере.
Средствами баш скриптинга (bash) и иптаблес (iptables).
Тк как в нехороших сообщениях которые пишутся в лог указывается ип, можно написать скрипт который будет читать сервер лога построчно, если находим нужное нам сообщение к примеру Invalid client connecting from , берем из него ип и отсылаем в иптаблес который соответственно банит игрока, как ожидается бан идет на уровне самого виртуального сервера, так что у забаненого самп-сервер не будет пинговаться.
Таким образом мы не нагружаем самп сервер ибо в работу идет только виртуальный сервер который в принципе справляется с этими задачами путем баш скриптов.Так же можно реализовать разбан этих ипов через опр время.
-----
Если на вашем виртуальном сервере одновременно стоит сайт то забаненый на него не сможет зайти.
Можно закрыть доступ забаненому только к порту на котором стоит самп-сервер.
Соответственно сайт будет доступен для него.
-----
Не всегда же над павном издеваться :)

Логика, безусловно, здравая, только при большом потоке флуда метод не сработает. Либо забьют всю ширину канала до ВДСки, либо хостер раньше заблэкхолит.


All times are GMT. The time now is 04:22 PM.

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