Seguridad Web

Medidas de seguridad PHP modo prevención

Cuando contratamos un servidor dedicado LAMP (linux, apache, mysql, php) , donde el sistema operativo aconsejamos que sea CENTOS,  normalmente el PHP viene habilitado con la mayor parte de funcionalidades «peligrosas» y de las que se nutren los atacantes.

Al contratar nuestro primer server, o si ya somos asiduos en el aquiler de servidores (Virtuales/Clouds/Dedicados) mi consejo es que deshabilitemos las siguientes funciones en nuestro fichero «php.ini» (Si no sabemos donde está, le hacemos un «find / – name php.ini» en nuestra consola.) :

 

disable_functions =»apache_child_terminate, apache_setenv, define_syslog_variables, escapeshellarg, escapeshellcmd, eval, exec, fp, fput, ftp_connect, ftp_exec, ftp_get, ftp_login, ftp_nb_fput, ftp_put, ftp_raw, ftp_rawlist, highlight_file, ini_alter, ini_get_all, ini_restore, inject_code, mysql_pconnect, openlog, passthru, php_uname, phpAds_remoteInfo, phpAds_XmlRpc, phpAds_xmlrpcDecode, phpAds_xmlrpcEncode, popen, posix_getpwuid, posix_kill, posix_mkfifo, posix_setpgid, posix_setsid, posix_setuid, posix_setuid, posix_uname, proc_close, proc_get_status, proc_nice, proc_open, proc_terminate, shell_exec, syslog, system, xmlrpc_entity_decode»

 

(Al editar el archivo, buscamos primero la linea que empieza por disable_functions y añadimos todo el carro de funciones sensibles)

 

Finalmente y cuando un atacante intente usar dicha función, si es que lo consigue, verá el siguiente error:

Warning: exec() has been disabled for security reasons in /home/admin/domains/tudominio/test.php on line 86

 

* Por otro lado, si no vamos a usar Python ni CGIs, deberíamos deshabilitar su ejecución tambien, o bien contactar con vuestro hosting/datacenter para tal fin, ya que muchos scripts de phising y mailers los utilizan.

Interceptar y modificar parametros de formularios

Durante esta noche, estaba descargando algunos plugins para mi própio firefox como:

– Super drag & Drop (Con arrastrar links se abren nuevas pestañas y si arrastramos texto nos hace la busqueda) que ya lo tenia en Maxthon.

– Click Options (Para cerrar tabs con doble click) Indispensable

 

Y por pura casualidad me he encontrado con un plugin que bajo mi punto de vista es «mortal».

No se si recordareis aquellos que asistieron a la charla de Seguridad en páginas webs del jefe de la brigada de policia tecnológica «Jorge Martín» creo recordar, que hizo un ejemplo en vivo de como interceptar variables al vuelo de un formulario por POST, y en el paso intermedio cambiarlas. Ese programa nunca lo acabé encontrando por mucho que busqué…

 

 

Ahora y por casualidad me he encontrado con el plugin de firefox Tamper Data , una verdadera joya para los programadores web, y un filón para los que no se saben comportar en internet. En él se puede modificar todo… lo que vaya a través de las cabeceras HTTP/HTTPS, incluso parametros POST (Parametros hidden, obligatorios o estaticos que no podiamos cambiar), saber que carga de la caché en una web y que no, tiempos por cada petición, etc… excelente plugin para un desarrolador y tb para quien quiere investigar más sobre su web.

Ya desde el mismo momento en que queremos descargar, la web de addons de mozilla nos advierte que somos responsables de nuestros actos y requiere nuestra confirmación, curioso!

Seguridad en nuestras Tiendas Virtuales

Volviendo un poco a la seriedad y siendo hoy el Día internacional de la seguridad, me estaba planteando en crear una pequeña primera Guia de Seguridad para tiendas online, que básicamente se podría portar a casi cualquier aplicación PHP.

Principales archivos a modificar:

php.ini (Configuración general del PHP, si phpsuexec activado, tendremos que editarlo en la carpeta de la aplicación que vayamos a programar)

httpd.conf (configuración del apache)

.htaccess (sobreescribir las directivas del php.ini si nos lo permiten y no está activado phpsuexec)

Para tener una primera vision de la configuración general, y valorar si tenemos puntos comprometidos, deberemos crear un archivo php con el siguiente código y visitarlo con nuestro navegador:

<?php phpinfo() ?>

Pasos a seguir:

1) No mostrar errores a nuestros intrusos, para ello definiremos en el .htaccess

[sourcecode=php]
php_flag display_errors Off
php_flag log_errors On
php_value error_log «Ruta completa al fichero de log»
[/sourcecode]

– Que no se muestren los errores en pantalla, y cambiarlo a que se guarden en la maquina en un fichero local solo accesible para el webmaster.

