Aprovechando las copias de seguridad para hacer más interesantes las actividades (ejemplo: hardening)

Aunque la configuración por defecto de NETinVM trata de ser útil directamente, no es extraño que al plantear ejercicios sea necesario ajustar la configuración de una o varias máquinas KVM. En algunos casos, esta preparación previa es interesante por sí misma, como en la entrada «Capturando tráfico en las máquinas KVM«. Sin embargo, otras veces sería más interesante comenzar directamente con el ejercicio. Un buen ejemplo es el que se plantea en esta entrada: el robustecimiento de sistemas o hardening.

Efectivamente, en un ejercicio de robustecimiento, tener que prepararse uno mismo los agujeros de seguridad que luego se van a cerrar claramente le quita encanto a la actividad. Una solución muy efectiva es usar las copias de seguridad de NETinVM, pues son ficheros TAR.GZ que pueden ser distribuidos junto con el ejercicio, normalmente ocupan poco espacio y sirven para todas las copias de NETinVM de una determinada versión.

Ejercicios más interesantes con copias de seguridad

El ejemplo de robustecimiento es una buena muestra de la forma en que las copias de seguridad de NETinVM pueden hacer más interesantes los ejercicios.

En primer lugar, permite crear un efecto sorpresa, pues el que realiza el ejercicio parte de una configuración desconocida, diferente de la habitual de NETinVM. Esta sorpresa es muy interesante en seguridad informática para ejercicios como tests de intrusión o auditorías, o también para ejercicios más sencillos como realizar un barrido de puertos o una enumeración de la red. En otros ámbitos, puede ser interesante, por ejemplo, plantear la necesidad de arreglar la configuración de un sistema o servicio, por ejemplo un servidor web que no acaba de servir correctamente determinado tipo de contenido (o no arranca, directamente).

En segundo lugar, permite plantear escenarios complejos que pueden necesitar bastante trabajo previo de preparación. Por ejemplo, yo lo he utilizado en mi asignatura para que los estudiantes realicen una práctica de cortafuegos de aplicaciones y de ataque a una aplicación web vulnerable. La práctica comenzaba con una aplicación vulnerable ya instalada en dmza y con el navegador de la máquina desde la que se lanzan los ataques (extf) configurado con varios complementos. Otro ejemplo real sería la configuración desde cero del filtrado de paquetes en fw, que tiene 3 interfaces de red y comunica las redes externa, perimétrica e interna, como es el caso en muchas organizaciones. Para realizar la copia con el punto de partida simplemente fue necesario, en este caso, limpiar la configuración de IPTABLES en fw.

Creación y distribución de las copias de seguridad como base para ejercicios

La forma de crear y restaurar copias de seguridad en NETinVM se explica adecuadamente en la entrada «Aprendiendo a trabajar con NETinVM«, por lo que hoy nos centraremos en un uso diferente: usar una copia de seguridad como punto de partida para realizar ejercicios (por ejemplo, de robustecimiento).

La idea es sencilla, consiste simplemente en configurar adecuadamente las KVMs, hacer una copia de seguridad y distribuirla junto con el ejercicio. Para realizar el ejercicio, simplemente es necesario restaurar la copia antes de arrancar las KVMs.

