- InvitadoInvitado
Seguridad para Web Server Apache, Ficheros PHP y SQLSERVER
Mar Ago 16, 2011 9:37 am
Bueno como ya saben muchas webs son vulnerables a una inject akii le enseñare como evitar eso ii a los editados 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 ya posteadas en el foro.
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 Control 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 1023, 1023, 1024 y 1024, de tal manera que queden BLOQUEADOS.
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, en todos mis servidores siempre lo tuve así y nunca un solo editado ni tampoco una modificación. 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("", "","","""); #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 {
$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 {
$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 {
$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);
?>
[/php]
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 delservidor 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 elarchivo 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.
Cita
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
; Activa el modo seguro de SQL
disable_functions= dl,exec,passthru,proc_open,proc_close,shell_exec,s ystem
;Desactiva las funciones mas comunes que utilizan las shell PHP.
Al terminar, guardan y cierran el archivo, y reinician su Apache.
Si tienen Appserv lo hacen mediante Inicio > Todos los programas > Appserv > Control Server by Service > Apache Restart.
Si tienen XAMPP recomiendo hacerlo mediante el control panel, ingresan a C:/xampp (o xampplite para otras versiones) y abren el ejecutable xampp_panel.exe (o xampp_controlpanel.exe), si su servicio yaesta iniciado veran "Running" y tendran solo disponible la opción de Stop, presionan el mismo y luego Start de nuevo.
Y listo, su página ya esta protegida al 100% de inyecciones SQL...
Backup Base de Datos[/COLOR][/SIZE]
Ahora vamos a respaldar la base de datos de nuestro servidor automáticamente, por si alguna persona logra penetrar nuestra seguridad y asi borrarnos todo.
1. Vamos a la carpeta C(o D):/MuServer y creamos una nueva carpeta llamada respaldos.
2. Abrimos el SQL y nos vamos a la parte de Mantenimiento y luego a la parte de SQL Server Agent, y hacemos doble click en trabajos.
4. Estando ahí, presionamos click izquierdo y ponemos "Nuevo trabajo".
5. Le ponemos de nombre "Respaldo automatico" y pasamos a la pestaña "pasos".
6. En la pestaña pasos clickeamos en el boton "Nuevo" y le ponemos de nombre "Respaldo", y le ponemos el siguiente codigo:
En la parte marcada en ROJO "SET @file = N'C:\MuServer\Respaldos\", cambiamos la unidad "C:" por la unidad en donde se encuentre suservidor, si esta en C, dejenlo asi.
7. Seleccionamos la base de datos MuOnline y presionamos aceptar.
8. Nos vamos a la pestaña de alado y ponemos "Nuevo", en nombre le ponemos Respaldo, en Tipo le ponemos Recurrente y vamos a configuración.
9. Ponemos la casilla "Día" y en la parte de "Frecuencia" seleccionamos "solamente" y ponen cada cuanto tiempo quieren que se haga su respaldo.
Luego presionamos Aceptar y Aceptar. Y listo!, cada el tiempo que ustedes hayan puesto se hace un respaldo.
Yo en mi servidor tengo cada 2 horas y cada día borro los respaldos y dejo los 4 mas recientes.
Esten al tanto que "100%" es por los Lammers, si llega a venir pepito_elhackerexperimentado y sabe lo que hace, podria encontrar algo y romperte todo tu servidor. Pero si son solamente lammers, no va a pasar nada, ya que estos hacen uso de vulnerabilidades que tienen nuestras páginas.
Por mi parte recomiendo si es que sus páginas lo tienen borrar el modulo de recuperar contraseña, y si tienen InfernoWeb, borren totalmente el modulo administrator.php y la carpeta administrator.
Yo tengo mi servidor corriendo, y desde que tengo toda esta seguridad, no tuve mas inyecciones sql y editados.
¿Que tan grave puede ser la inyección sql?
Puede ser muy grave, desde la misma te pueden borrar todos los personajes, borrar todas las cuentas, editarse los puntos, items, hacerse GM y muchas otras cosas
La mayoria de las partes son rejuntes de otras guias ya posteadas en el foro.
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 Control 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 1023, 1023, 1024 y 1024, de tal manera que queden BLOQUEADOS.
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, en todos mis servidores siempre lo tuve así y nunca un solo editado ni tampoco una modificación. 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("", "","","""); #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
$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
$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
$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);
?>
[/php]
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 delservidor 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 elarchivo 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.
Cita
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
; Activa el modo seguro de SQL
disable_functions= dl,exec,passthru,proc_open,proc_close,shell_exec,s ystem
;Desactiva las funciones mas comunes que utilizan las shell PHP.
Al terminar, guardan y cierran el archivo, y reinician su Apache.
Si tienen Appserv lo hacen mediante Inicio > Todos los programas > Appserv > Control Server by Service > Apache Restart.
Si tienen XAMPP recomiendo hacerlo mediante el control panel, ingresan a C:/xampp (o xampplite para otras versiones) y abren el ejecutable xampp_panel.exe (o xampp_controlpanel.exe), si su servicio yaesta iniciado veran "Running" y tendran solo disponible la opción de Stop, presionan el mismo y luego Start de nuevo.
Y listo, su página ya esta protegida al 100% de inyecciones SQL...
Backup Base de Datos[/COLOR][/SIZE]
Ahora vamos a respaldar la base de datos de nuestro servidor automáticamente, por si alguna persona logra penetrar nuestra seguridad y asi borrarnos todo.
1. Vamos a la carpeta C(o D):/MuServer y creamos una nueva carpeta llamada respaldos.
2. Abrimos el SQL y nos vamos a la parte de Mantenimiento y luego a la parte de SQL Server Agent, y hacemos doble click en trabajos.
4. Estando ahí, presionamos click izquierdo y ponemos "Nuevo trabajo".
5. Le ponemos de nombre "Respaldo automatico" y pasamos a la pestaña "pasos".
6. En la pestaña pasos clickeamos en el boton "Nuevo" y le ponemos de nombre "Respaldo", y le ponemos el siguiente codigo:
- Código:
DECLARE @file varchar(70)
SET @file = N'C:\MuServer\Respaldos\MuOnline_'+REPLACE(REPLACE (CAST(getdate() AS varchar), ' ', '_'), ':', '_')
SELECT @file
BACKUP DATABASE [MuOnline] TO DISK = @file WITH INIT , NOUNLOAD , NAME = N'MuOnline backup', NOSKIP , STATS = 10, NOFORMAT
En la parte marcada en ROJO "SET @file = N'C:\MuServer\Respaldos\", cambiamos la unidad "C:" por la unidad en donde se encuentre suservidor, si esta en C, dejenlo asi.
7. Seleccionamos la base de datos MuOnline y presionamos aceptar.
8. Nos vamos a la pestaña de alado y ponemos "Nuevo", en nombre le ponemos Respaldo, en Tipo le ponemos Recurrente y vamos a configuración.
9. Ponemos la casilla "Día" y en la parte de "Frecuencia" seleccionamos "solamente" y ponen cada cuanto tiempo quieren que se haga su respaldo.
Luego presionamos Aceptar y Aceptar. Y listo!, cada el tiempo que ustedes hayan puesto se hace un respaldo.
Yo en mi servidor tengo cada 2 horas y cada día borro los respaldos y dejo los 4 mas recientes.
Esten al tanto que "100%" es por los Lammers, si llega a venir pepito_elhackerexperimentado y sabe lo que hace, podria encontrar algo y romperte todo tu servidor. Pero si son solamente lammers, no va a pasar nada, ya que estos hacen uso de vulnerabilidades que tienen nuestras páginas.
Por mi parte recomiendo si es que sus páginas lo tienen borrar el modulo de recuperar contraseña, y si tienen InfernoWeb, borren totalmente el modulo administrator.php y la carpeta administrator.
Yo tengo mi servidor corriendo, y desde que tengo toda esta seguridad, no tuve mas inyecciones sql y editados.
¿Que tan grave puede ser la inyección sql?
Puede ser muy grave, desde la misma te pueden borrar todos los personajes, borrar todas las cuentas, editarse los puntos, items, hacerse GM y muchas otras cosas
Permisos de este foro:
No puedes responder a temas en este foro.