3. 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
4. Seguridad aplicada a
• Servidores y redes
• Programación y bases de datos
• Front-end
• Seguridad también para tus usuarios
5. “No atribuyas a un ‘hacker’ lo que
puede explicar la estupidez.”
@SergioEfe
6. 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
• Actualizar
apt-get update && apt-get upgrade
7. 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 abiertos
netstat -tulpn
10. 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ía
Mxtoolbox Blacklist Alerts (¡gratis!)
http://mxtoolbox.com/services_servermonitoring2.aspx
• Y más…
11. 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.
12. 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)
13. 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
14. Programación y BBDD
• Cross-site request forgery (CSRF)
Ejecutar acciones que el usuario no quiere
• Clickjacking
• Cross-site Scripting
Persistente VS No-persistente
• Aprende a evitar inyecciones SQL
SELECT * FROM users WHERE email = ‘$email_input’;
15. Programación y BBDD
El famoso XSS y “han hackeado la web de…”
No.
Haz unfollow a los cuñados que suelten esta clase de chorradas ;)
16. 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 servidor
Access-Control-Allow-Origin: *
• HTML5
http://html5sec.org
17. 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.
21. Usuarios contra usuarios
• 10 - 15s entre envíos
• Muy difíciles de detectar
• Los mismos usuarios denuncian
y nosotros comprobamos.
(Mensajes públicos)
22. 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.