El proceso, con un poco más detalle es como sigue:

  • Restaurar el estado inicial de las KVMs. Este paso ayuda a que las copias de seguridad mantengan un tamaño reducido, ya que el simple hecho de arrancar las máquinas genera contenido en el registro del sistema. El tamaño puede crecer muy rápidamente, por ejemplo, al instalar paquetes o, copiar ficheros. (Hay que tener en cuenta que borrar ficheros o paquetes no hace que la copia sea más pequeña, ya que, al ser incremental, el borrado supone cambios adicionales).
  • Arrancar las KVMs estrictamente necesarias. Nuevamente, para permitir una copia de tamaño lo más reducido posible.
  • Realizar los cambios estrictamente necesarios. Muchas veces es necesario hacer pruebas antes de dar con la configuración deseada. NETinVM es la herramienta perfecta para ello, sin embargo, generar la copia de seguridad después de numerosas pruebas puede hacer que la copia sea más grande de lo necesario. Por tanto, tras realizar las pruebas, es recomendable comenzar el proceso con la restauración de la copia de seguridad inicial y realizar los cambios de forma limpia a partir de las notas tomadas durante las pruebas.
  • Parar las KVMs y hacer la copia de seguridad. Parar las KVMs es necesario, pues no se puede hacer la copia con ellas en marcha.
  • Renombrar adecuadamente el fichero TAR.GZ. Se recomienda añadir al nombre de la copia una etiqueta explicativa. En este ejemplo se opta por añadir la etiqueta «_hardening-dmzc» para obtener el nombre de fichero «kvm_machines_2018-12-04_10-22_hardening-dmzc.tgz». Respetar la parte inicial del nombre permite que queden ordenados por fecha automáticamente, así como distinguir entre posibles versiones de «_hardening-dmz». Respetar la extensión facilita asimismo la restauración de la copia de seguridad.
  • Distribuir la copia de seguridad. Los ficheros de copia de seguridad se pueden copiar sin más a cualquier máquina virtual NETinVM de la misma versión. No se pueden usar en máquinas de versiones diferentes, ya que las copias de seguridad son incrementales.
  • Restaurar la copia de seguridad antes de comenzar el ejercicio. La persona que vaya a realizar el ejercicio debe restaurar la copia antes de poner en marcha las KVMs. Lógicamente, es posible volver a restaurar la copia de seguridad tantas veces como se desee, para realizar varias veces el ejercicio o en caso de cometer algún error intermedio y desear comenzar de nuevo desde el principio.

Caso de ejemplo: robustecimiento de dmzc

El caso que se plantea es partir de un estado en el que dmzc tenga una configuración insegura, siendo necesario robustecer este servidor.

Lógicamente, una parte importante del ejercicio sería plantear el problema y, si se considera oportuno, dar algunas indicaciones a los estudiantes (o a los compañeros de la empresa para los que se ha preparado el ejercicio). Para no alargar este artículo, voy a usar el planteamiento que se hace en la «Lección 2» del «Módulo 3» del curso de MiriadaX que se impartió en julio de 2017 y que usaba como base NETinVM.

El fichero «kvm_machines_2018-12-04_10-22_hardening-dmzc.tgz» contiene una copia de seguridad para cualquier NETinVM de la versión 2018-07-23. Para usarlo, simplemente es necesario copiarlo en base (se recomienda añadirlo al directorio «/home/user1/netinvm/backups») y seguir el procedimiento habitual para restaurar una copia de seguridad.

Una vez restaurada la copia, se pueden seguir las instrucciones de la lección, teniendo en cuenta que la versión actual de NETinVM usa Debian 9 tanto en base como en las KVMs, mientras que la versión del curso usaba Debian 8 en las KVMs (entonces eran UMLs, pues se usaba una tecnología de virtualización anidada diferente) y OpenSUSE en base.

2 comentarios en “Aprovechando las copias de seguridad para hacer más interesantes las actividades (ejemplo: hardening)

  1. Pau Tomé

    Acabo de descubrir este proyecto, y aunque aún lo estoy estudiando, tiene muy buena pinta.
    Soy profesor de ciclos formativos de Administració de sistemas informáticos y seguridad informática y pienso que puede ser muy útil en nuestra docencia. Muy buen trabajo!!

    Responder
  2. Carlos Pérez

    Gracias por tu comentario Pau. Aunque la máquina la construí pensando en las asignaturas universitarias en las que imparto docencia, me consta que también está siendo útiles en otros niveles de enseñanza y, especialmente, en los ciclos de grado superior. Espero que acabes usándola 🙂

    Responder

Deja una respuesta

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


¡IMPORTANTE! Responde a la pregunta: ¿Cuál es el valor de 12 9 ?