Desarrollo Seguro en Drupal - DrupalCamp Spain 2013

35
Desarrollo seguro en Drupal Ezequiel V´ azquez De la calle Ezequiel V´ azquez De la calle Desarrollo seguro en Drupal

description

Slides from my talk about secure development using Drupal, in DrupalCamp Spain 2013.

Transcript of Desarrollo Seguro en Drupal - DrupalCamp Spain 2013

Page 1: Desarrollo Seguro en Drupal - DrupalCamp Spain 2013

Desarrollo seguro en Drupal

Ezequiel Vazquez De la calle

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Page 2: Desarrollo Seguro en Drupal - DrupalCamp Spain 2013

Sobre mi

Estudios

Ingeniero Tecnico en Informatica - UCA

Master en Ingenierıa del Software - US

Experto en Seguridad de las TIC - US

Experiencia

3+ anos como desarrollador web, casi 2 en Drupal

Actualmente: DevOps Drupal

Python, C++, GNU/Linux, network programming. . .

Aficiones

Rock’n’Roll (guitarra) y videojuegos

Narrativa fantastica, rol, cine. . .

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Page 3: Desarrollo Seguro en Drupal - DrupalCamp Spain 2013

Indice

1 Introduccion

2 Seguridad en profundidad

3 Seguridad en Drupal

4 Conclusiones

5 Referencias

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Page 4: Desarrollo Seguro en Drupal - DrupalCamp Spain 2013

Indice

1 Introduccion

2 Seguridad en profundidad

3 Seguridad en Drupal

4 Conclusiones

5 Referencias

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Page 5: Desarrollo Seguro en Drupal - DrupalCamp Spain 2013

Seguridad

¿Y esto de que va?

Seguridad web

Exposicion a internet

Vulnerabilidades

Explotacion

¿Hackers?

. . .

Dinero

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Page 6: Desarrollo Seguro en Drupal - DrupalCamp Spain 2013

Seguridad

Pilares de la seguridad

Confidencialidad

Integridad

Disponibilidad

Autenticacion

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Page 7: Desarrollo Seguro en Drupal - DrupalCamp Spain 2013

Seguridad

Principios basicos

Mınimo privilegio

Eslabon mas debil

Proporcionalidad

Participacion universal

Integracion con ciclo devida completo

Seguridad en profundidad

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Page 8: Desarrollo Seguro en Drupal - DrupalCamp Spain 2013

Indice

1 Introduccion

2 Seguridad en profundidad

3 Seguridad en Drupal

4 Conclusiones

5 Referencias

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Page 9: Desarrollo Seguro en Drupal - DrupalCamp Spain 2013

Seguridad en profundidad

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Page 10: Desarrollo Seguro en Drupal - DrupalCamp Spain 2013

¿Por que en profundidad?

El Abismo de Helm era inexpugnable. . .

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Page 11: Desarrollo Seguro en Drupal - DrupalCamp Spain 2013

Servidor

Arquitectura mas comun para Drupal

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Page 12: Desarrollo Seguro en Drupal - DrupalCamp Spain 2013

Servidor

Apache

Ocultar version: ServerSignature Off

Paginas de error personalizadas

Limitar metodos HTTP (solo GET, POST y HEAD)

SSL: Forzar conexion cifrada, si esta disponible

Ajustar timeout, tamano de peticiones, maximo de clientessimultaneos. . .

Permisos sobre directorios (Allow/Deny, -Indexes, -Multiviews)

Mod security, mod chroot

¡Monitorizar los logs!

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Page 13: Desarrollo Seguro en Drupal - DrupalCamp Spain 2013

Servidor

PHP

Actualizar → 5.2 ¡deprecated!

Limitar funciones: phpinfo, eval,exec, shell exec, system. . .

Hijacking : asociar IP y sesion

HTTP Only cookies

Evitar fugas: expose php=Off

Desactivar ejecucion remota

Desactivar “magic quotes” (5.2)

Controlar tamano de POST

Controlar uso de recursos

Proteger configuracion contraescritura

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Page 14: Desarrollo Seguro en Drupal - DrupalCamp Spain 2013

Servidor

MySQL

Limitar usuario a una base de datos

root con contrasena segura, no conectar remotamente

No permitir acceso anonimo

Emplear la mysql secure installation

skip-networking o bind=localhost

Ejecutar MySQL enjaulado con chroot

Activar el registro de logs (¡y revisarlos!)

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Page 15: Desarrollo Seguro en Drupal - DrupalCamp Spain 2013

Indice

1 Introduccion

2 Seguridad en profundidad

3 Seguridad en Drupal

4 Conclusiones

5 Referencias

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Page 16: Desarrollo Seguro en Drupal - DrupalCamp Spain 2013

