Desarrollo Seguro en Drupal - DrupalCamp Spain 2013

Post on 06-Jul-2015

198 views 4 download

description

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

Transcript of 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

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

Indice

1 Introduccion

2 Seguridad en profundidad

3 Seguridad en Drupal

4 Conclusiones

5 Referencias

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Indice

1 Introduccion

2 Seguridad en profundidad

3 Seguridad en Drupal

4 Conclusiones

5 Referencias

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Seguridad

¿Y esto de que va?

Seguridad web

Exposicion a internet

Vulnerabilidades

Explotacion

¿Hackers?

. . .

Dinero

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Seguridad

Pilares de la seguridad

Confidencialidad

Integridad

Disponibilidad

Autenticacion

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

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

Indice

1 Introduccion

2 Seguridad en profundidad

3 Seguridad en Drupal

4 Conclusiones

5 Referencias

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Seguridad en profundidad

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

¿Por que en profundidad?

El Abismo de Helm era inexpugnable. . .

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Servidor

Arquitectura mas comun para Drupal

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

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

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

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

Indice

1 Introduccion

2 Seguridad en profundidad

3 Seguridad en Drupal

4 Conclusiones

5 Referencias

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Cross Site Scripting

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

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

Cross Site Scripting

En Drupal. . .

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Cross Site Scripting

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Cross Site Scripting

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

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

SQL Injection

En Drupal. . .

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

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

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

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

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

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

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

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

Indice

1 Introduccion

2 Seguridad en profundidad

3 Seguridad en Drupal

4 Conclusiones

5 Referencias

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

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

En resumen. . .

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

Indice

1 Introduccion

2 Seguridad en profundidad

3 Seguridad en Drupal

4 Conclusiones

5 Referencias

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal

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

Esto es todo, amigos...

¡Gracias!

¿Preguntas?

@RabbitLairezequielvazq[at]gmail[dot]com

Ezequiel Vazquez De la calle Desarrollo seguro en Drupal