2) El famoso Register globals que por defecto ahora viene desactivado. En las tiendas oscommerce a partir de la RC1 ya no hace falta tenerla activada (en MS2 y anteriores si), por lo que ya no tendremos ese problema de configuración. Tenerlo activo no es un problema de seguridad en sí, si el código está bien implementado, pero si por defecto ya viene desactivado, estamos obligados a no jugar con «fuego» al poder pasar parámetros por GET y POST dentro de las variables globales de nuestra aplicación. Para desactivar esta directiva:

[sourcecode=php]
php_flag register_globals Off
[/sourcecode]

3) Usar SAFE_MODE o no… en mi opinión solo és útil para servidores compartidos, donde hay varios usuarios, y así evitar que unos accedan o incluyan los ficheros de los otros. El único y gran problema es que al tenerlo activo, tendremos incompatibilidades con otros módulos y funcionalidades. Habría que valorar si es realmente necesario tenerlo activo en nuestro servidor.

4) Doble protección de nuestros ficheros de administración. Por ejemplo… toda la carpeta administrador o backend de la aplicación implementar protección mediante formulario de login, y además añadir protección mediante apache desde nuestro panel de control de hosting o a mano.

5) Denegar el acceso a nuestros directorios y ficheros de configuración o «sensibles» con la siguiente instrucción en el .htaccess (dentro del directorio donde se encuentran los archivos a proteger)

Proteger ficheros php:

[sourcecode=php]

Order Deny,Allow
Deny from all

[/sourcecode]

Proteger todos los ficheros del directorio que se especifique:

[sourcecode=php]

Order Allow,Deny

[/sourcecode]

6) Sistemas de pago. El más sensible sin duda es la tarjeta de crédito. Los más seguros son los que usan webservices, y sin salir de la web, pero a día de hoy solo es viable con BBVA y algún otro banco.  Mi recomendación es usar el sistema TPV de servired, que podremos encontrar en casi todas las cajas y caixas (La caixa, Caixa catalunya, Caja madrid, etc) que através de una firma Sha1 completa ampliada y una clave personal se transmite la información de forma «segura» entre la página del banco (quien se encargará por nosotros de recoger los datos de la tarjeta y comprobar su veracidad) y nuestra tienda, que será la que reciba la confirmación y autorización del pago.

Empresarios cansados del Fraude en Internet

En los últimos meses se está acrecentando el número de fraudes en tiendas virtuales que usan pasarelas de pago que aceptan tarjetas de crédito como puedan ser:

  • Ceca
  • Servired
  • 4b
  • Unicaja
  • Etc

 Una primera medida de contención era la de llamar a nuestros respectivos bancos, para restringir las tarjetas que no fueran expedidas en bancos españoles. Esto frenaba satisfactoriamente, el gran fraude proveniente de Cabimas, Nigeria y costa de marfil.

Pero ahora resulta que el problema se ha convertido en local, y están recurriendo a tarjetas españolas, clonadas, robadas o quién sabe qué, pero que consiguen burlar los sistemas antifraude de las entidades bancarias. Suelen ser clientes sospechosos por Tener nombres Extranjeros, pedir insistentemente el teléfono de tu compañía de transportes para así hacerse con la mercancía e interceptarla antes de llegar a la puerta del destino.

He aquí un vídeo de un «amigo» empresario cansado e irritado tomando medidas propias contra el cliente fraudulento:

[youtube]http://es.youtube.com/watch?v=2E2Vzsq8aqE[/youtube]

 Y aquí debajo otro demostrativo de como hacen estas clonaciones, que tantos estragos están haciendo:

[youtube]http://es.youtube.com/watch?v=tugD_Oxncp8[/youtube]

Seguridad web con Humor

Al navegar por la red, a veces me encuentro cosas tan curiosas como estas:

Formulario login

Y me pregunto yo…

1) Hay un cierto numero máximo de intentos ?
2) En caso afirmativo si llegas al limite y bloqueas la cuenta, como recuperas la contraseña?
3) Primero hay que registrarse verdad? Se dejaron el link para darse de alta, por lo que estamos destinados a bloquearlo (Alomejor el link esta en la parte posterior)
4) No veo aviso legal de ningun tipo, por lo que una vez dentro no sabemos que será de nosotros
5) Algo importante es saber es el periférico con el que tecleamos los caracteres, sino como introducimos nuestros datos? Alguien sabe cual podria ser?
6) Por último, si una vez dentro nos llevamos una desagradable sorpresa, donde nos podemos dar de baja la cuenta?

EDITADO: La seguridad no es demasiado buena, ya que con un poco de fuerza bruta accedes… o con un poco de ingenieria social

 🙂

× Habla conmigo