Cómo proteger tu equipo de ataques

Muy buenas con todos, antes de entrar al hardening de tu equipo, quiero contarles que el instalador que estoy desarrollando para Gentoo ya está en su fase pre-alpha 😀 esto quiere decir que el prototipo es lo suficientemente robusto como para poder ser probado por otros usuarios, pero al mismo tiempo todavía falta mucho por recorrer, y el feedback de estas etapas (pre-alpha,alpha,beta) ayudará a definir rasgos importantes sobre el proceso 🙂 Para los interesados…

https://github.com/ChrisADR/installer

PS. todavía tengo la versión exclusivamente en inglés, pero espero que para el beta ya tenga su traducción a español también (estoy aprendiendo esto de las traducciones en tiempo de ejecución en python, así que todavía hay mucho por descubrir)

Hardening

Cuando hablamos de hardening, nos referimos a una gran variedad de acciones o procedimientos que dificultan el acceso a un sistema informático, o red de sistemas. Precisamente por eso es que es un tema vasto y lleno de matices y detalles. En este artículo voy a listar algunas de las cosas más importantes o recomendables para tener en cuenta al momento de proteger un sistema, intentaré ir de lo más crítico a lo menos crítico, pero sin ahondar mucho en el tema puesto que cada uno de estos puntos sería motivo de un artículo propio.

Acceso físico

Este es sin dudas el primer y más importante problema de los equipos, puesto que si el atacante cuenta con fácil acceso físico al equipo, ya puede contarse como un equipo perdido. Esto es verdad tanto en grandes centros de data como en laptops dentro de una empresa. Una de las principales medidas de protección para este problema son las claves a nivel de BIOS, para todos aquellos a los que suene nuevo esto, es posible poner una clave al acceso físico de la BIOS, de esta manera si alguien quiere modificar los parámetros de inicio de sesión y arrancar el equipo desde un sistema live, no será trabajo sencillo.

Ahora bien, esto es algo básico y ciertamente funciona si es realmente requerido, yo he estado en varias empresas en las que no importa esto, porque creen que el «guardia» de seguridad de la puerta es más que suficiente para poder evitar el acceso físico. Pero vamos a un punto un poco más avanzado.

LUKS

Supongamos por un segundo que un «atacante» ya ha conseguido acceso físico al equipo, el siguiente paso es cifrar cada disco duro y partición existente. LUKS (Linux Unified Key Setup) es una especificación de cifrado, entre otras cosas LUKS permite cifrar con clave una partición, de esta manera, al iniciar el sistema si no se conoce la clave, la partición no puede ser montada ni leída.

Paranoia

Ciertamente existe gente que necesita un nivel «máximo» de seguridad, y esto lleva a resguardar hasta el aspecto más mínimo del sistema, pues bien, este aspecto llega a su cúspide en el kernel. El kernel de linux es la manera en la que tu software va a interactuar con el hardware, si tu evitas que tu software «vea» al hardware, este no podrá hacer daño al equipo. Para poner un ejemplo, todos conocemos lo «peligrosos» que son los USB con vírus cuando hablamos de Windows, pues ciertamente los usb pueden contener código en linux que podría o no ser perjudicial para un sistema, si hacemos que el kernel solo reconozca el tipo de usb (firmware) que deseamos, cualquier otro tipo de USB simplemente sería obviado por nuestro equipo, algo ciertamente un poco extremo, pero podría servir dependiendo de las circunstancias.

Servicios

Cuando hablamos de servicios, la primera palabra que me viene a la mente es «supervisión», y esto es algo bastante importante, puesto que una de las primeras cosas que hace un atacante al entrar a un sistema es mantener la conexión. Realizar análisis periódicos de las conexiones entrantes y sobre todo salientes es algo muy importante en un sistema.

Iptables

Ahora bien, todos hemos oído sobre iptables, es una herramienta que permite generar reglas de ingreso y salida de data a nivel de kernel, esto es ciertamente útil, pero también es un arma de doble filo. Muchas personas creen que por tener el «firewall» ya están libres de cualquier tipo de ingreso o salida del sistema, pero nada más alejado de la realidad, esto solo puede servir de efecto placebo en muchos casos. Es conocido que los firewalls funcionan a base de reglas, y estas ciertamente pueden ser evitadas o engañadas para permitir transportar data por puertos y servicios por los cuales las reglas considerarían que es algo «permitido», solo es cuestión de creatividad 🙂

Estabilidad vs rolling-release

Ahora este es un punto bastante polémico en muchos lugares o situaciones, pero permítanme explicar mi punto de vista. Como miembro de un equipo de seguridad que vela por muchos de los problemas de la rama estable de nuestra distribución, estoy al tanto de muchas, casi todas las vulnerabilidades existentes en los equipos Gentoo de nuestros usuarios. Ahora bien, distribuciones como Debian, RedHat, SUSE, Ubuntu y muchas otras pasan por lo mismo, y sus tiempos de reacción pueden variar dependiendo de muchas circunstancias.

Vayamos a un ejemplo claro, seguro todos han oído hablar de Meltdown, Spectre y toda una serie de noticias que han volado por internet en estos días, pues bien, la rama más «rolling-release» del kernel ya está parchada, el problema radica en llevar esas correcciones a kernels anteriores, ciertamente el «backporting» es un trabajo pesado y difícil. Ahora bien, después de eso, todavía tienen que ser probados por los desarrolladores de la distribución, y una vez que se han completado las pruebas, recién estará a disposición de los usuarios normales. ¿A qué quiero llegar con esto? A que el modelo rolling-release nos exige conocer más sobre el sistema y formas de rescatarlo si algo falla, pero eso es bueno, porque mantener la pasividad absoluta en el sistema tiene varios efectos negativos tanto para quien lo administra como para los usuarios.

Conoce tu software

Este es un adicional bastante valioso al momento de administrar, cosas tan simples como subscribirse a las noticias del software que utilizas puede ayudar a conocer de antemano los avisos de seguridad, de esta manera se puede generar un plan de reacción y al mismo tiempo ver cuánto tiempo toma para cada distribución resolver los problemas, siempre es mejor se proactivo en estos temas porque más del 70% de los ataques a empresas se llevan a cabo por software no actualizado.

Reflexión

Cuando la gente habla de hardening, muchas veces se cree que un equipo «resguardado» es a prueba de todo, y no hay nada más falso. Como su traducción literal lo indica, hardening implica hacer las cosas más difíciles, NO imposibles… pero muchas veces mucha gente piensa que esto conlleva magia oscura y muchos trucos como los honeypots… esto es un adicional, pero si no se puede con lo más básico como mantener actualizado un software o un lenguaje de programación… no existe necesidad de crear redes fantasma y equipos con contramedidas… lo digo porque he visto varias empresas donde preguntan por versiones de PHP 4 a 5 (evidentemente descontinuadas)… cosas que hoy por hoy son conocidas por tener cientos sino miles de fallas de seguridad, pero si la empresa no puede seguir el ritmo de la tecnología, pues de nada sirve que hagan lo demás.

Además, si todos estamos usando software libre o abierto, el tiempo de reacción para los errores de seguridad suele ser bastante corto, el problema viene cuando estamos tratando con software privativo, pero eso lo dejo para otro artículo que sigo esperando poder escribir pronto.

Muchas gracias por llegar hasta aquí 🙂 saludos


12 comentarios, deja el tuyo

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   gallopelado dijo

    Excelente

    1.    ChrisADR dijo

      Muchas gracias 🙂 saludos

  2.   norman dijo

    Lo que mas me gusta es la simpleza al tratar este tema, la seguridad en estos tiempos.Gracias voy a mantenerme en ubuntu mientras no sea de extrema necesidad por que a windows 8.1 la particion que tengo no la ocupo por el momento.Saludos.

    1.    ChrisADR dijo

      Hola norma, ciertamente los equipos de seguridad de Debian y Ubuntu son bastante eficientes 🙂 he visto cómo manejan casos a una velocidad sorprendente y ciertamente hacen sentir a sus usuarios seguros, al menos si yo estuviera en Ubuntu, me sentiría un poco más seguro 🙂
      Saludos, y cierto, es un tema simple… la seguridad más que un arte oscura es un tema de criterio mínimo 🙂

  3.   Alberto Cardona dijo

    Muchas gracias por tu aporte!
    Muy interesante, sobre todo la parte del Rolling release.
    No había tomado en cuenta eso, ahora me toca administrar un server con Gentoo para ver las diferencias que tengo con Devuan.
    Un gran saludo y ps a compartir esta entrada en mis redes sociales para que esta información llegue a más personas!!
    Gracias!

    1.    ChrisADR dijo

      De nada Alberto 🙂 estaba en deuda por ser el primero en contestar a la petición del blog anterior 🙂 así que saludos y ahora a seguir con esa lista de pendientes para escribir 🙂

  4.   Jolt2bolt dijo

    Pues aplicar hardening con spectre alla fuera, seria como dejar la pc masvulnerable en caso del uso de sanboxing por ejemplo. Curiosamente tu equipo estará mas seguro contra spectre mientras menos capas de seguridad apliques… curioso, ¿no?

    1.    ChrisADR dijo

      esto me recuerda un ejemplo que podría presentar todo un artículo… utilizar -fsanitize=address en en el compilador podría hacernos pensar que el software compilado sería más «seguro», pero nada más alejado de la verdad, yo conozco a un developer que intentó una vez hacerlo con todo el equipo… resultó siendo más fácil de atacar que uno sin utilizar ASAN… lo mismo aplica en diversos aspectos, utilizar las capas incorrectas cuando no se sabe lo que hacen, es más perjudicial que no utilizar nada 😛 supongo que eso es algo que todos deberíamos considerar al tratar de proteger un sistema… lo que nos regresa a que esto no es una magia oscura, sino mero sentido común 🙂 gracias por tu aporte

  5.   Kra dijo

    Para mi punto de vista la vulnerabilidad mas grave equiparada con el acceso físico y el error humano, sigue siendo el hardware dejando a Meltdown y Spectre de lado, ya desde viejos tiempos se ha visto como variantes de el gusano LoveLetter escribían código en la BIOS del equipo, como ciertas versiones de firmware en SSD permitían la ejecución de código remoto y el peor desde mi punto de vista el Intel Management Engine, que es una completa aberración para la privacidad y seguridad, porque ya no importa si el equipo tiene cifrado AES, ofuscación o cualquier tipo de hardening, porque incluso si el equipo esta apagado el IME te va a joder.

    Y también paradójicamente una Tinkpad X200 del año 2008 que usa LibreBoot es mas segura que cualquier equipo actual.

    Lo peor de esta situacion es que no tiene solución, debido a que ni Intel, AMD, Nvidia, Gygabite o cualquier fabricante de hardware medianamente conocido va a liberar bajo GPL o cualquier otra licencia libre, el diseño de hardware actual, porque para que invertir millones de dolares para que otro te copie la idea verdad.

    Hermoso capitalismo.

    1.    ChrisADR dijo

      Muy cierto Kra 🙂 es evidente que dominas bastante los temas de seguridad 😀 pues efectivamente el software y hardware privativos son un tema de cuidado, Pero lamentablemente contra eso hay poco por hacer respecto a «hardening», puesto que como tu dices, eso es algo que escapa a casi todos los mortales, excepto los que saben de programación y electrónica.

      Saludos y gracias por compartir 🙂

  6.   Anónimo dijo

    Muy interesante, ahora estaría bien un tutorial para cada apartado xD

    Por cierto, cómo de peligroso es si pongo una Raspberry Pi y le abro los puertos necesarios para usar owncloud o un servidor web desde fuera de casa?
    Es que me interesa bastante pero no sé si voy a tener tiempo de revisar logs de acceso, mirar cada cierto tiempo la configuración de seguridad, etc etc…

  7.   Julio dijo

    Exelente aporte, gracias por compartir tus conocimientos.