Upload
marc-pampols
View
77
Download
0
Embed Size (px)
Citation preview
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
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
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.
(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.