Es difícil dar consejos específicos de lo que has publicado aquí, pero tengo algunos consejos genéricos basados en una publicación que escribí hace años atrás cuando aún podía molestarme en blog.
No se asuste
Lo primero es lo primero, no hay "soluciones rápidas" aparte de restaurar su sistema desde una copia de seguridad realizada antes de la intrusión, y esto tiene al menos dos problemas.
- Es difícil determinar cuándo ocurrió la intrusión.
- No le ayuda a cerrar el "agujero" que les permitió entrar por última vez, ni a lidiar con las consecuencias de cualquier "robo de datos" que también pudo haber tenido lugar.
Esta pregunta sigue siendo formulada repetidamente por las víctimas de los piratas informáticos que irrumpieron en su servidor web. Las respuestas rara vez cambian, pero la gente sigue haciendo la pregunta. No estoy seguro de por qué. Quizás a las personas simplemente no les gustan las respuestas que han visto al buscar ayuda, o no pueden encontrar a alguien en quien confíen para que les dé consejos. O tal vez las personas leen una respuesta a esta pregunta y se centran demasiado en el 5% de por qué su caso es especial y diferente de las respuestas que pueden encontrar en línea y pierden el 95% de la pregunta y responden cuando su caso es lo suficientemente similar como el que leen en línea.
Eso me lleva a la primera pepita importante de información. Realmente aprecio que seas un copo de nieve único y especial. Aprecio que su sitio web también lo sea, ya que es un reflejo de usted y su negocio o, al menos, su arduo trabajo en nombre de un empleador. Pero para alguien en el exterior que mira hacia adentro, ya sea una persona de seguridad informática que busca el problema para tratar de ayudarlo o incluso al atacante mismo, es muy probable que su problema sea al menos 95% idéntico a cualquier otro caso alguna vez mirado.
No tome el ataque personalmente, y no tome las recomendaciones que siguen aquí o que reciba personalmente de otras personas. Si está leyendo esto después de ser víctima de un hack de un sitio web, lo siento mucho y realmente espero que pueda encontrar algo útil aquí, pero este no es el momento para permitir que su ego se interponga en lo que necesita. hacer.
Acabas de descubrir que tus servidores fueron pirateados. ¿Ahora que?
No te asustes. Absolutamente no actúes apresuradamente, y absolutamente no intentes fingir que las cosas nunca sucedieron y no actúes en absoluto.
Primero: entienda que el desastre ya ha sucedido. Este no es el momento para la negación; Es el momento de aceptar lo que sucedió, de ser realista al respecto y de tomar medidas para manejar las consecuencias del impacto.
Algunos de estos pasos van a doler, y (a menos que su sitio web tenga una copia de mis datos) Realmente no me importa si ignora todos o algunos de estos pasos, eso depende de usted. Pero seguirlos adecuadamente mejorará las cosas al final. El medicamento puede tener un sabor horrible, pero a veces tienes que pasarlo por alto si realmente quieres que funcione la cura.
Evite que el problema empeore de lo que ya es:
- Lo primero que debe hacer es desconectar los sistemas afectados de Internet. Cualesquiera otros problemas que tenga, dejar el sistema conectado a la web solo permitirá que el ataque continúe. Me refiero a esto literalmente; haga que alguien visite físicamente el servidor y desconecte los cables de red si eso es lo que se necesita, pero desconecte a la víctima de sus asaltantes antes de intentar hacer otra cosa.
- Cambie todas sus contraseñas para todas las cuentas en todas las computadoras que están en la misma red que los sistemas comprometidos. No realmente. Todas las cuentas. Todas las computadoras Sí, tienes razón, esto podría ser excesivo; Por otro lado, puede que no. No sabes de ninguna manera, ¿verdad?
- Verifica tus otros sistemas. Preste especial atención a otros servicios orientados a Internet y a aquellos que contienen datos financieros u otros datos comerciales sensibles.
- Si el sistema contiene los datos personales de alguien, informe inmediatamente a la persona responsable de la protección de datos (si no es usted) e INSTA a una divulgación completa. Sé que este es duro. Sé que este va a doler. Sé que muchas empresas quieren barrer este tipo de problema debajo de la alfombra, pero la empresa tendrá que lidiar con eso, y debe hacerlo con la vista puesta en todas y cada una de las leyes de privacidad relevantes.
Por más molestos que estén tus clientes por que les cuentes un problema, estarán mucho más molestos si no les cuentas, y solo se enteran por sí mismos después de que alguien cobra $ 8,000 en bienes utilizando los datos de la tarjeta de crédito. robado de su sitio.
¿Recuerdas lo que dije anteriormente? Lo malo ya ha sucedido. La única pregunta ahora es qué tan bien lo manejas.
Comprende el problema completamente:
- NO vuelva a poner en línea los sistemas afectados hasta que esta etapa esté completamente completa, a menos que quiera ser la persona cuya publicación fue el punto de inflexión para que yo realmente decida escribir este artículo. No voy a vincular a esa publicación para que la gente pueda reírse de forma barata, pero la verdadera tragedia es cuando la gente no puede aprender de sus errores.
- Examine los sistemas 'atacados' para comprender cómo los ataques lograron comprometer su seguridad. Haga todo lo posible para averiguar de dónde "vinieron" los ataques, de modo que entienda qué problemas tiene y necesita abordar para que su sistema sea seguro en el futuro.
- Examine los sistemas 'atacados' nuevamente, esta vez para comprender a dónde fueron los ataques, para que entienda qué sistemas se vieron comprometidos en el ataque. Asegúrese de seguir cualquier indicador que sugiera que los sistemas comprometidos podrían convertirse en un trampolín para atacar aún más sus sistemas.
- Asegúrese de que las "puertas de enlace" utilizadas en todos y cada uno de los ataques se entiendan completamente, para que pueda comenzar a cerrarlas correctamente. (por ejemplo, si sus sistemas se vieron comprometidos por un ataque de inyección SQL, entonces no solo necesita cerrar la línea de código defectuosa en particular por la que entraron, sino que también debería auditar todo su código para ver si el mismo tipo de error fue hecho en otro lugar).
- Comprenda que los ataques pueden tener éxito debido a más de un defecto. A menudo, los ataques tienen éxito no al encontrar un error importante en un sistema, sino al unir varios problemas (a veces menores y triviales por sí mismos) para comprometer un sistema. Por ejemplo, al usar ataques de inyección SQL para enviar comandos a un servidor de base de datos, descubrir que el sitio web / aplicación que está atacando se ejecuta en el contexto de un usuario administrativo y usar los derechos de esa cuenta como un trampolín para comprometer otras partes de un sistema. O como a los hackers les gusta llamarlo: "otro día en la oficina aprovechando los errores comunes que cometen las personas".
¿Por qué no simplemente "reparar" el exploit o rootkit que ha detectado y volver a poner el sistema en línea?
En situaciones como esta, el problema es que ya no tienes control de ese sistema. Ya no es tu computadora.
La única forma de asegurarse de que tiene el control del sistema es reconstruirlo. Si bien hay mucho valor en encontrar y corregir el exploit utilizado para entrar en el sistema, no puede estar seguro de qué más se le ha hecho una vez que los intrusos obtuvieron el control (de hecho, no es inaudito para los piratas informáticos que reclutan sistemas en una botnet para parchear los exploits que usaron ellos mismos, para proteger "su" nueva computadora de otros hackers, así como instalar su rootkit).
Haga un plan de recuperación y vuelva a poner en línea su sitio web y sígalo:
Nadie quiere estar desconectado por más tiempo del que tiene que estar. Eso es un hecho. Si este sitio web es un mecanismo generador de ingresos, la presión para volver a ponerlo en línea rápidamente será intensa. Incluso si lo único que está en juego es la reputación de su empresa, esto generará mucha presión para que las cosas vuelvan a funcionar rápidamente.
Sin embargo, no cedas a la tentación de volver a conectarte demasiado rápido. En lugar de eso, muévase lo más rápido posible para comprender qué causó el problema y resolverlo antes de volver a conectarse o, de lo contrario, seguramente será víctima de una intrusión una vez más, y recuerde, "ser pirateado una vez puede clasificarse como una desgracia; ser pirateado nuevamente inmediatamente después parece descuido "(con disculpas a Oscar Wilde).
- Supongo que has entendido todos los problemas que llevaron a la intrusión exitosa en primer lugar incluso antes de comenzar esta sección. No quiero exagerar el caso, pero si no lo has hecho primero, entonces realmente necesitas hacerlo. Lo siento.
- Nunca pague chantaje / dinero de protección. Este es el signo de una marca fácil y no desea que esa frase se use para describirlo.
- No caiga en la tentación de volver a poner en línea los mismos servidores sin una reconstrucción completa. Debería ser mucho más rápido construir una nueva caja o "destruir el servidor desde la órbita y realizar una instalación limpia" en el hardware antiguo de lo que sería auditar cada esquina del sistema antiguo para asegurarse de que esté limpio antes de volver a colocarlo en línea de nuevo. Si no está de acuerdo con eso, entonces probablemente no sepa lo que realmente significa asegurarse de que un sistema esté completamente limpio, o los procedimientos de implementación de su sitio web son un desastre. Presumiblemente tiene copias de seguridad y despliegues de prueba de su sitio que puede usar para construir el sitio en vivo, y si no lo hace, entonces ser pirateado no es su mayor problema.
- Tenga mucho cuidado con la reutilización de datos que estaban "en vivo" en el sistema en el momento del hack. No diré "nunca lo hagas" porque simplemente me ignorarás, pero francamente creo que debes considerar las consecuencias de mantener los datos cuando sabes que no puedes garantizar su integridad. Idealmente, debe restaurar esto desde una copia de seguridad realizada antes de la intrusión. Si no puede o no quiere hacer eso, debe tener mucho cuidado con esa información porque está contaminada. Debe tener especialmente en cuenta las consecuencias para otros si estos datos pertenecen a clientes o visitantes del sitio y no directamente a usted.
- Monitoree los sistemas con cuidado. Debe resolver hacer esto como un proceso continuo en el futuro (más abajo) pero se esfuerza más para estar atento durante el período inmediatamente posterior a que su sitio vuelva a estar en línea. Es casi seguro que los intrusos volverán, y si puedes verlos intentando entrar nuevamente, podrás ver rápidamente si realmente has cerrado todos los agujeros que usaron antes, además de los que hicieron por sí mismos, y podrías obtener información útil. información que puede transmitir a la policía local.
Reduciendo el riesgo en el futuro.
Lo primero que debe comprender es que la seguridad es un proceso que debe aplicar durante todo el ciclo de vida del diseño, la implementación y el mantenimiento de un sistema con conexión a Internet, no es algo que luego pueda aplicar algunas capas sobre su código como algo barato. pintar. Para ser adecuadamente seguro, un servicio y una aplicación deben diseñarse desde el principio teniendo esto en cuenta como uno de los principales objetivos del proyecto. Me doy cuenta de que es aburrido y lo has escuchado todo antes y que "simplemente no me doy cuenta de la presión" de poner tu servicio beta web2.0 (beta) en estado beta en la web, pero el hecho es que esto mantiene repitiéndose porque era cierto la primera vez que se dijo y aún no se ha convertido en una mentira.
No puedes eliminar el riesgo. Ni siquiera deberías intentar hacer eso. Sin embargo, lo que debe hacer es comprender qué riesgos de seguridad son importantes para usted y cómo administrar y reducir tanto el impacto del riesgo como la probabilidad de que ocurra.
¿Qué pasos puedes tomar para reducir la probabilidad de que un ataque sea exitoso?
Por ejemplo:
- ¿Fue la falla que permitió a las personas entrar en su sitio un error conocido en el código del proveedor, para el cual había un parche disponible? Si es así, ¿necesita repensar su enfoque sobre cómo parchear aplicaciones en sus servidores con conexión a Internet?
- ¿Era la falla que permitía a las personas entrar en su sitio un error desconocido en el código del proveedor, para el cual no había un parche disponible? Ciertamente, no recomiendo cambiar de proveedor cada vez que algo como esto lo muerde porque todos tienen sus problemas y se quedará sin plataformas en un año como máximo si adopta este enfoque. Sin embargo, si un sistema te decepciona constantemente, entonces debes migrar a algo más robusto o, como mínimo, rediseñar tu sistema para que los componentes vulnerables permanezcan envueltos en algodón y lo más lejos posible de los ojos hostiles.
- ¿Fue la falla un error en el código desarrollado por usted (o un contratista que trabaja para usted)? Si es así, ¿necesita repensar su enfoque sobre cómo aprueba el código para la implementación en su sitio en vivo? Si el error se detecta con un sistema de prueba mejorado o con cambios en su "estándar" de codificación (por ejemplo, si bien la tecnología no es una panacea, puede reducir la probabilidad de un ataque de inyección SQL exitoso utilizando técnicas de codificación bien documentadas )
- ¿La falla se debió a un problema con la forma en que se implementó el servidor o el software de la aplicación? Si es así, ¿está utilizando procedimientos automatizados para construir e implementar servidores cuando sea posible? Estas son una gran ayuda para mantener un estado de "línea de base" consistente en todos sus servidores, minimizando la cantidad de trabajo personalizado que se debe hacer en cada uno y, por lo tanto, minimizando la oportunidad de cometer un error. Lo mismo ocurre con la implementación de código: si necesita hacer algo "especial" para implementar la última versión de su aplicación web, intente automatizarla y asegúrese de que siempre se realice de manera coherente.
- ¿Podría haberse detectado la intrusión antes con una mejor supervisión de sus sistemas? Por supuesto, el monitoreo de 24 horas o un sistema "de guardia" para su personal puede no ser rentable, pero hay compañías que pueden monitorear sus servicios de Internet y alertarlo en caso de un problema. Podrías decidir que no puedes pagar esto o no lo necesitas y eso está bien ... solo tenlo en cuenta.
- Use herramientas como tripwire y nessus cuando corresponda, pero no las use solo a ciegas porque se lo dije. Tómese el tiempo para aprender a usar algunas buenas herramientas de seguridad que sean apropiadas para su entorno, mantenga estas herramientas actualizadas y úselas regularmente.
- Considere contratar expertos en seguridad para 'auditar' la seguridad de su sitio web de forma regular. De nuevo, puede decidir que no puede permitirse esto o no lo necesita y eso está bien ... solo tómelo en consideración.
¿Qué pasos puedes tomar para reducir las consecuencias de un ataque exitoso?
Si decide que el "riesgo" de la inundación del piso inferior de su casa es alto, pero no lo suficientemente alto como para justificar el traslado, al menos debe trasladar las reliquias familiares insustituibles al piso de arriba. ¿Derecho?
- ¿Se puede reducir la cantidad de servicios directamente expuestos a Internet? ¿Puede mantener algún tipo de brecha entre sus servicios internos y sus servicios orientados a Internet? Esto garantiza que incluso si sus sistemas externos se ven comprometidos, las posibilidades de usar esto como trampolín para atacar sus sistemas internos son limitadas.
- ¿Está almacenando información que no necesita almacenar? ¿Está almacenando dicha información "en línea" cuando podría archivarse en otro lugar? Hay dos puntos en esta parte; la obvia es que las personas no pueden robarle información que no tiene, y el segundo punto es que cuanto menos almacene, menos necesita mantener y codificar, por lo que hay menos posibilidades de que los errores se escapen su código o diseño de sistemas.
- ¿Está utilizando los principios de "acceso mínimo" para su aplicación web? Si los usuarios solo necesitan leer desde una base de datos, asegúrese de que la cuenta que usa la aplicación web para dar servicio solo tenga acceso de lectura, no permita el acceso de escritura y ciertamente no el acceso a nivel del sistema.
- Si no tiene mucha experiencia en algo y no es fundamental para su negocio, considere la posibilidad de externalizarlo. En otras palabras, si ejecuta un sitio web pequeño hablando de escribir código de aplicación de escritorio y decide comenzar a vender pequeñas aplicaciones de escritorio del sitio, entonces considere "externalizar" su sistema de pedido de tarjeta de crédito a alguien como Paypal.
- Si es posible, haga que la recuperación práctica de sistemas comprometidos sea parte de su plan de recuperación ante desastres. Podría decirse que se trata simplemente de otro "escenario de desastre" que podría encontrar, simplemente uno con su propio conjunto de problemas y cuestiones que son distintas de la habitual 'sala de servidores incendiada' / 'fue invadida por el tipo de cosas de servidores gigantes que se alimentan de perturbaciones.
... Y finalmente
Probablemente he dejado de lado un sinfín de cosas que otros consideran importantes, pero los pasos anteriores deberían al menos ayudarlo a comenzar a resolver las cosas si tiene la mala suerte de ser víctima de piratas informáticos.
Sobre todo: no se asuste. Piensa antes de actuar. Actúe con firmeza una vez que haya tomado una decisión y deje un comentario a continuación si tiene algo que agregar a mi lista de pasos.