Re: Атака сервера -
Jon_De - 21.12.2013
Quote:
Originally Posted by White_116
Никто и не сделал. Средствами павн этого не сделать. Разве что банальное чтение лога.
|
хм, я тут смотрю просто - продают всякие труЪ защиты на чистом павне. толи я нуб сделать не могу, толи они - подлые обманщики.
Re: Атака сервера -
ReDiX - 21.12.2013
У кого вдска, не так сложно в принципе реализовать защиту в самом виртуальном сервере.
Средствами баш скриптинга (bash) и иптаблес (iptables).
Тк как в нехороших сообщениях которые пишутся в лог указывается ип, можно написать скрипт который будет читать сервер лога построчно, если находим нужное нам сообщение к примеру Invalid client connecting from , берем из него ип и отсылаем в иптаблес который соответственно банит игрока, как ожидается бан идет на уровне самого виртуального сервера, так что у забаненого самп-сервер не будет пинговаться.
Таким образом мы не нагружаем самп сервер ибо в работу идет только виртуальный сервер который в принципе справляется с этими задачами путем баш скриптов.Так же можно реализовать разбан этих ипов через опр время.
-----
Если на вашем виртуальном сервере одновременно стоит сайт то забаненый на него не сможет зайти.
Можно закрыть доступ забаненому только к порту на котором стоит самп-сервер.
Соответственно сайт будет доступен для него.
-----
Не всегда же над павном издеваться
Re: Атака сервера -
Flaks - 02.01.2014
Quote:
Originally Posted by DANGER1979
Как вы смотрите на такую защиту
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 ?
Re: Атака сервера -
stabker - 07.05.2014
От флуда 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;
}
Re: Атака сервера -
Dragunovje - 08.05.2014
от эксплойта диалога защита есть.
Re: Атака сервера -
SHOROOP - 08.05.2014
Quote:
Originally Posted by ReDiX
У кого вдска, не так сложно в принципе реализовать защиту в самом виртуальном сервере.
Средствами баш скриптинга (bash) и иптаблес (iptables).
Тк как в нехороших сообщениях которые пишутся в лог указывается ип, можно написать скрипт который будет читать сервер лога построчно, если находим нужное нам сообщение к примеру Invalid client connecting from , берем из него ип и отсылаем в иптаблес который соответственно банит игрока, как ожидается бан идет на уровне самого виртуального сервера, так что у забаненого самп-сервер не будет пинговаться.
Таким образом мы не нагружаем самп сервер ибо в работу идет только виртуальный сервер который в принципе справляется с этими задачами путем баш скриптов.Так же можно реализовать разбан этих ипов через опр время.
-----
Если на вашем виртуальном сервере одновременно стоит сайт то забаненый на него не сможет зайти.
Можно закрыть доступ забаненому только к порту на котором стоит самп-сервер.
Соответственно сайт будет доступен для него.
-----
Не всегда же над павном издеваться 
|
Логика, безусловно, здравая, только при большом потоке флуда метод не сработает. Либо забьют всю ширину канала до ВДСки, либо хостер раньше заблэкхолит.