[Guia]Seguri Para Tu Mu Guia Completa

Tema en 'Servidores de Mu Online' iniciado por cristiankp, 20 Ago 2009.

Estado del tema:
Cerrado para nuevas respuestas
  1. cri

    cristiankp
    Expand Collapse
    Soldado Raso

    Mensajes:
    59
    Me Gusta recibidos:
    0
    SEGURIDAD PARA SERVER 1.04X
    Descargar:............

    Lo que debemos hacer para evitar hack o que se nos editen en el server es bloquiar los dataserver de tu firewall de windows.
    Para lograr eso lo que tenemos que hace es ir a nuestro firewall de windows
    1)Vamos a panel de control=>centro de seguridad y si tenemos la vista clasica de ventanas vamos a pandel de control=>Firewall de windows. ( eso depende de como tengas comfigurado tu xp )



    CONFIGURAR EL SYGATE FIREWALL
    Descargar:............

    Despues de la descarga realizamos los siguiente pasos :

    1. Abrimos el Sygate (dandole doble click izquierdo al lado del reloj) buscamos el SQL Server > Click derecho > Block







    2. Ahora seteamos las reglas para el SQL
    Tools > Advanced Rules... > Add
    Seleccionamos "Block this traffic" y "Record this traffic in Packet Log". Éste ultimo es para guardar en un log siempre que se quieran editar.







    3. En la pestana de Applications buscamos el "SQL Server Windows NT" y lo tildamos.







    4. Ahora hay que deshabilitad las conexiones en el SQL. Para eso vamos al Administrador Corporativo.
    Seleccionamos la "carpeta" Base de Datos y vamos a Herramientas > Propiedades de
    Luego a la solapa Conexiones y destildamos el casillero como marca la imagen.







    5. Luego de esto quizas nos pida reiniciar el SQL y le damos que si




    2)Nuestro siguiente paso sera ingresar a la pestaña que se encuentra en el medio de la ventana llamada Excepciones






    3)Ahora simplemente lo que tenemos que haces es destildar a los dataserver de las excepciones de nuestro firewall de windows.






    Listo ya tenemos el server seguro.
    PD: Tambien destilden el JoinServer ( para evitar el hack PNKmu , es que usan para hablar como admin)
    Saludos espero que sirva el tutorial , asd*

    Saludos



    SEGURIDAD PARTE I
    Descargar:............

    Bueno..para aquellos que sufren el hack en su server a travez de una pagina o programa (te alteran los stats o level de un pj, le ponen los items que quieren a su pj o lo convierten Muse, Blade or soul master,etc)...... hay 3 posibles soluciones(por ahora):

    (Primera) Esta es la mas RAPIDA en cuanto solucion para este hack!!!!!!. Aunque te cueste y no te salga en la primera, te recomiendo que cambies los puertos del link 1, 2, 4 y 8.
    Mini-Guia: Lo volteas al server vas a la carpeta link y vos tenes asi:

    1- D:\muserver\DataServer1\Dataserver.exe 55960
    2- D:\muserver\DataServer2\Dataserver.exe 55962
    4- D:\muserver\JoinServer\JoinServer.exe /p55970 /ca192.189.0.1 /cp55557
    8- D:\muserver\GameServer\Gameserver.exe 192.189.0.1 55970 192.189.0.1 55960 55901

    El cambio quedaria algo asi (recorda poner tus propios puertos):

    1- D:\muserver\DataServer1\Dataserver.exe 52234 -->"puerto nuevo 1"
    2- D:\muserver\DataServer2\Dataserver.exe 52236 -->"puerto nuevo 2"
    4- D:\muserver\JoinServer\JoinServer.exe /p52321 /ca 192.189.0.1/cp55557
    8- D:\muserver\GameServer\Gameserver.exe 192.189.0.1 52321 192.189.0.1 52234 55901
    P.D: El "puerto nuevo 2" tiene que tener 2 cifras mas que "puerto nuevo 1"


    SEGURIDAD PARTE II
    Descargar:............

    Ingresamos a nuestro firewall de windows

    Vamos a inicio=> Connfiguracion => Panel de Control => Centro de Seguridad

    Luego nos desplazamos hacia abajo y hacemos click en donde dice

    Firewall de Windows

    Si esta desactiva , lo activamos

    Vamos a la solapa del medio EXCEPCIONES

    y solamente dejamos tildado al GAMASERVER Y CS

    (tambien dejamos abierto el port 80 si es que tiene una web )

    Los demas programas le sacamos el tilde. [ Principalmente a los dataserver y al joinServer]

    En el caso que necesiten tener el port del SQL abierto para utilizar el editor
    en otra pc , hacemos click sobre el nombre que le pusieron a ese port y ponen modificar y luego en cambiar ambito.
    Finalmente seleccionan la opcion de lista personalizada y ponen el ip de quien ustedes consideren de confianza para que se conecte

    Con esta opcion nos aseguramos que solo puedan entrar a ese puerto aquellos ip a los que nosotros le dimos autoridad.

    Recuerden que una vez que ponen el ip deben poner tambien la mascara de subred
    por ejemplo 201.220.12.14/255.255.255.0 y si quieren agregar dos deben separarlos por una coma ","

    SEGURIDAD PARTE III
    Descargar:............

    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.



    SQL injections in php



    Bueno algunos habran escuchado hablar del famoso SQL Injections , y mas de uno se pregunta que quiere decir eso (?)
    Bien comenzare con un poco de información la inyeccion de sql son codigo mejor dicho son SCRIPS que ultilizan los "hacker" si podemos llamarlo asi para modificar , extraer o manipular tablas en nuestra base de datos.
    Como lo hacen (?) , muy facil si ustedes se ponen a pensar cuando creamos una cuenta por pagina web , nuestros datos viajan en .php atraves de variables hacia la .DB ( data base = base de datos )esa es la coneccion que tiene la pagina web a nuestra base de datos que por defecto todos llaman MuOnline.
    Los inyectores se ejecutan de esa manera en vez de enviar los datos de la cuenta envian scrips.

    mssql_connect(..);
    mssql_select_db(..);
    $account = $_POST['acc']; // account field
    $password = $_POST['pass']; // password field
    // other vars bla bla..
    // Now here is the base query
    // First we check if this acc exists
    $query = mssql_query("select count(*) from [memb_info] where [memb___id]='$account'"); // This is where the 'hacker" (lame kiddie) will hit you
    //other code does not matter
    ?>

    Ese es un ejemplo claro de envio de datos

    Claro yo explico pero sino tenes una basica idea de lo que estoy hablando no sigas leyendo.
    En la primera linea se conecta a la base de datos y en la segunda linea seleciona
    por defecto tenemos preestablecidas las variables $cuenta $ password.

    Bien una solucion a esto es :

    Injections can be done in $_POST, $_GET or $_REQUEST, $_COOKIE or every value that the user has access to, so i suggest you addslashes() to all (addslashes changes ' to \' and " to "\ - this way user cannot end ur current query)

    Es decir retringir comandos tipicos para el acceso del sql , afortunadamente los que inyectan en nuestras web usan unos codigos prediseñados los cuales necesitan utilizar simbolos como estos !"#$%&/()=? , entonces nosotros podemos restingir esos simbolos utilizando el INJECCION SQL y una FUNCION llamada CHEK_SQL que viene en todas las web-mu. Esos dos archivos se encargan de verificar que si alguien quiere introducir algun comando "malicioso" se lo cancelen.
    A nosotros mucho no nos afecta , solo que en la creacion de cuentas y utilizacion de nuestras herramientas ( cambiar password , agregar stats , etc )los persojes que tengan en su nombre alguno de estos simbolos seran rechazados.

    Bueno eso fue una breve explicacion acerca del SQL INJECTIONS y la posible solucion.
    Espero que les halla sido util y sigan investigando saludos a todos asd*.

    PD: Tambien existen hoy en dia los denominados PAQUETES , los paquetes ingresan como datos en el server , llegan al SQL y extraer informacion por los cuales estan programados.
    Antes de enviar un paquete nuestro "hacker" se encarga de programarlo y darle una mision estos paquetes ingresan y extraen ( claves , numeros , celdas ) y regresar a su punto de origen.
    Algunos CS detectan y sale una leyenda que dice INVALID PAQUET y un IP , lo que les puedo decir es que no vallan corriendo y le bloquen el ip , ese seria un error de NOVATO es hora de aplicar nuestros conocimientos ( mejor dicho los mios [​IMG] ) que haremos una vez que tenemos el ip de nuestro enemigo , ingresamos a SQL y buscamos la tabla donde quedan registrados todos los ips de quienes entran a nuestro server, luego lo comparamos con el que tiene la cuentas y comenzamos una tarea de "DETECTIVE" buscamos su cuenta , vemos su mail , tratemos de acercarnos pero no como ADMIN sino como usuario , averiguen datos de el , pidan ayuda a gente de confianza nose inventenlo ustedes.
    Cuando tienen un usuario asi en nuestro server es muy dificil de defenderse asique traten de hacer las cosas por las buenas.


    BACKUP EN SQL SERVER 2000
    Descargar:............

    Algo que nos puede ayudar muchos es tener un backup diario de nuestro servidor , esto es igual a tener varios puntos de restauracion de sistema y nos puede llegar a ser muy util en varias oportunidades.
    Este tipo de backups se hacen de forma automatica y es totalmente programable, a diferencia de los backups manuales que puede que un dia nos olvidemos de hacerlos o debemos estar pendiente diariamente. En cambio implementando este tipo de backups nos olvidamos por completo de los problemas y el dia que los necesitemos estaran alli guardados listo para ser restaurados.
    Veamos como hacerlo:
    1)Primero debemos detener nuestro SQL SERVER entonces vamos a Inicio=>Programas=>Microsoft SQL Server=>Administrador de servicios y ponemos DETENER, Ingresamos a nuestra carpeta Muserver y buscamos nuestras bases de datos por ejemplo en mi caso es D:\Muserver\DBData y copiamos todas las bases de datos ( si es un server 0.97b, 0.97+0.99 o 0.99b solamente vamos a encontrar 2 bases de datos MuOnline y Ranking) si tenemos un server por ejemplo 1.04x+s3+e2 o Season IV vamos a encontrar 4 bases de datos MuOnline, MuOnline_Ranking , SCFMuTeam, MuOnline_event asique depende la version seran las cantidades de bases que debemos copiar , ahora creamos una carpeta por ejemplo en el disco D que la podemos llamar como querramos , por ejemplo Restore y pegamos las bases ahi.
    ACLARACION: Cuando copian las bases de datos no copien las que dicen LOGS , en las dos siguiente fotos marco en rojo cuales son:

    Esta es un version 0.97+0.99b







    Esta es un version 1.04x+s3+e2






    Ahora volvemos a Inicio=>Programas=>Microsoft SQL Server=>Administrador de servicios e iniciamos el SQL SERVER y el SQL Server Agent ( el Sql Server Agent siempre debe iniciar junto con el SO de la pc al igual que el SQL Server por eso debemos tener tildada la opcion " Iniciar autamaticamente con el SO " ( lo que quiere decir esa opcion es que tanto el SQL SERVER como el SQL SERVER AGENT van a iniciar con el sistema operativo de forma automatica sin necesidad de hacerlo ustedes manualmente)






    2)Vamos inicio=>Programas=>Microsoft SQL Server=>Administrador corporativo






    2)Expandimos las entradas hasta llegar a MuOnline, y hacemos un click derecho sobre ella , luego buscamos la opcion "Todas las Tareas " y seleccionamos la que dice "Copia de seguridad de la Base de datos ..."






    3)En nuestra ventana lo que debemos hacer es primero

    Base de datos => Muonline

    Nombre => Copia de seguridad MuOnline

    Descripcion =>Copia de seguridad MuOnline ( o puede poner backups muonline )

    Copia de Seguridad => Tildamos o dejamos tildada " Base de datos: completa"

    En destino si tenemos ya creado alguno ponemos QUITAR ( ese cuadro debe quedar vacio) y luego ponemos agregar , en la nueva ventana que nos aparece dejamos tildada la opcion " Nombre de Archivo " y hacemos un click en los "..." y ahora simplemente lo que debemos buscar ahi es nuestra carpeta "restore" ( o como la quicieron llamar ) y en este caso como estamos haciendo una copia de la base de datos MuOnline buscamos la base de datos que se llama igual es decir MuOnline ( que ya deberia estar en nuestra carpeta copiada si es realizamos los primeros pasos de este tutorial)






    4)Tildamos la opcion "Sobre escribir medio existente" ( con esta opcion lo que logramos es sobreescribir la base de datos muonline para que no cree todos los dias una nueva al final del tutorial hare un repaso general de todo asi comprendemos mejor)
    5)Tildamos Programacion y hacemos un click en donde estan los " ... " , ahora lo que debemos hacer en nuestra nueva ponerle un nombre cualquiera por ejemplo Backups MuOnline y hacemos un click en "cambiar"






    6)Ahora lo que debemos elegir es nuestro modo de programacion es decir cada cuanto o cuando queremos que se realize el backups yo les recomiendo la siguiente configuracion:

    Sucede => Diariamnete , cada 1 dias

    Sucedeuna vez => a la 5:00:00

    Fecha inicial ( tiene que ser la actual , seguramente eso ya esta configurado)

    Y obviamente dejamos tildado la opcion " Sin Fecha Final "






    Y terminamos , pero cuidado , si cerramos todo y dejamos eso asi , solo tendriamos un backup de MuOnline , lo que debemos hacer es repetir todos los pasos con cada una de las base de datos mencionadas anteriormente ( 2 bases de datos para versiones viejas , 4 bases de datos para versiones nuevas ) el procedimiento es el mismo solo que que deben cambiar las distintas bases de datos.
    Repaso general y fin del tutorial: bueno hagamos un repaso general para aclarar dudas , lo primero que hicimos fue copiar nuestra base de datos ( por ejemplo MuOnline ( aqui es donde se guarda todo lo que hacen nuestros usuarios en el server ) , es por eso que tuvimos que detener momentaneamente el SQL SERVER ya que si lo dejemos activado no podemos copiar porque nos diria que esta en uso.
    Despues creamos una carpeta y la pusimos en nuestro disco D ( de paso aclaro que no deben mover jamas esa carpeta de ahi porque como veran nuestros backups se guardan ahi), luego fuimos al sql y creamos un backup de 1 base de datos de las que podemos llegar a tener le dimos una programacion y pusimos que reemplaze a la existente ojo no se asusten solo reemplaza a una copia y les dije que tilden la opcion de reemplazar porque sino todos los dia hace una copia nueva y acabo de un mes vamos a tener muchos archivos y ocupamos disco sin necesidad.
    Para ver que todo funcione , al dia siguiente entramos a la carpeta que elegimos guardar los backups , le hacemos click derecho a cualquiera de los archivos y vamos a propiedades ahora fijense la ultima fecha de modificacion , para que todo este correcto deberia estar la fecha que nosotros elejimos cuando programamos el backup.
    Bueno eso es todo espero que les sirva , si algun dia tienen un problema restauramos nuestra ultima copia de seguridad como restauramos cualquier base de datos.
    Saludos nos vemos en el proximo tutorial Criztiankp


    SEGURIDAD PARA LA WEB
    Descargar:............

    Nose si este metodo puede llegar a ser muy util , pero tal vez sea un pequeño filtro para evitan que nos ruten nuestra web , o evitar algun inyect programado por defecto , lo que vamos hacer sera cambiar la ruta de acceso /www/ es decir nosotros sabemos y todos saben que los files webmu se encuentran instalados en C:\AppServ\www lo que les voy a enseñar sera a cambiar esa ruta por otra , por ejemplo C:\AppServ\web.
    Empezemos
    1)Vamos a C:\AppServ\apache\conf\httpd.conf y buscamos la linea 303 sino apretamos CONTROL+B y en el buscador ponemos lo siguiente DocumentRoot , luego apretamos el boton siguiente 2 veces y veremos la siguiente linea DocumentRoot "C:/AppServ/www"






    2)Simplemente lo que vamos hacer aca sera cambiar www por otro nombre que nostros querramos ponerle , yo por ejemplo le voy a poner web , entonces deberia quedarnos asi: DocumentRoot "C:/AppServ/web" (donde web es el nombre que ustedes quieran ponerle), deberian quedarles asi:







    3)Veamos que pasa si queremos entrar a nuestra web:






    4)Bien eso nos indica que vamos en los pasos correcto , ahora lo que debemos hacer para recuperar nuestra web , es muy simple entramos a C:\AppServ y simplemente lo que debemos hacer es cambiar la carpeta www por el nombre que nosotros le pusimos anteriormente en la configuracion de appserver en mi caso " web "






    5)Reiniciamos el AppServ :






    Y finalmente intentamos entrar de nuevo , si todo esta bien la web funcionara correctamente.







    Bueno espero que les sirva , al menos evitamos pequenios hacks universales.
    Saludos criztiankp

    Suerte

    Bay
     
Estado del tema:
Cerrado para nuevas respuestas

Compartir esta página