Cross Site Scripting

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Page 17: Desarrollo Seguro en Drupal - DrupalCamp Spain 2013

Cross Site Scripting

¿Que es?

Ejecucion de codigo Javascript

Reflejado o almacenado

Ataca al cliente: robo de cookies, descarga de malware. . .

¡La mas comun en Drupal!

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Page 18: Desarrollo Seguro en Drupal - DrupalCamp Spain 2013

Cross Site Scripting

En Drupal. . .

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Page 19: Desarrollo Seguro en Drupal - DrupalCamp Spain 2013

Cross Site Scripting

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Page 20: Desarrollo Seguro en Drupal - DrupalCamp Spain 2013

Cross Site Scripting

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Page 21: Desarrollo Seguro en Drupal - DrupalCamp Spain 2013

SQL Injection

¿Que es?

Modificacion de consultas a base de datos

Basico, blind o time based

Ataca al servidor: extrae informacion, o la modifica

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Page 22: Desarrollo Seguro en Drupal - DrupalCamp Spain 2013

SQL Injection

En Drupal. . .

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Page 23: Desarrollo Seguro en Drupal - DrupalCamp Spain 2013

Cross Site Request Forgery

¿Que es?

Hacer que usuario pida URL sin que lo sepa

Peticion a un formulario con parametros GET

Eliminar nodos, cambiar contrasena. . .

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Page 24: Desarrollo Seguro en Drupal - DrupalCamp Spain 2013

Cross Site Request Forgery

En Drupal. . .

Utilizar siempre la Forms API

drupal valid token para envıos GET

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Page 25: Desarrollo Seguro en Drupal - DrupalCamp Spain 2013

Hijacking de sesion

¿Que es?

Robo de cookies para suplantar a un usuario identificado

Drupal se encarga de la gestion de la sesion

Mejor practica: utilizar SSL en todo el portal

Certificado valido, modulo securepages

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Page 26: Desarrollo Seguro en Drupal - DrupalCamp Spain 2013

Bypass de autorizacion

¿Que es?

Usuario accede a URLs osecciones no permitidas

En Drupal. . .

Controlado mediante elsistema de menu, roles ypermisos

Mejor practica:Mınimo privilegio posible

Granularizar permisos tantocomo sea necesario

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Page 27: Desarrollo Seguro en Drupal - DrupalCamp Spain 2013

Referencias inseguras

¿Que es?

Acceder a contenido para el cual no se tiene permiso

Permisos definidos, pero ¿se comprueban?

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Page 28: Desarrollo Seguro en Drupal - DrupalCamp Spain 2013

Referencias inseguras

Prevencion

Comprobar permisos: user access

Comprobar acceso a contenido: node access

En consultas SQL: $select→addtag(’node access’);

Utilizar la Forms API

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Page 29: Desarrollo Seguro en Drupal - DrupalCamp Spain 2013

Securizar la configuracion

Instalacion segura

Modulo paranoia

Modulo security review

Modulo update

Modulo password policy

Limitar duracion de sesion

Permisos “administer . . . ”

¡Ojo con los filtros de entrada!

Desactivar y eliminar modulo php

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Page 30: Desarrollo Seguro en Drupal - DrupalCamp Spain 2013

Indice

1 Introduccion

2 Seguridad en profundidad

3 Seguridad en Drupal

4 Conclusiones

5 Referencias

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Page 31: Desarrollo Seguro en Drupal - DrupalCamp Spain 2013

En resumen. . .

Defensa en todas las capas

Buenas practicas

Mucha documentacion, ¡no hay excusa!

Siempre habra fallos de seguridad

Buscar la proporcionalidad

La importancia de la formacion

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Page 32: Desarrollo Seguro en Drupal - DrupalCamp Spain 2013

En resumen. . .

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Page 33: Desarrollo Seguro en Drupal - DrupalCamp Spain 2013

Indice

1 Introduccion

2 Seguridad en profundidad

3 Seguridad en Drupal

4 Conclusiones

5 Referencias

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Page 34: Desarrollo Seguro en Drupal - DrupalCamp Spain 2013

Referencias

Linux Administrator’s Security Guidehttp://www.seifried.org/lasg

Apache Security Tipshttp://httpd.apache.org/docs/current/misc/security tips.html

PHP security manualhttp://php.net/manual/en/security.php

Cracking Drupalhttp://www.crackingdrupal.com

Writing secure codehttps://drupal.org/writing-secure-code

Securing your sitehttps://drupal.org/security/secure-configuration

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Page 35: Desarrollo Seguro en Drupal - DrupalCamp Spain 2013

Esto es todo, amigos...

¡Gracias!

¿Preguntas?

@RabbitLairezequielvazq[at]gmail[dot]com

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal