Seguridad para tu server de mu Completa..Sygate Firewalll Manual,AntiInjection,WEb,AD

Tema en 'Servidores de Mu Online' iniciado por Nikous, 20 Feb 2010.

?

¿Te Sirvio?

  1. Sii..lo andaba buscando!!

    1 voto(s)
    100,0%
  2. Lo vi..Me gusto y Lo use...

    0 voto(s)
    0,0%
  3. No pero me sirvio :D

    0 voto(s)
    0,0%
  4. Un desperdicio de Post :(

    0 voto(s)
    0,0%
  1. Nik

    Nikous
    Expand Collapse
    Recluta

    Mensajes:
    2
    Me Gusta recibidos:
    0
    Hola a todos...
    Les traigo la solucion para tener su server seguro sin utilizar algunos programitas que por ahi traen algunos problemitas..

    Bueno, esta guia es para que tengan su servidor 100% seguros a editores blasteros, inyecciones sql y otras modificaciones via WEB, modificación en el SQL y demás, sin necesidad de bajar otros programas.

    La mayoria de las partes son rejuntes de otras guias
    Primero de todo vamos a evitar a los editados que usan programas blasters y demás..

    Es muy sencillo, sin uso de un programa firewall (Sygate, Karpersky, etc), simplemente con el prestigiado Firewall de Windows.

    Proteger servidor contra editados

    1. Ingresamos al Panel de Controll desde Inicio > Configuración > Panel de Control
    2. Una vez dentro, pondremos "Cambiar vista a clásica" y abrimos Firewall de windows
    3. Marcamos en Activado y nos vamos a la pestaña Excepciones
    4. Clickeamos "Agregar programa" y vamos agregando uno por uno los links de nuestro servidor.
    5. Luego de agregar todos, apretamos OK y nos deja en la pestaña Excepciones de nuevo, desmarcamos todas las casillas de nuestros links menos la del GameServer y ConnectServer, es decir, tendrian que quedar todas desmarcadas menos el GameServer y el ConnectServer.
    6. Ahora clickeamos en "Agregar puerto" y agregamos el nombre 1023 y puerto 1023 con UDP, luego presionamos Aceptar y volvemos a agregar otro puerto con nombre 1023 y puerto 1023 con TCP, presionamos Aceptar, luego repetimos los mismos pasos con UDP y TCP pero al puerto 1024.
    7. Presionamos Aplicar y luego Aceptar
    8. Desmarcamos las casillas de los puertos 1023, 1023, 1024 y 1024 de tal manera que los UDP y TCP de cada puerto queden bloqueados (desmarcados).

    Listo!, nuestro servidor protegido de editados. Y no vengan a decir, que esto no funciona, que se necesita un firewall sí o sí, porque es MENTIRA, .También esto les agrega protección al SQL Server, es decir, no tendran acceso a donde se encuentran las Base de Datos MuOnline, ni nada por el estilo.

    Proteger nuestra página web y servidor web para evitar Inyecciones SQL y demás.

    1. Vamos al archivo de configuración de nuestra página, sea config.php, config.htpasswd u otros.

    2. Al principio de este archivo, agregamos el siguiente texto:


    <?php
    $ip = $_SERVER['REMOTE_ADDR'];
    $time = date("l dS of F Y h:i:s A";
    $script = $_SERVER[PATH_TRANSLATED];
    $fp = fopen ("[WEB]SQL_Injection.txt", "a+";
    $sql_inject_1 = array(";","'","%",'"'); #Whoth need replace
    $sql_inject_2 = array("", "","","&quot;"; #To wont replace
    $GET_KEY = array_keys($_GET); #array keys from $_GET
    $POST_KEY = array_keys($_POST); #array keys from $_POST
    $COOKIE_KEY = array_keys($_COOKIE); #array keys from $_COOKIE
    /*begin clear $_GET */
    for($i=0;$i<count($GET_KEY);$i++)
    {
    $real_get[$i] = $_GET[$GET_KEY[$i]];
    $_GET[$GET_KEY[$i]] = str_replace($sql_inject_1, $sql_inject_2, HtmlSpecialChars($_GET[$GET_KEY[$i]]));
    if($real_get[$i] != $_GET[$GET_KEY[$i]])
    {
    fwrite ($fp, "IP: $ip\r\n";
    fwrite ($fp, "Method: GET\r\n";
    fwrite ($fp, "Value: $real_get[$i]\r\n";
    fwrite ($fp, "Script: $script\r\n";
    fwrite ($fp, "Time: $time\r\n";
    fwrite ($fp, "==================================\r\n";
    }
    }
    /*end clear $_GET */
    /*begin clear $_POST */
    for($i=0;$i<count($POST_KEY);$i++)
    {
    $real_post[$i] = $_POST[$POST_KEY[$i]];
    $_POST[$POST_KEY[$i]] = str_replace($sql_inject_1, $sql_inject_2, HtmlSpecialChars($_POST[$POST_KEY[$i]]));
    if($real_post[$i] != $_POST[$POST_KEY[$i]])
    {
    fwrite ($fp, "IP: $ip\r\n";
    fwrite ($fp, "Method: POST\r\n";
    fwrite ($fp, "Value: $real_post[$i]\r\n";
    fwrite ($fp, "Script: $script\r\n";
    fwrite ($fp, "Time: $time\r\n";
    fwrite ($fp, "==================================\r\n";
    }
    }
    /*end clear $_POST */
    /*begin clear $_COOKIE */
    for($i=0;$i<count($COOKIE_KEY);$i++)
    {
    $real_cookie[$i] = $_COOKIE[$COOKIE_KEY[$i]];
    $_COOKIE[$COOKIE_KEY[$i]] = str_replace($sql_inject_1, $sql_inject_2, HtmlSpecialChars($_COOKIE[$COOKIE_KEY[$i]]));
    if($real_cookie[$i] != $_COOKIE[$COOKIE_KEY[$i]])
    {
    fwrite ($fp, "IP: $ip\r\n";
    fwrite ($fp, "Method: COOKIE\r\n";
    fwrite ($fp, "Value: $real_cookie[$i]\r\n";
    fwrite ($fp, "Script: $script\r\n";
    fwrite ($fp, "Time: $time\r\n";
    fwrite ($fp, "==================================\r\n";
    }
    }

    /*end clear $_COOKIE */
    fclose ($fp);
    ?>



    Luego guardamos y cerramos el archivo.

    Listo!, la página ya esta protegida un 90% contra estas Inyecciones.

    Además, creara un archivo de texto llamado [WEB]SQL_Injection.txt cada vez que se intenten editar, lo abren y verán lo que intentaron hacer, si editarse, borrar los personajes del servidor u otras cosas.

    Ahora vamos a segurar el servidor WEB.

    1. Vamos al archivo de configuración del mismo, en Appserv (Apache), es el archivo php.ini y se ingresa por Inicio > Ejecutar > c:/windows/php.ini, o si tienen XAMPP (Apache) en c:/xampp/php (o xampplite si es otra versión) y abren el archivo php.ini (en algunas versiones figura con php5.ini

    2. Una vez en el archivo, buscamos las siguientes lineas una por una y las modificamos.

    safe_mode = On
    ;Habilita el modo seguro, con esto bloqueamos la mayoria de las caracteristicas de las "shell".

    memory_limit = 2M
    ;Con esto prevenimos que los script consuman mucha memoria que no necesita.

    register_globals = Off
    ;Esto previene que se definan valores mediante la url.

    magic_quotes_gpc = On
    ; Poniendola OFF, reemplaza las comillas simples y dobles del POST/GET/Cookie por barras (Slash)

    magic_quotes_runtime = Off
    ;Si magic_quotes_runtime está habilitado, la mayoría de funciones que devuelven datos de alguna clase de fuente externa, incluyendo bases de datos y archivos de texto, tendrán las comillas escapadas con barras invertidas

    file_uploads = Off
    ; Evita que se suban archivos desde PHP.

    sql.safe_mode = On


    Este codigo es para que las personas que dupean en sus server, sean baneadas automaticamente despues de desconectarse del servidor, asi seran castigados todos los jugadores ilegales del server.
    Aquí estan los pasos

    1- Vas a inicio/programas/microsof sql server/analizador de consultas
    2- Se abrira un recuado que dice conectar a sql server, ahi tiene que salir tine que salir el nombre dle servidor, sino sale lo agregas, colocas aceptar
    3-Copias este texto

    use muonline
    if exists(select * from dbo.sysobjects where type='p' and name='WZ_GetItemSerial')
    drop procedure WZ_GetItemSerial
    go
    CREATE procedure WZ_GetItemSerial
    as
    BEGIN
    DECLARE @ItemSerial int
    set nocount on
    begin transaction
    update GameServerInfo set @ItemSerial = ItemCount = (case when ItemCount < 0x7effffff then ItemCount+1
    else 1
    end )
    if(@@error <> 0)
    begin
    rollback transaction
    select-1
    end
    else
    begin
    commit transaction
    select @ItemSerial
    end
    END

    GO
    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[trg_CheckSameID]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
    drop trigger [dbo].[trg_CheckSameID]
    GO

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[AllItemsLog]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[AllItemsLog]
    GO

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[CopyLog]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[CopyLog]
    GO

    CREATE TABLE [dbo].[AllItemsLog] (
    [items_id] [int] IDENTITY (1, 1) NOT NULL ,
    [items_type] [binary] (1) NOT NULL ,
    [items_serial] [binary] (4) NOT NULL ,
    [items_acid] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL
    ) ON [PRIMARY]
    GO

    CREATE TABLE [dbo].[CopyLog] (
    [copy_id] [int] IDENTITY (1, 1) NOT NULL ,
    [copy_acid] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [copy_whdata] [binary] (1200) NOT NULL ,
    [copy_date] [datetime] NOT NULL
    ) ON [PRIMARY]
    GO

    ALTER TABLE [dbo].[AllItemsLog] ADD
    CONSTRAINT [DF_CT_ITEM_item] DEFAULT (0) FOR [items_type],
    CONSTRAINT [DF_CT_ITEM_itemid] DEFAULT (0) FOR [items_serial],
    CONSTRAINT [DF_CT_ITEM_itemrole] DEFAULT ('\') FOR [items_acid]
    GO

    CREATE INDEX [IX_CT_ITEM] ON [dbo].[AllItemsLog]([items_type], [items_serial]) ON [PRIMARY]
    GO

    ALTER TABLE [dbo].[CopyLog] ADD
    CONSTRAINT [DF_CopyLog_copy_date] DEFAULT (getdate()) FOR [copy_date]
    GO


    SET QUOTED_IDENTIFIER ON
    GO
    SET ANSI_NULLS ON
    GO

    CREATE TRIGGER [dbo].[trg_CheckSameID] ON [dbo].[character]
    FOR UPDATE
    AS
    BEGIN
    IF UPDATE(inventory)
    BEGIN
    SET NOCOUNT ON
    DECLARE
    @wh_acid varchar(10),
    @wh_data binary(1200),
    @wh_type binary(1),
    @wh_serial binary(4),

    @cr_user varchar(10),
    @cr_acid varchar(10),
    @cr_data binary(760),
    @cr_type binary(1),
    @cr_serial binary(4),

    @al_acid varchar(10),
    @j int,
    @k int,
    @find bit

    SELECT @cr_acid=i.accountid,
    @cr_data=i.inventory
    FROM inserted i

    SET @j=0
    SET @find=0

    WHILE @j<76 AND @cr_data IS NOT NULL
    BEGIN
    SET @cr_type=SUBSTRING(@cr_data,@j*10+1,1)
    SET @cr_serial=SUBSTRING(@cr_data,@j*10+4,4)
    IF @cr_type<>0xFF AND @cr_serial<>0x00000000
    BEGIN
    SELECT @al_acid=items_acid FROM allitemslog WHERE items_type=@cr_type AND items_serial=@cr_serial


    IF @al_acid IS NULL
    INSERT INTO allitemslog (items_type,items_serial,items_acid) VALUES (@cr_type,@cr_serial,@cr_acid)
    ELSE
    BEGIN
    UPDATE allitemslog SET items_acid=@cr_acid WHERE items_type=@cr_type AND items_serial=@cr_serial


    SELECT @wh_data=items FROM warehouse WHERE accountid=@al_acid

    SET @k=0
    WHILE @k<120 AND @wh_data IS NOT NULL
    BEGIN
    SET @wh_type=SUBSTRING(@wh_data,@k*10+1,1)
    SET @wh_serial=SUBSTRING(@wh_data,@k*10+4,4)
    IF @wh_type=@cr_type AND @wh_serial=@cr_serial
    SET @find=1
    SET @k=@k+1
    END
    END
    END
    SET @j=@j+1
    END
    IF @find=1
    BEGIN
    INSERT INTO copylog (copy_whdata,copy_acid,copy_date) VALUES (@wh_data,@al_acid,getdate())
    -- this is wer u can add more punishment like ban or lock characters
    UPDATE Character SET CtlCode=1 WHERE accountid=@al_acid
    END
    SET NOCOUNT OFF
    END
    END
    GO
    SET QUOTED_IDENTIFIER OFF
    GO
    SET ANSI_NULLS ON
    GO
    DECLARE @al_acid char(50)
    set @al_acid = 'ASUS'
    UPDATE Character SET CtlCode=1 WHERE accountid=@al_acid
    go
    select * from AllItemsLog
    select * from CopyLog

    4- Precionas F5 y ctrl N
    5- Se abrira otro recuadro, en este recuadro copias esto otro:

    use MuOnline
    select * from AllItemsLog
    select * from CopyLog

    6- Presionas F5 y crtl N
    7- Se abrira otro recuadro y copias esto otro:

    use MuOnline
    select * from CopyLog

    8- Presionas F5 y estas listo, luego cierra las ventatas y guarda los cambios, te guardara unos block de notas, guardalos en donde tu quieras.


    By Nikous
    Si Te Gusto...Ya Sabes:D
    Cualquier duda...MP
     
  2. sha

    shacaxD
    Expand Collapse
    Recluta

    Mensajes:
    10
    Me Gusta recibidos:
    0
    Re: Seguridad para tu server de mu Completa..Sygate Firewalll Manual,AntiInjection,WE

    mm... interesante Post
    Solo 1 cosa

    SI VAS A HACER COPY AND PASTE
    ASLO BIEN!!!!
     
  3. Nik

    Nikous
    Expand Collapse
    Recluta

    Mensajes:
    2
    Me Gusta recibidos:
    0
    Re: Seguridad para tu server de mu Completa..Sygate Firewalll Manual,AntiInjection,WE

    Perdon por el 2 post pero es que vi estas caras y lo estoy solucionando no entiendo porq..bue en un ratitito lo soluciono sorry por el 2 post es solo para avisar!
     
  4. Nik

    Nikous
    Expand Collapse
    Recluta

    Mensajes:
    2
    Me Gusta recibidos:
    0
    Re: Seguridad para tu server de mu Completa..Sygate Firewalll Manual,AntiInjection,WE

    Listo man disculpa es que lo copie de una pag..eso es obvio pero aca siempre preguntaba y no lo respondian asi que lo decidi poner y salio mal pero lo copie desde el archivo del mu y ahora esta bn sorry!! si quierene borrenme el mensaje anterior ya que ese lo hize apenas vi lo que paso!!:D ya esta bien
     
  5. FiR

    FiReWall
    Expand Collapse
    Recluta

    Mensajes:
    0
    Me Gusta recibidos:
    0
    Re: Seguridad para tu server de mu Completa..Sygate Firewalll Manual,AntiInjection,WE

    hola me paracio muy buena el tema que hay muchos que no conosemos algunas aplicaciones seria bueno algo mas simple gracias
     

Compartir esta página