He hecho un par de cosas, bastante consistentemente.
1) Divide tu infraestructura. Debería haber un nivel orientado a la web y todo el material de fondo, y deberían estar completamente separados. Si alguien comprometió su material de cara a la web, solo debería poder acceder a su back-end a través de la API, y nunca NUNCA sus datos subyacentes, excepto lo mediado por la API a través de servidores bajo su control.
2) Endurezca todo y cree sus propias AMI para su entorno de producción. Esto no es diferente a hacer tu propio “Gold Build CD” usando algo como Ghost. Es un dolor en el culo, pero es necesario.
- ¿Por qué un proyecto de Manhattan para la ciberseguridad es una mala idea?
- ¿Qué tecnologías existen disponibles para el público (gratuitas o pagas, legales o ilegales) que le permitan a una persona identificarme en un video?
- ¿Cambiar el puerto predeterminado de SSHD es una buena práctica?
- ¿Cuáles son los mejores correos electrónicos cifrados?
- Cómo detectar y eliminar manualmente virus de mi PC
3) Ejecutar auditorías. Personalmente, me gusta CloudCheckr no solo como una herramienta de administración de costos, sino para asegurarme de que solo estoy ejecutando AMI “aprobadas” en cualquier producción.
4) Si está ejecutando LINUX, puede configurar iptables en el sistema para asegurarse de que los servidores back-end solo estén hablando con los servidores front-end y solo en los puertos que desea que estén usando. Por supuesto, también puede hacerlo con los grupos de seguridad, pero esto es una protección adicional
5) Nunca ejecutes tus propias instancias de DB, ejecuta RDS. De Verdad. Es un mejor rendimiento, mejores precios y mejor seguridad. Y sea cual sea el DB que esté ejecutando, asegúrese de endurecerlo lo más que pueda y limite el acceso tanto como pueda.
Hay más que puede hacer, mucho más, pero para el 95% del mundo, esto es suficiente. Si estás en el 5%, envíame una nota, podemos hablar.