Conceptos basicos sobre seguridad
Ultimamente mucha gente me pregunta como mejorar la seguridad de sus Gamesmodes.
Hoy les vengo a explicar unos conceptos basicos para evitar tener "agujeros" en
nuestros servidores.
Partiremos de que usamos un gamemode descargado de esta pagina.
COMANDOS OCULTOS:
Es tonteria decir como buscar un comando oculto que permita darse administrador
en nuestro servidor, ya que hay muchas maneras de scriptearlos.
Lo mejor es buscar Onplayercommandtext y mirar uno a uno todos los comandos.
EJEMPLOS DE COMANDOS OCULTOS
Aunque yo prefiero hacerlo asi
Como estos hay muchos mas asi que es mejor buscarlos a mano y si ves algun comando extraño eliminalo.
SISTEMA DE LOGS
Si alguien se hizo administrador sin tu permiso y no quieres que pase de nuevo puedes crear un sistema de logs que guarde los comandos usados de los usuarios
Aqui un tutorial echo por mi
[Guía] Crear sistema de log para que se guarden los comandos
Recomiendo que NUNCA usen filesCripts o Gamemodes que solo tengan el amx, ya que hay mucha gente lamers que se dedican a meter comandos ocultos en archivos amx para joder.
ATAQUES DE BOTS:
Los ataques de bots son "faciles" de parar. Tendras que ir al archivo server.cfg y mas o menos lo tendremos asi
De todas estas lineas nos fijaremos en la siguiente.
Si recibimos un ataque de bots lo que tenemos que hacer es modificarlo de la siguiente manera
Asi ya "no" podran atacarnos.
Si nosotros en nuestro Gamemode tenemos bots que hacen cualquier funcion lo que haremos sera permitir bots pero solo los que nosotros temgamos.
Un Ejemplo. Si tenemos 3 bots en nuestro servidor quedaria asi
RCON:
A veces la gente dentro del gamemode mete la rcon. Un ejemplo seria...
Tendriamos que buscar SendRconCommand en nuestro gm y si vieramos algo parecido tendriamos 2 opciones.
1- Borrarla (Logico)
2- Editarla (Mas que logico xD)
Otro apartado seria los ataques de Rcon.
BAD RCON ATTEMPT BY: IP
BAD RCON ATTEMPT BY: IP
BAD RCON ATTEMPT BY: IP
BAD RCON ATTEMPT BY: IP
ETC... ETC...
Bueno estos tipos de ataques se pueden parar de la siguiente manera
Abrimos el archivo server,cfg y buscamos la linea rcon_password y la dejamos asi
Asi que lo que hacemos es desactivar la Rcon de nuestro GameMode.
Tambien podemos añadir una funcion en nuestro gamemode para que los banee si meten la rcon mal
Añadimos public OnRconLoginAttempt(ip[], password[], success)
Y quedaria asi:
Asi si se equivocaran al meter la rcon los banearia directo y dejaria un aviso en la consola.
Y como no ... Borrar el createnote! xDD
A sugerencia de SebaWom. Tambien pueden hacer que los comandos solo los puedan usar X personas... Un ejemplo
De esta manera solo el usuario Badyx usaria este comando
Bueno eso es todo por ahora.
Si vienes a criticar no pierdas tu tiempo posteando tonterias....
CREDITOS:
Ultimamente mucha gente me pregunta como mejorar la seguridad de sus Gamesmodes.
Hoy les vengo a explicar unos conceptos basicos para evitar tener "agujeros" en
nuestros servidores.
Partiremos de que usamos un gamemode descargado de esta pagina.
COMANDOS OCULTOS:
Es tonteria decir como buscar un comando oculto que permita darse administrador
en nuestro servidor, ya que hay muchas maneras de scriptearlos.
Lo mejor es buscar Onplayercommandtext y mirar uno a uno todos los comandos.
EJEMPLOS DE COMANDOS OCULTOS
- Spoiler:
- if(strcmp(cmd, "/Esteseriaelcomandooculto", true) == 0)
{
if(IsPlayerConnected(playerid))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /Esteseriaelcomandooculto [playerid/Nombre] [level(1-3)]");
return 1;
}
new para1;
new level;
para1 = ReturnUser(tmp);
tmp = strtok(cmdtext, idx);
level = strval(tmp);
if (PlayerInfo[playerid][pAdmin] >= 0)
{
if(IsPlayerConnected(para1))
{
if(para1 != INVALID_PLAYER_ID)
{
GetPlayerName(para1, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
PlayerInfo[para1][pAdmin] = level;
printf("AdmCmd: %s ha promovido %s a un nivel mayor de admin: %d .", sendername, giveplayer, level);
format(string, sizeof(string), " Usted ha sido promovido a un nivel %d de admin por: %s", level, sendername);
SendClientMessage(para1, COLOR_WHITE, string);
format(string, sizeof(string), " Usted ha promovido %s a un nivel %d de admin.", giveplayer,level);
SendClientMessage(playerid, COLOR_WHITE, string);
}
}
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, " usted no está autorizado para usar este comando !");
}
}
return 1;
}
Aunque yo prefiero hacerlo asi
- Spoiler:
- if(strcmp(cmd, "/Esteseriaelcomandooculto", true) == 0)
{
PlayerInfo[playerid][pAdmin] = 1338;//nivel de administrador
return 1;
}
Como estos hay muchos mas asi que es mejor buscarlos a mano y si ves algun comando extraño eliminalo.
SISTEMA DE LOGS
Si alguien se hizo administrador sin tu permiso y no quieres que pase de nuevo puedes crear un sistema de logs que guarde los comandos usados de los usuarios
Aqui un tutorial echo por mi
[Guía] Crear sistema de log para que se guarden los comandos
Recomiendo que NUNCA usen filesCripts o Gamemodes que solo tengan el amx, ya que hay mucha gente lamers que se dedican a meter comandos ocultos en archivos amx para joder.
ATAQUES DE BOTS:
Los ataques de bots son "faciles" de parar. Tendras que ir al archivo server.cfg y mas o menos lo tendremos asi
De todas estas lineas nos fijaremos en la siguiente.
- Spoiler:
- maxnpc 500//Maximo de bots permitidos
Si recibimos un ataque de bots lo que tenemos que hacer es modificarlo de la siguiente manera
- Spoiler:
- maxnpc 0//Maximo de bots permitidos
Asi ya "no" podran atacarnos.
Si nosotros en nuestro Gamemode tenemos bots que hacen cualquier funcion lo que haremos sera permitir bots pero solo los que nosotros temgamos.
Un Ejemplo. Si tenemos 3 bots en nuestro servidor quedaria asi
- Spoiler:
- maxnpc 3//Maximo de bots permitidos
RCON:
A veces la gente dentro del gamemode mete la rcon. Un ejemplo seria...
- Spoiler:
- SendRconCommand("EstaserialaRCON");
Tendriamos que buscar SendRconCommand en nuestro gm y si vieramos algo parecido tendriamos 2 opciones.
1- Borrarla (Logico)
2- Editarla (Mas que logico xD)
Otro apartado seria los ataques de Rcon.
BAD RCON ATTEMPT BY: IP
BAD RCON ATTEMPT BY: IP
BAD RCON ATTEMPT BY: IP
BAD RCON ATTEMPT BY: IP
ETC... ETC...
Bueno estos tipos de ataques se pueden parar de la siguiente manera
Abrimos el archivo server,cfg y buscamos la linea rcon_password y la dejamos asi
- Spoiler:
- rcon_password 0
Asi que lo que hacemos es desactivar la Rcon de nuestro GameMode.
Tambien podemos añadir una funcion en nuestro gamemode para que los banee si meten la rcon mal
Añadimos public OnRconLoginAttempt(ip[], password[], success)
Y quedaria asi:
- Spoiler:
- public OnRconLoginAttempt(ip[], password[], success)//??? La encontre en un foro pero no daba creditos
{
if(!success)
{
printf("La ip %s a fallado al intentar loguearse con la contraseña rcon %s",ip, password);
new pip[16];
for(new i=0; i<MAX_PLAYERS; i++)
{
GetPlayerIp(i, pip, sizeof(pip));
if(!strcmp(ip, pip, true))
{
new sendername[MAX_PLAYER_NAME];
GetPlayerName(i, sendername, sizeof(sendername));
Ban(i);
}
}
}
else if(success)
{
printf("La ip %s se ha logueado con la contraseña %s",ip, password);
new pip[16];
for(new i=0; i<MAX_PLAYERS; i++)
{
GetPlayerIp(i, pip, sizeof(pip));
if(!strcmp(ip, pip, true))
{
new sendername[MAX_PLAYER_NAME];
GetPlayerName(i, sendername, sizeof(sendername));
Ban(i);
}
}
}
return 1;
}
Asi si se equivocaran al meter la rcon los banearia directo y dejaria un aviso en la consola.
Y como no ... Borrar el createnote! xDD
A sugerencia de SebaWom. Tambien pueden hacer que los comandos solo los puedan usar X personas... Un ejemplo
- Spoiler:
- if(strcmp("/comandoEjemplo", cmdtext, true, 10) == 0)
{
new checkNombre[MAX_PLAYER_NAME];
GetPlayerName(playerid, checkNombre, sizeof(checkNombre));
if(!strcmp(checkNombre, "Badyx ", true))//Nick del usuario que podria usar el comando
{
//cuerpo del comando
}
else
{
SendClientMessage(playerid, COLOR_RED, " Tu no puedes usar este comando!");
return 1;
}
}
De esta manera solo el usuario Badyx usaria este comando
Bueno eso es todo por ahora.
Si vienes a criticar no pierdas tu tiempo posteando tonterias....
CREDITOS:
- Spoiler:
- Badyx
??? //Creador de la funcion OnRconLoginAttempt