Merhaba Arkadaşlar, Bugün sunucularıma gelen saldırı üzerine bu konuyu açıyorum .Sunucularında eklenti kullanmayıpda IPTables ile fixleyenler için açtım.HLDS Fake Players ın yeni 2012 sürümü çıktı bu sürümle beraber farklı port kombinasyonları ve farklı hız akışıyla IPTables ve eski flood eklentisini atlatıp sunucuya saldırı yapabiliyor.Fixini Paylaşıyorum Sıkıntısı Olan Arkadaşlar hemen uygulasınlar.Bazı çoluk çocuklar ellerine oyuncak geçince firmalara saldırıp ekmekleriyle oynamaya çalışıyorlar.Dediğim kişiler kendilerini biliyorlar eminim o kişiler yorumda atıcaktır kendini belli etmeden uzatmadan eklenti kaynak kodlarını veriyorum

#include <amxmodx> 
#include <orpheu> 
#define PLUGIN "Anti flood" 
#define VERSION "1.1" 
#define AUTHOR "kanagava" 
//native halflife_time ( ) 
// Ajustes menores al plug-in 
new MAX_WARN=1 // El número de advertencias después de que la IP se prohibió recomendado [1-2] 
new CONN_TIME=2 // Tiempo mínimo entre conexiones al servidor para permitir 
// (Si las conexiones entre segundo conn_time más pequeños de la prueba) se recomienda [1-3] 
new CONN_TIME_IP=3 // El tiempo mínimo entre las conexiones de una IP a emitir advertencias recomendadas [1-5] 
new RST_WARN_TIME_IP=10 // Tiempo máximo entre las conexiones de una IP a restablecer advertencias 
// Necesidad [RST_WARN_TIME_IP>CONN_TIME_IP] 

new Msg[256] 
new OrpheuHook:handlePrintf 
new ip_list[5][16] 
new time_list[5] 
new warn_list[5] 
new old_time 
new registered 
public plugin_init() 
{ 
    register_plugin(PLUGIN, VERSION, AUTHOR) 
    set_task(5.0, "regfunctions")  
    register_srvcmd("floodlist","floodlist")  
} 

public regfunctions() 
{ 
    //log_amx("try to reg_func") 
    OrpheuRegisterHook(OrpheuGetFunction("SV_ConnectClient"),"OnSV_ConnectClientPre", OrpheuHookPre) 
    OrpheuRegisterHook(OrpheuGetFunction("SV_ConnectClient"),"OnSV_ConnectClientPost", OrpheuHookPost) 
    server_cmd("mp_logecho 1") 
    server_cmd("log on") 
} 

public OrpheuHookReturn:OnSV_ConnectClientPre() 
{ 
    registered=0 
    if(get_systime()-old_time <= CONN_TIME) 
    { 
        //log_amx("Reg %d %d ",halflife_time ( ), get_systime()) 
        handlePrintf = OrpheuRegisterHook( OrpheuGetFunction( "Con_Printf" ), "Con_Printf" , OrpheuHookPre); 
        registered=1 
        //log_amx("Reg %d %d ",halflife_time ( ), get_systime()) 
    } 
    old_time=get_systime() 
    return OrpheuIgnored; 
} 


public OrpheuHookReturn:OnSV_ConnectClientPost() 
{ 
    if(registered) 
    { 
        OrpheuUnregisterHook(handlePrintf) 
        //log_amx("Unreg %d %d ",halflife_time ( ), get_systime()) 
    } 
    return OrpheuIgnored; 
} 

public OrpheuHookReturn:Con_Printf(const a[], const message[] ) 
{ 
    registered=1 
    if (containi(message,"^" connected, address ^"")!=-1) 
    { 
        new msg[256] 
        copy(msg,255,message) 
        checkip(msg) 
    } 
    return OrpheuIgnored; 
} 

public floodlist() 
{ 
    new h_time[32] 
    console_print(0,"Floodding IP list by Dan'ka :D") 
    for (new i=0;i<5;i++) 
        {    if(time_list[i]!=0) 
    { 
        format_time ( h_time,31, "%d.%m %H:%M:%S",time_list[i]) 
        console_print(0,"[%d] [IP %s] [TIME %s]   [WARN's %d]",i,ip_list[i],h_time,warn_list[i]) 
    } 
} 
} 

public checkip(message[]) 
{ 
    new len=255 
    new temp_right[256],temp_left[256],conn_ip[256] 
    formatex( Msg,charsmax( Msg ),"%s", message ); 
    split(Msg, temp_left, len, temp_right, len, "^" connected, address ^"") 
    strtok(temp_right, conn_ip, len, temp_right, len, ':') 
    new mintime 
    new replace_index 
    mintime=get_systime() 
    for (new i=0;i<5;i++) 
    { 
        if (time_list[i]<mintime ) 
        { 
            mintime=time_list[i] 
            replace_index=i 
        } 
        
    } 
    new ipwarn 
    ipwarn=false 
    for (new i=0;i<5;i++) 
    {    
        if (equal(conn_ip,ip_list[i]) && !equal(conn_ip,"")) 
        { 
            if ((get_systime()-time_list[i])<CONN_TIME_IP) 
            { 
                warn_list[i]=warn_list[i]+1 
                if(warn_list[i]>MAX_WARN) 
                { 
                    //log_amx("Ban %d %d ",halflife_time ( ), get_systime()) 
                    log_amx("[NOFLOOD] Connection flood detected from ip %s",conn_ip) 
                    server_cmd("addip 120.0 %s",conn_ip) 
                } 
            } 
            else 
            { 
                if ((get_systime()-time_list[i])>RST_WARN_TIME_IP) 
                    warn_list[i]=0 
            } 
                
            time_list[i]=get_systime() 
            ipwarn=true 
            break 
        } 
    } 
        
    if (!ipwarn) 
    { 
        warn_list[replace_index]=0 
        time_list[replace_index]=get_systime() 
        copy(ip_list[replace_index],15,conn_ip) 
    } 
}