hack & beers lleida seguridad en desarrollo fullstack

23
Seguridad en desarrollo fullstack. Marc Pàmpols @mpampols

Upload: marc-pampols

Post on 20-Jul-2015

78 views

Category:

Technology


0 download

TRANSCRIPT

Seguridad en desarrollo fullstack.

Marc Pàmpols @mpampols

Plone (Python) y Php

Setrill (Php) Django (Python)59.700 Usuarios MySQL Node.js Varnish Debian …

400 Usuarios PostgreSQL Memcached Debian …

Fullstack?• Configuración de servidores y redes

• Conceptos de programación y bases de datos

• Programación Back-end y Front-end

• UX: Experiencia de usuario

• Negocios

Seguridad aplicada a

• Servidores y redes

• Programación y bases de datos

• Front-end

• Seguridad también para tus usuarios

“No atribuyas a un ‘hacker’ lo que puede explicar la estupidez.”

@SergioEfe

Servidores y redes• Encriptar comunicaciones

SSL · SFTP · VPN

• Un servicio de red por servidor Apache / Nginx · Base de datos · Aplicación web · …

• Revisar permisos en ficheros y carpetas

• Actualizarapt-get update && apt-get upgrade

Servidores y redes• Política de seguridad

Desactivar login de root y generar claves de acceso con contraseña.

• Configurar firewall

• Menos software = menos vulnerabilidades

• Sistemas de detección de intrusos (NIDS)

• Monitorización y auditorias

• Controlar los puertos abiertosnetstat -tulpn

Servidores y redes

Servidores y redes

Aún así…• 2010 Uno que trabajaba con Windows…

Se infectó con malware y le robó las claves de acceso a servidores almacenadas en plano. Era un bot.

• 2011 Mail Relay abierto. Unos 50k correos spam / díaMxtoolbox Blacklist Alerts (¡gratis!)http://mxtoolbox.com/services_servermonitoring2.aspx

• Y más…

Más lecciones aprendidas

• No fue un hacker, sino nuestra estupidez.

• Quien te garantiza un 100% de protección, miente.

• No te conformes con una ligera explicación de lo sucedido. No te fíes de nadie y llega siempre hasta el final.

Programación y BBDD• Elige un framework conocido y probado.

Pylons, Laravel, Django, CodeIgniter, Meteor, Symfony, Spring, …

• Revisa permisos de usuarios de la base de datos.

• Almacena correctamente las contraseñas.Cómo implementarlo correctamente, paso a paso: http://crackstation.net/hashing-security.htm

• La seguridad por oscuridad: error y falacia.Ejemplo 1: Internet Explorer (y con este es suficiente)

Principios de Kerckhoff• Si el sistema no es teóricamente irrompible, al menos debe serlo en

la práctica.

• La efectividad del sistema no debe depender de que su diseño permanezca en secreto.

• La clave debe ser fácilmente memorizable de manera que no haya que recurrir a notas escritas.

• Los criptogramas deberán dar resultados alfanuméricos.

• El sistema debe ser operable por una única persona.

• El sistema debe ser fácil de utilizar.

Fuente: http://es.wikipedia.org/wiki/Principios_de_Kerckhoffs

Programación y BBDD• Cross-site request forgery (CSRF)

Ejecutar acciones que el usuario no quiere

• Clickjacking

• Cross-site ScriptingPersistente VS No-persistente

• Aprende a evitar inyecciones SQLSELECT * FROM users WHERE email = ‘$email_input’;

Programación y BBDDEl famoso XSS y “han hackeado la web de…”

No.

Haz unfollow a los cuñados que suelten esta clase de chorradas ;)

Front-end• Jamás confíes en el navegador.

Valida todos los datos antes y después.

• XSS

• Cross-Origin resource sharing.Que sólo tú puedas enviar peticiones al servidorAccess-Control-Allow-Origin: *

• HTML5http://html5sec.org

Seguridad para tus usuarios

• Automatiza el control de Spam.

• Detecta y expulsa rápido a los scammers.

• Expulsa a usuarios que atacan a otros usuarios.

Nuestra experiencia en YoteConozco.com

Los más fáciles de detectar…

Lista negra de dominios y direcciones

(Mensajes públicos)

Usuarios contra usuarios

• 10 - 15s entre envíos

• Muy difíciles de detectar

• Los mismos usuarios denuncian y nosotros comprobamos.

Algunos trucos…• Dejamos que los spammers se registren…

o eso creen ellos.

• Escondemos campos por CSS que los bots rellenan… y sabemos si eres un bot, porque tu no.

• Controlamos el tiempo entre acciones. Un usuario real no tarda siempre los mismos segundos.

Fin.¯\_(ツ)_/¯