Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Apuntes M11 UF4

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 38

Realizado por Ramón Alarcón Sánchez

ASIGNATURA ICA0 M11 - Seguridad y alta disponibilidad

21-22) ICA0 M11-UF4: Alta disponibilidad

S07. Soluciones de alta Disponibilidad

ICA0011-S07-C01-V01 - Sistemas de Alta Disponibilidad


(https://lasallefponline.sallenet.org/mod/videofile/view.php?id=111752)

Imagen 1

En este vídeo, Sistemas de Alta Disponibilidad, se ve:

Definición

Tipos

Ejemplos

Definición

El concepto de alta disponibilidad está asociado y alineado al funcionamiento ininterrumpido de


los activos utilizados en una compañía u organización.

El término usado en el ambiente empresarial es High Availability (HA). Esto nos lo vamos a
encontrar en infinidad de infraestructuras, porque es muy utilizado en entornos empresariales
para poder tener 100 % disponibilidad, o bien de aplicaciones, o de la información que utilice la
organización.

Podemos tener diferentes tipos de alta disponibilidad, por ejemplo, de activo a pasivo, o de
activo a activo.

De activo a pasivo. Significa que el activo, cuando se cae, levantaría el pasivo.

De activo a activo. Significa que va a ir balanceando, y va a ir dividiendo las peticiones


que va recibiendo de un cliente.

Página 1 de 38
Imagen 2

Tipos

Tipos o clasificaciones que podemos realizar:

Alta disponibilidad de infraestructura. Si se produce un fallo de hardware en alguna de


las máquinas del clúster (clúster: «agrupación», «conglomerado», «agregado»), el
software de alta disponibilidad es capaz de arrancar automáticamente los servicios en
cualquiera de las otras máquinas del clúster fail-over.

Alta disponibilidad de aplicación. Si se produce un fallo del hardware, o de las


aplicaciones de alguna de las máquinas del clúster, el software de alta disponibilidad
usado será capaz de arrancar los servicios que han fallado en cualquiera de las otras
máquinas.

Aquí es donde podemos ver un poco más la definición del activo-pasivo o activo-activo. Nosotros
podemos tener diferentes tipos de alta disponibilidad, como acabamos de hablar: o bien por
aplicaciones, que sean una base de datos, o una aplicación vectorizada a través de [¿?] o, por
ejemplo, 2 balanceadores de carga… esto depende del coste, pero se pueden tener hasta 4
balanceadores de carga activo-activo, o 2 balanceadores de carga en forma activa y 2 en forma
pasiva. Esto lo podemos extrapolar igualmente a cualquier tipo de otro hardware, o bien sea un
cortafuegos, o un router, o un switch.

Lo que tenemos que entender es que con todo esto buscamos no cargar siempre un sistema, y
poder tener una réplica igual o similar para poder levantar, en caso de pérdida, un servicio
idéntico.

Imagen 3

Página 2 de 38
Ejemplos

Alta disponibilidad en bases de datos. Esto es muy usado cuando se utilizan bases de datos
enormes (por ejemplo, supermercados o entornos empresariales como la banca o las
energéticas, que utilizan información grandísima de clientes y bases de datos gigantes) es
preciso tener alta disponibilidad. De lo contrario, en un momento dado se caería la base de datos
y se quedaría toda la compañía sin acceder a determinadas consultas.

Alta disponibilidad en cortafuegos. Si nosotros solamente tenemos 1 y este por un casual se


cae o deja de funcionar o no está operativo, se pierde una parte de la seguridad de la
organización. También puede ocurrir que ya no solo se pierda parte de la seguridad, sino que
muchas de las comunicaciones se bloqueen porque no están pasando por el cortafuegos, ya que
no están siendo filtradas.

Alta disponibilidad en virtualización. En un servidor grande, con gran procesamiento, se


comienza a virtualizar. Y se empiezan a desplegar diferentes máquinas para dar servicio o para
que los usuarios se puedan conectar para determinadas acciones.

Alta disponibilidad en balanceadores. Todo esto en entornos empresariales nos lo vamos a


encontrar día a día. A poco que una red empresarial sea un poco grande se requiere de este tipo
de tecnología y de este tipo de implementaciones.

Luego ya independientemente tenemos clúster de alto rendimiento, que lo que buscamos es


una gran potencia de cómputo de procesamiento. Aquí podríamos unirlos todos, pero no es el
caso. Al final, alta disponibilidad es que siempre un servicio esté 100% activo, y que en caso de
pérdida tengamos otra réplica.

Otro ejemplo que no he comentado, que lo he vivido yo en entorno empresarial: Oracle tiene
un sistema de base de datos que se llama GoldenGate que lo que hace es que va replicando las
tablas o las bases de datos en diferentes CPDs de una organización. Así, de forma instantánea
cada vez que se inserta algo nuevo o se actualiza una tupla (registro/fila) en una base de datos,
automáticamente se va a replicar para todos los CPDs que se tengan desplegados. De esta forma,
en caso de pérdida completa de comunicación en un CPD lo tengo replicado en diferentes CPDs,
y no dejaría de funcionar.

Imagen 4

Página 3 de 38
ICA0011-S07-C01-V02 - Sistemas Clústeres y Balanceadores de Carga
(https://lasallefponline.sallenet.org/mod/videofile/view.php?id=111753)

Imagen 5

En este vídeo, Sistemas clúster y balanceadores de carga, se ve:

1. Sistemas clúster
2. Clasificación de los clústeres
3. Balanceadores de carga
4. Ejemplos

Sistemas clúster

Sistemas clúster: Conjunto de ordenadores con mismo hardware unidos entre sí por una misma
red de fibra óptica. Este conjunto de ordenadores se comporta como un solo ordenador.

¿Qué se busca con un clúster? Tener gran potencia de cálculo y gran rendimiento. Por ejemplo,
en la imagen izquierda de la imagen 6 se ven diferentes estaciones (antiguas, seguramente de
una universidad), que son exactamente iguales, unidas para intentar multiplicar la potencia.
Estos equipos son muy utilizados para hacer cálculos matemáticos, cálculos científicos, cálculos
meteorológicos…

En Barcelona tenemos un equipo (supercomputador) que se denomina MareNostrum.

Con el tema de los ordenadores cuánticos y los cálculos cuánticos se dice que esos equipos son
sumamente más potentes y con un rendimiento altísimo. Se llega a decir que con los
ordenadores cuánticos se podría romper cualquier cifrado de hoy día. Por eso, también hay un
poco de miedo con respecto a dónde va a ir el tema de los sistemas computacionales.

Imagen 6

Página 4 de 38
¿Qué componentes integran un clúster?

Nodos. Los nodos pueden ser simples ordenadores, o muchos procesadores, o


estaciones de trabajo, o servidores propios. Siempre y cuando sean del mismo hardware
los podemos unir con diferentes softwares que hay. Hay un proyecto muy interesante
de Raspberry Pi donde hacen un clúster con decenas de Raspberry Pi. Hay otro proyecto
de IBM donde montaron una bestialidad de Raspberry Pi y consiguieron una potencia
bastante interesante con bajo coste. No quiere decir que eso lo pudiéramos utilizar en
un entorno empresarial, pero sí se podría gestionar parte de un entorno empresarial con
eso. [Building the world’s largest Raspberry Pi cluster -
https://blogs.oracle.com/developers/post/building-the-worlds-largest-raspberry-pi-
cluster - Aquí se explica la experiencia de montar un 1060-node Raspberry Pi
cluster/Clúster de 1060 nodos Raspberry Pi]

Almacenamiento. Siempre se van a utilizar cabinas de disco. Cuando estemos en un CPD


vamos a utilizar cabinas de disco donde se van a compartir esos discos con los diferentes
nodos que compongan este sistema clúster.

Sistema operativo. Generalmente aquí siempre vamos a tener un sistema operativo


Linux o Unix, y concretamente un Red Hat seguramente.

Conexiones de red. Suelen estar todos los nodos interconectados siempre con redes de
alta velocidad; redes que al final son de fibra óptica. ¿Por qué? Porque lo que queremos
es que la transferencia de datos entre todos los nodos y por ejemplo si tengo que hacer
una comunicación con una cabina de disco que sea lo más rápida e instantánea posible.

Middleware. Es un software que actúa entre el sistema operativo y las aplicaciones, con
la finalidad de ofrecer a un clúster lo siguiente: una interfaz de acceso, herramientas
para la optimización y mantenimiento del sistema (por ejemplo, migrar procesos o
desconectar un clúster o provocar balanceos de carga). Otro punto importante el tema
de tolerancia frente a fallos.

Otra funcionalidad que da un clúster: el tema de la escalabilidad. Y siempre pudiendo conectar


diferentes nodos con el fin de obtener más potencia en función del rendimiento que se necesite.

Imagen 7

Página 5 de 38
Clasificación de los clústeres

Alto Rendimiento. Son clústeres que están diseñados para ejecutar tareas y procesamiento de
cálculo muy alto. Lo que hemos comentado: los equipos de MareNostrum que tenemos en
Barcelona son equipos que se usan para cálculos de ADN, o científicos, matemáticos, etc.

Alta Disponibilidad. Son los que ya hemos mencionado: suelen estar configurados en activo-
pasivo o activo-activo (depende). Con un sistema de alta disponibilidad buscamos que las
peticiones se vayan replicando en los diferentes sistemas, o inclusive si nosotros tenemos
levantados 2 servidores y necesitamos más potencia poder levantar otro. O, si se cae un servidor
de estos, que automáticamente se levante la réplica del otro servidor que tenemos apagado o
en stand by a la espera de un fallo. Siempre en estos clústeres va a estar todo sincronizado, tanto
a nivel de disco, a nivel de bases de datos, etc. Por ejemplo, hace un tiempo, cuando estuve
trabajando en parte de una televisión, ahí tenían un sistema clúster de alta disponibilidad en
diferentes CPDs con bases de datos de Oracle, donde automáticamente todas las
tuplas/filas/inserciones a la base de datos se iban replicando en los diferentes nodos,
independientemente de si un CPD se caía teníamos todos los CPDs con la misma información en
tiempo real. Estos sistemas de alta disponibilidad también son muy utilizados con Netflix. Netflix
cuando saca un capítulo nuevo y prevén que van a tener un pico muy alto de usuarios
automáticamente despliegan un batallón de servidores en AWS y en función de estos servidores
y de la demanda que vayan teniendo van levantando más o van tumbando más, siempre para
dar una alta disponibilidad.

Alta eficiencia. Son clústeres que su objetivo principal es ejecutar el mayor número de tareas
en el menor tiempo posible.

Imagen 8

Balanceadores de carga

Balanceador de carga: Es un dispositivo, que puede ser hardware o software, que se coloca entre
los servidores con el fin de repartir la carga de las peticiones de los clientes hacia los servidores.

Véase la imagen 9. Hay 3 clientes: A, B y C. El cliente A realiza una petición web a x dominio y
pasa por el balanceador de carga izquierdo. El cliente B realiza la petición al mismo dominio y
pasa por el balanceador de carga izquierdo. El tercer usuario —cliente C— quiere acceder
también a la misma URL de los 2 usuarios previos —clientes A y B—, pero en vez de pasar por el
balanceador de carga izquierdo, pasa por el balanceador de carga derecho. Con esto buscamos

Página 6 de 38
no sobrecargar los balanceadores de carga con el fin de poder repartir, de forma adecuada y sin
generar cuello de botella, hacia nuestros servidores para devolver el servicio como estaba
preparado.

Estos sistemas (balanceadores de carga) que solemos colocar entre medias también son muy
utilizados para evitar posibles ataques de denegación de servicio. Independientemente de que
luego tengamos un cortafuegos o lo que sea, estos balanceadores van a intentar balancear toda
esta carga. Dependiendo de la función o las peticiones que vayamos teniendo, vamos llevando
y repartiendo cada uno de este tráfico.

Imagen 9

Ejemplos

Los que yo más conozco son los F5 (https://www.f5.com/). Los F5 son una pasada. Son súper
potentes, puedes [parar y etiquetar] infinidad de cosas, actúan también como un Web
Application Firewall (WAF), podemos hacer parte de scripting, podemos repartir diferentes
reglas a diferentes redes. Son caros, pero son una pasada. Si algún día tenéis la oportunidad de
trabajar con un aparato de estos vais a disfrutar. A día de hoy pueden tener un appliance virtual
o un appliance físico. Siempre un appliance físico va a trabajar mucho mejor que algo que
tengamos virtualizado. Eso tenemos que tenerlo en cuenta.

Applicance: aparato, dispositivo.

Imagen 10

Página 7 de 38
ICA0011-S05-C01-V03 - Introducción Docker
(https://lasallefponline.sallenet.org/mod/videofile/view.php?id=111754)

Imagen 11

En este vídeo, Introducción Docker, se ve:

1. Contenedores Docker
2. VMs vs. Docker
3. Elementos básicos que componen la tecnología Docker

Contenedores Docker

¿Qué es Docker?

Es una aplicación que permite crear contenedores ligeros y portables para que las aplicaciones
software puedan ejecutarse en cualquier máquina con Docker instalado, independientemente
del sistema operativo.

Imagen 12

Página 8 de 38
¿Qué es un Contenedor?

Hablando de software, es un concepto heredado de Linux que consiste en un conjunto de


tecnologías unidas. Esto quiere decir que es un conjunto de software y dependencias necesarias
para correr una determinada aplicación. En definitiva, nos permite encapsular la aplicación y sus
dependencias independientemente del sistema operativo, de manera que no interfieran con
otras aplicaciones.

Imagen 13

Página 9 de 38
VMs vs. Docker

Máquina virtuales

Cuando hablamos de máquinas virtuales, estamos hablando de que dentro de un ordenador, o


una CPU, disponemos de un hardware. Ese hardware es la CPU, la RAM y los sistemas de entrada
y salida. Sobre ese hardware está corriendo un sistema operativo nativo con un hipervisor. Este
hipervisor puede ser un VirtualBox o un VMware (entre otros). Este hipervisor es el que controla
a las máquinas virtuales, y crea su propio hardware virtual para cada máquina, su propio sistema
operativo para cada máquina, y luego las aplicaciones.

Imagen 14

Contenedores Docker

Por el contrario, cuando hablamos de contenedores Docker disponemos del mismo hardware
(con su CPU, RAM y dispositivos de entrada y salida). Disponemos del mismo sistema operativo.
Pero, en vez de tener una aplicación corriendo que sea un hipervisor, tenemos un container
manager. En este caso, Docker, que es el encargado de manejar los contenedores.

Como vemos, para cada aplicación, dentro de cada contenedor, tendremos las variables
específicas del kernel que pertenecen al sistema operativo anfitrión, eliminando en este caso la
necesidad de un sistema operativo por cada contenedor, así como de un hardware virtual.

Imagen 15

Página 10 de 38
Ventajas Docker vs. VMs

¿Cuáles son las ventajas de Docker frente a las máquinas virtuales?

Reducción muy notable de los tiempos de carga. Más adelante veremos cómo la instanciación
de un contenedor requiere muy poco tiempo, en comparación con la inicialización de un sistema
operativo dentro de una máquina virtual.

Reducción del espacio de almacenamiento. Esto es evidente. Como Docker utiliza el propio
sistema sobre el que está corriendo, no tiene la necesidad de duplicidades. No tiene necesidad
de otro sistema operativo, y por lo tanto ocupa muchísimo menos espacio que una máquina
virtual.

Mejor aprovechamiento del hardware. Como habíamos visto antes, Docker utiliza el propio
hardware físico del sistema anfitrión, configurado con los drivers del sistema anfitrión. No tiene
un hardware virtual. Esto implica que el rendimiento del hardware es real, al contrario de lo que
sucede al emulado muchas veces dentro de las máquinas virtuales.

Menos recursos necesarios para su portabilidad. Más adelante comprobaremos cómo yo


incluso puedo subir un contenedor o una imagen a Docker Hub (Docker Hub Container Image
Library | App Containerization - https://hub.docker.com/) y luego poder descargarlo e instalarlo
en cualquier tipo de sistema operativo.

Imagen 16

Elementos básicos

Elementos básicos

Images - Imágenes

El principal elemento de Docker son las imágenes.

Una imagen de Docker es una instantánea de un contenedor, como si nos estuviéramos


refiriendo a un snapshot de una máquina virtual.

Las imágenes se crean con el comando build

Página 11 de 38
Imagen 17

Containers - Contenedores

Los contenedores son instancias en ejecución de una imagen.

Por ejemplo, nosotros tenemos una imagen que es un ubuntu + wordpress. Esa imagen está en
estático hasta que la arrancamos. Una vez que la arrancamos se convierte en un contenedor.
Pero yo puedo tener varios contenedores de la misma imagen corriendo: puedo tener un
contenedor #01, o puedo tener un contenedor #02.

Imagen 18

Volumes - Volúmenes

Es la manera que utiliza Docker para crear persistencia de datos dentro de los contenedores.

Por ejemplo, creará una carpeta para el contenedor en el directorio


/var/lib/docker/volumes, pero podemos modificarlo y crearlo donde nosotros

Página 12 de 38
queramos. De esta manera, aunque paremos Docker luego podremos volver a arrancarlo
utilizando nuestra persistencia de datos, con los datos que se han generado durante la ejecución
del contenedor.

Imagen 19

Links

Los links sirven para enlazar servicios de los contenedores entre sí. Por ejemplo, yo puedo tener
un contenedor donde tengo corriendo Ubuntu + apache + php, y necesito una conexión con otro
contenedor donde tengo Ubuntu + Mysql (un servidor de bases de datos Mysql). Yo los puedo
enlazar de manera que las peticiones de Apache mediante PHP se ejecuten en el contenedor
#02 con Ubuntu y Mysql.

Imagen 20

Página 13 de 38
ICA0011-S07-C01-V04 Introducción Docker 2
(https://lasallefponline.sallenet.org/mod/videofile/view.php?id=111755)

Imagen 21

En este vídeo, Introducción Docker 2, se ve:

1. Instalación de Docker
2. Docker-Compose y primeros comandos

Instalación de Docker

Comandos de instalación de Docker

Para la instalación de Docker seguiremos la siguiente lista de comandos que podemos ver en la
imagen 22.

1. Instalar software necesario


apt-get install apt-transport-https ca-certificates curl gnupg-
agent software-properties-common

2. Añadir la clave GPG de Docker


curl -fsSL https://download.docker.com/linux/debian/gpg | sudo
apt-key add -

3. Configurar el repositorio de Docker


echo ‘deb https://download.docker.com/linux/debian stretch
stable’ > /etc/apt/sources.list.d/docker.list

4. Actualizar
apt-get update

5. Instalar Docker y Docker Compose


apt-get install docker-ce

Página 14 de 38
apt-get install docker-compose

6. Comprobar si Docker se instaló correctamente


docker run hello-world

Imagen 22

Ahora, vamos a ello en nuestra Kali Linux.

1. Instalar el software necesario para correr Docker

Imagen 23

2. Añadir la clave GPG de Docker (Nos bajaríamos la llave para poder instalar el
repositorio de Docker)

Imagen 24

Página 15 de 38
3. Configurar el repositorio de Docker (Se copia el repositorio de Docker /linux/debian
en docker.list)

Imagen 25

4. Se hace apt-update

Imagen 26

5. Se instala docker-ce y docker-compose (tarda bastante porque es un programa bastante


pesado).

6. Se ejecuta docker run hello-world para ver el hola mundo de Docker

Imagen 27

Página 16 de 38
Docker-Compose y primeros comandos

Una vez instalado Docker, vamos a ver Docker-Compose y los primeros comandos de Docker.

Si se hace docker ps se listan los procesos, los contenedores, que están, pero solo los que
están corriendo.

Imagen 28

Si se hace docker ps -a podemos ver que están, aunque estén parados.

Imagen 29

----

docker ps → Solo se listan los contenedores que están corriendo.

docker ps -a → Se listan los contenedores que están corriendo y los que no están corriendo.

----

Estos contenedores (parados) hay que eliminarlos. Los podemos eliminar tanto con el
CONTAINER ID como con el nombre de la imagen.

En el vídeo se elimina el container que está parador con el CONTAINER ID:


docker rm 0b9a33c09913

Al volver a hacer docker ps -a no aparece nada.

Imagen 30

Página 17 de 38
¿Qué es lo primero que vamos a hacer? Vamos a bajar de Docker Hub (Docker Hub Container
Image Library | App Containerization - https://hub.docker.com/), que lo hemos buscado
mediante Google, una imagen de WordPress para usar en Docker.

Entonces, hacemos docker pull wordpress

Esto lo que hace es que se bajen todas las imágenes necesarias para poder crear el contenedor.

Imagen 31

----

docker pull → Para descargar imágenes de Docker Hub

----

Posteriormente, podemos ver las imágenes que tenemos con docker images (imagen 32).
En este caso tenemos hello-world y wordpress

Imagen 32

Página 18 de 38
Si queremos eliminar una imagen, por ejemplo, hello-world, se hace esto:

docker image rm hello-world (nótese que se elimina utilizando el nombre del


repositorio, que es hello-world, pero también puede eliminarse utilizando el IMAGE ID; en este
caso sería docker image rm bf756fblae65).

Imagen 33

Nótese que en la imagen 33, al volver a hacer docker images solo nos sale la de wordpress.
Tenemos una imagen de wordpress. Habíamos dicho que tener una imagen… al final no deja de
ser una imagen, es como una especie de ISO. Ahora mismo no tenemos nada corriendo.

Hay varias maneras para correr las imágenes de Docker. Las podemos correr mediante el
comando docker run, o las podemos correr mediante docker-compose, donde ya
tendremos todo organizado. Esto último lo veremos después; primero vamos a ver cómo se
corre una imagen con docker run.

Si yo ahora ejecuto docker run wordpress, directamente me va a correr la imagen, pero


no nos sirve para nada, porque realmente está corriendo el contenedor, pero no tenemos enlace
ni nada. Entonces, eso no nos interesa.

Imagen 34

Página 19 de 38
Hay que poner -d y_el_nombre si queremos que haga un detach.
docker run -d wordpress

De esta manera, hace un detach, es decir, mantenemos la consola.

Si ahora hacemos docker ps vemos que tenemos corriendo un wordpress. No le hemos


puesto ni nombre ni nada, sigue siendo el nombre del autor (NAMES tender_moser), pero nada
más.

Esto se para con docker stop tender_moser o siempre con el CONTAINER ID.

Imagen 35

Vamos a ver los contenedores que tenemos corriendo, con docker ps -a

En este caso tenemos todos. Existe una manera de poder eliminar todos los contenedores:
docker rm $(docker ps -a -q)

De esta manera se eliminan todos los contenedores.

Imagen 36

Decíamos que queríamos correrlo, pero, aunque docker crea la imagen, también necesitamos
una redirección de puertos a nuestro host local para poder atacarlos. Por ejemplo, WordPress
nos va a abrir un servidor de Apache de HTTP y queremos conectar con él. La mejor manera para
hacerlo es de la siguiente. Vamos a analizar el siguiente comando:
docker run --name pruebawordpress -p 8080:80 -d wordpress

docker run → Para correr un contenedor

--name pruebawordpress → Lo vamos a llamar pruebawordpress

Página 20 de 38
-p 8080:80 → Le decimos que abra el puerto 8080 en la máquina huésped (en la Kali en este
caso) y que lo redireccione al puerto 80 de dentro del contenedor

-d wordpress → Le decimos que coja la imagen de wordpress y que le haga un detach, para
que nos deje correr la consola

A continuación, con docker ps se ve que tenemos corriendo el contenedor.

Imagen 37

Si ahora se abre Firefox y nos vamos a localhost:8080 tenemos corriendo ya nuestro WordPress,
nuestro contendor, que podemos hacer una instalación.

Imagen 38

Este contenedor se encuentra ahora mismo corriendo. ¿Qué ocurre? Que yo tengo el
contenedor, pero yo ahora mismo, si yo quiero entrar dentro del contenedor a hacer algo, puedo
ejecutar:
docker exec -it nombre_del_contenedor
docker exec -it container_id

En el video se elige el método del container_id

docker exec -it 0058f6b8fa90 → Esto lo que hace es ejecutar el siguiente comando
que pongamos. Es decir:

docker exec -it 0058f6b8fa90 /bin/bash → En este caso se ejecuta en /bin/bash


para tener una shell

Con esto se tiene una shell dentro del contenedor. Si se hace ls se listan los archivos que hay
en /var/www/html

Página 21 de 38
Imagen 39

Con la shell dentro del contenedor puedo hacer lo que quiera. Con exit se sale de la shell del
contenedor y se vuelve a la shell local.

Imagen 40

En el vídeo se dice: tenemos este contendor (imagen 41). Qué ocurre si yo ahora quiero copiar
un archivo dentro del contenedor. Lo puedo hacer. Primeramente, se crea el archivo prueba.txt
y se lo puedo copiar con docker cp
docker cp el_archivo_que_quiero_copiar
container_id:ruta_donde_lo_quiero_copiar
docker cp el_archivo_que_quiero_copiar
nombre_del_contenedor:ruta_donde_lo_quiero_copiar

En el vídeo se hace:
docker cp prueba.txt 0058f6b8fa90:/tmp/prueba.txt

Con esto, el archivo prueba.txt ya está copiado.

Imagen 41

Página 22 de 38
Si ahora se hace un docker exec -it 0058f6b8fa90 /bin/bash (para tener una
shell dentro del contenedor) y me voy a la carpeta tmp —cd /tmp— tengo prueba.txt

Imagen 42

¿Qué ocurre? Que, si yo ahora mato este contendor, con docker stop 0058f6b8fa90, y
lo elimino, con docker rm 0058f6b8fa90 (imagen 43), el archivo que yo había copiado, si
yo ahora vuelvo a arrancar el contenedor no tendré ese archivo. Para eso lo que se crea son
volúmenes.

Imagen 43

La manera de crear volúmenes es: docker volume create nombre_volumen

Por ejemplo: docker volume create mis_datos

Con esto se ha creado un volumen llamado mis_datos

Ahora, al correr el contendor, yo puedo correrlo así:


docker run --name Pruebawordpress --mount
source=mis_datos,target=/tmp -p 8080:80 -d wordpress

--mount source=mis_datos,target=/tmp → Con esto monto el volumen mis_datos


en /tmp

Esto significa que si me voy a cd /var/lib/docker/volumes/ tengo un volumen que se


llama mis_datos, y todo lo que copie aquí va a aparecer en el otro lado, dentro del contendor. Y
al igual, todo lo que se genere dentro del contenedor que vaya a la carpeta /tmp se va a copiar
aquí. Esto sirve para hacer persistencia de datos, de manera que yo cada vez que arranque con
docker run --name Pruebaswordpress y monte esta carpeta voy a tener esa persistencia de datos
dentro del contenedor.

Imagen 44

Página 23 de 38
Entonces, si desde /var/lib/docker/volumes/mis_datos/_data yo creo un archivo —por ejemplo,
pruebas.txt—. Si yo ahora corro con el siguiente comando el docker:
docker run --name Pruebawordpress --mount
source=mis_datos,target=/tmp -p 8080:80 -d wordpress

--mount → Para montar

source=mis_datos → En el origen mis_datos; el volumen mis_datos

target=/tmp → Y dónde voy a montarlo; dentro del contenedor, en la carpeta /tmp

-p 8080:80 → Sigo igual con lo del puerto 8080 al 80

-d wordpress → Un detach a la imagen de wordpress

Ahora tengo un contenedor montado, y he creado dentro de aquí este pruebas.txt

Si yo ahora ejecuto docker exec -it 7358a214ba35 /bin/bash (para tener una
shell dentro del contendor) y me voy a la carpeta /tmp —cd /tmp— y hago ls se ve que tengo
pruebas.txt

Todo lo se genere dentro del contenedor en esta carpeta va a quedar guardado dentro del
volumen. De esta manera creamos persistencia.

Imagen 45

Es decir, si en /tmp se crea un archivo llamado pruebas2 y salgo del contenedor con exit,
pruebas2 se mantiene. Incluso aunque yo ahora mate el contenedor —con docker stop
7358a214ba35— y lo elimine —con docker rm 7358a214ba35—, si yo lo vuelvo a correr
con docker run montándolo —docker run --name Pruebawordpress --mount
source=mis_datos,target=/tmp -p 8080:80 -d wordpress—

Imagen 46

Página 24 de 38
Si yo vuelvo a hacer un docker exec -it 83c6521437ef /bin/bash y me voy a /tmp
—cd /tmp— tanto pruebas.txt como pruebas2 siguen estando.

Imagen 47

Ahora, se ve docker-compose

docker-compose es una manera para no tener que andar escribiendo todos estos comandos.
Imaginemos que nosotros enlazamos muchas máquinas con link y demás. Nos podemos
encontrar, en internet, GitHub, Docker Hub… con archivos que se llaman docker-compose.yml

Entonces, primero en el vídeo se hace nano docker-compose.yml

Imagen 48

Y se pega el siguiente texto, que en este caso en el vídeo se dice que se ha cogido de Docker Hub
(imagen 49):

Imagen 49

Página 25 de 38
Y, como se puede ver, aparece la imagen que crea —image: wordpress—, junto con otros
muchos parámetros. Es decir, aquí podemos configurar la manera en la que corre nuestro docker
para no tener que poner todo el docker run y demás. Esto es, aquí tenemos toda la lista de
parámetros, porque muchas veces se pueden enlazar muchísimos docker.

Entonces, se sale del archivo docker-compose.yml y se hace docker-compose up -d

Imagen 50

Con esto ya tenemos creado [el docker]. Entonces, si desde Firefox vamos a localhost:8080,
seguimos teniendo nuestro contenedor.

Imagen 51

En este caso, lo que ha hecho ha sido enlazar 2 contenedores. Tenemos 2 contenedores


lanzados: uno, que es la base de datos de mysql —mysql:5.7— y otro que es el wordpress.
Totalmente separados.

Imagen 52

Página 26 de 38
ICA0011-S07-C01-V05 Análisis Forense
(https://lasallefponline.sallenet.org/mod/videofile/view.php?id=111756)

Imagen 53

En este video, Análisis Forense Digital, se ve:

1. Introducción
2. Imágenes Forense
3. Volcados de Memoria
4. Herramientas de Análisis Forense

Introducción

¿Qué es un análisis forense digital?

El análisis forense digital corresponde con un conjunto de principios y técnicas que comprende
el proceso de adquisición, conservación, documentación, análisis y presentación de evidencias
digitales y que, llegado el caso, puedan ser aceptadas legalmente en un proceso judicial.

Es muy común en los procesos de Incident Response (IR), cuando alguna organización ha tenido
una intrusión, el realizar análisis forense de los equipos para determinar cuál fue, por ejemplo,
el vector de entrada.

Imagen 54

Página 27 de 38
Fases de un análisis forense

1. Identificación del incidente.


2. Recopilación de evidencias.
3. Preservación de la evidencia.
4. Análisis de la evidencia.
5. Documentación y presentación de resultados.

Imagen 55

Finalidad de un análisis forense digital por parte de un perito informático

Recuperación de la información que ha podido ser alterada, dañada o destruida sin alterarla
durante el proceso

Dar garantía de confidencialidad e integridad de la información

Garantizar la cadena de custodia de las evidencias

Posibilitar la ratificación de los informes en un juicio

Los peritos forenses suelen ser técnicos informáticos con una gran reputación, de manera que
su mayor dificultad es la de intentar explicar a personas no técnicas cuáles han sido sus hallazgos
y sus evidencias dentro del análisis forense, de manera que un juez o un letrado, que no tienen
la suficiente base técnica, puedan estar en capacidad de conocer qué es lo que ha ocurrido y
cómo se ha llegado a esos hechos.

Imagen 56

Página 28 de 38
Referencias en el código penal

Existen muchísimas referencias en el código penal. Sí es cierto que, hasta hace unos años, la ley
no contemplaba muchos de los detalles de delitos telemáticos, aunque actualmente podemos
encontrar (imagen 57):

Imagen 57

Son muchos de los ejemplos de cómo el código penal se ha ido renovando para ir metiendo
delitos telemáticos a los delitos que ya existían.

Imágenes Forense

¿Qué es una imagen forense?

Una imagen forense es una copia bit a bit exacta de un dispositivo de almacenamiento. Cabe
señalar que puede ser cualquier dispositivo de almacenamiento, bien sea un disco duro, un
pendrive o una cinta.

Imagen 58

Página 29 de 38
¿Cómo se crea una imagen forense?

La imagen se crea mediante el uso de herramientas como:

FTK Imager

dd

rdd

OSFClone

Existen herramientas de pago y herramientas open-source.

Imagen 59

Necesitamos la aplicación FTKImager para la realización de la práctica que se ve a continuación.

https://accessdata.com/product-download-page

Imagen 60

Página 30 de 38
Para el ejemplo, vamos a abrir la aplicación FTK Imager, y vamos a utilizar un USB. Hay que tener
en cuenta que con FTK Imager es posible ver archivos que existieron en una determinada unidad,
pero luego se eliminaron.

En esta ocasión, he creado un volumen de unos 150 MB, donde he copiado unos vídeos de la
anterior sesión, pero solo he dejado copiar 2 vídeos.

En el vídeo se crea un archivo .txt —texto2.txt— que luego se elimina.

Imagen 61

Entonces, cuando se hace la imagen con FTK Imager, el volumen NUEVO VOL (H:) contiene 2
archivos .mp4 y la carpeta oculta System Volume Information

Imagen 62

Para crear la imagen, desde FTK Imager se pulsa en File → Create Disk Image

Se abre una ventana donde se van seleccionando los pasos:

Se dice Select the Source Evidence Type - Seleccione el tipo de evidencia de origen, que
puede ser: Physical Drive, Logical Drive, Image File, Contents of a Folder (logical file-level

Página 31 de 38
analysis only; excludes deleted, unallocated, etc.) y Fernico Device (multiple CD/DVD). En
el vídeo se selecciona Logical Drive.

Imagen 63

En Source Drive Selection - Selección de la unidad de origen se escoge H:\ - NUEVO VOL
[FAT]

Imagen 64

Página 32 de 38
A continuación, en Image Desintation(s) se pulsa en el botón Add y en Select the
Destination Image Type - Seleccione el tipo de imagen de destino se escoge E01

Imagen 65

Luego, aparece Evidence Item Information - Información sobre el elemento de


evidencia

Imagen 66

Página 33 de 38
En Image Destination Folder - Carpeta de destino de la imagen se pone F:\Evidencia\ y
en Image Filename (Excluding Extension) - Nombre del archivo de imagen (sin la
extensión) se pone E01.

Imagen 67

Finalmente, se pulsa en Start

Imagen 68

Página 34 de 38
Una vez se ha creado la imagen, en FTK Imager se pulsa en File → Add Evidence Item

En Select Source se selecciona Image File

Imagen 69

En Evidence Source Selection se pulsa sobre Browse

Imagen 70

Página 35 de 38
Y se selecciona E01.E01

Imagen 71

Imagen 72

Página 36 de 38
Y con esto ya tenemos abierta nuestra imagen. Se ve cómo tenemos el volumen montado y se
pueden ver incluso los archivos eliminados (aparecen con una pequeña x). Los archivos que
existen actualmente. Incluso se puede ver el contenido de Texto.txt, que dice Esto es un archivo
que se eliminó

Imagen 73

Así, podemos ver las evidencias de una imagen de un disco.

Volcado de memoria

¿Qué es un volcado de memoria?

Un volcado de memoria es un registro no estructurado del contenido de la memoria en un


momento concreto. La guía de buenas prácticas forenses nos dice que siempre que realicemos
una recogida de evidencias iremos de la memoria más volátil a la menos. En nuestro caso, la
memoria más volátil es la RAM. En caso de encontrarnos con un sistema encendido, lo primero
que realizaremos será una recogida de evidencia de la memoria de acceso aleatorio mediante
un volcado de memoria.

Imagen 74

Página 37 de 38
Existen muchas herramientas para poder hacer un volcado de memoria. OSForensics es una
herramienta de PassMark de pago, pero tiene una versión de evaluación que podremos utilizar
durante unos días.

https://www.osforensics.com/osforensics.html

https://www.osforensics.com/download.html

Imagen 75

Herramientas de análisis forense

Existe una multitud de herramientas forenses:

Volatility - Es una herramienta de open-source que sirve para los volcados de memoria.
Con ella podemos analizarlos de múltiples maneras, desde sacar Strings a intentar sacar
llaves, últimos atributos de sistema, registros, claves almacenadas en la memoria…

RegRipper - Nos sirve para procesar los registros de Windows.

OSForensics - Es una completa suite de herramientas de forense de pago.

FTKImager

Autopsy - Sirve para analizar las imágenes hechas, por ejemplo, con FTKImager.

Imagen 76

Página 38 de 38

También podría gustarte