diff --git a/src/content/posts/2023-01-26_vpn_wireguard/featured.png b/src/content/posts/2023-01-26_vpn_wireguard/featured.png new file mode 100644 index 0000000..585fdbf Binary files /dev/null and b/src/content/posts/2023-01-26_vpn_wireguard/featured.png differ diff --git a/src/content/posts/2023-01-26_vpn_wireguard/index.md b/src/content/posts/2023-01-26_vpn_wireguard/index.md new file mode 100644 index 0000000..6899d82 --- /dev/null +++ b/src/content/posts/2023-01-26_vpn_wireguard/index.md @@ -0,0 +1,388 @@ +--- +title: Redes Privadas Virtuales con WireGuard +published: 2023-01-26 +image: "./featured.png" +tags: ["VPN", "WireGuard"] +category: Documentación +draft: false +--- + +## Caso C: VPN de acceso remoto con WireGuard + + +Monta una VPN de acceso remoto usando Wireguard. Intenta probarla con clientes Windows, Linux y Android. Documenta el proceso adecuadamente y compáralo con el del apartado A. + + +El Escenario es el siguiente: + +![escenario1](https://i.imgur.com/vob221j.png) + +Vamos a utilizar un VagrantFile igual al utilizado en el caso A para montar la infraestructura necesaria para la práctica: + +```ruby +Vagrant.configure("2") do |config| + +config.vm.synced_folder ".", "/vagrant", disabled: true + + config.vm.define :cliente3 do |cliente3| + cliente3.vm.box = "debian/bullseye64" + cliente3.vm.hostname = "cliente3" + cliente3.vm.network :private_network, + :libvirt__network_name => "red-externa3", + :libvirt__dhcp_enabled => false, + :ip => "192.168.0.20", + :libvirt__netmask => '255.255.255.0', + :libvirt__forward_mode => "veryisolated" + end + + config.vm.define :servidor3 do |servidor3| + servidor3.vm.box = "debian/bullseye64" + servidor3.vm.hostname = "servidor3" + servidor3.vm.network :private_network, + :libvirt__network_name => "red-externa3", + :libvirt__dhcp_enabled => false, + :ip => "192.168.0.10", + :libvirt__netmask => '255.255.255.0', + :libvirt__forward_mode => "veryisolated" + servidor3.vm.network :private_network, + :libvirt__network_name => "red-interna3", + :libvirt__dhcp_enabled => false, + :ip => "192.168.1.10", + :libvirt__netmask => '255.255.255.0', + :libvirt__forward_mode => "veryisolated" + end + + config.vm.define :maquina3 do |maquina3| + maquina3.vm.box = "debian/bullseye64" + maquina3.vm.hostname = "maquina3" + maquina3.vm.network :private_network, + :libvirt__network_name => "red-interna3", + :libvirt__dhcp_enabled => false, + :ip => "192.168.1.30", + :libvirt__netmask => '255.255.255.0', + :libvirt__forward_mode => "veryisolated" + end +end +``` + +Ahora vamos a configurar las máquinas: + +### Servidor + +Instalamos wireguard: + +```bash +sudo apt update +sudo apt install wireguard +``` + +Activamos el bit de forwarding en el servidor editando el fichero `/etc/sysctl.conf` y descomentando la siguiente línea: + +```bash +net.ipv4.ip_forward=1 +``` + +y hacemos los cambios efectivos: + +```bash +sudo sysctl -p +``` + +Ahora vamos a generar los pares de claves para el servidor (como usuario root): + +```bash +wg genkey | tee /etc/wireguard/server_private.key | wg pubkey | tee /etc/wireguard/server_public.key +``` + +Ahora vamos a crear el fichero de configuración del servidor en `/etc/wireguard/wg0.conf`, utilizando las claves que hemos generado en el paso anterior: + +```bash +[Interface] +Address = 10.99.99.1/24 +ListenPort = 51820 +PrivateKey = aB9gyJdOH835WVK4bqbb2VqrGeW5wFuOIyHFx7suu1w= + + +``` + +Al tratarse de fichero sensibles, tienen que tener permisos de solo lectura, por lo que vamos a cambiar los permisos: + +```bash +sudo chmod -R 600 /etc/wireguard/ +``` + +Creamos la interfaz: + +```bash +sudo wg-quick up /etc/wireguard/wg0.conf +``` + +![wgup](https://i.imgur.com/4avm7tC.png) + +### Cliente + +Instalamos wireguard: + +```bash +sudo apt update +sudo apt install wireguard +``` + +Ahora vamos a generar los pares de claves para el cliente (como usuario root): + +```bash +wg genkey | tee /etc/wireguard/client_private.key | wg pubkey | tee /etc/wireguard/client_public.key +``` + +hora vamos a crear el fichero de configuración del cliente en `/etc/wireguard/wg0.conf`, utilizando la clave privada generada en el paso anterior y la clave pública del servidor: + +```bash +[Interface] +Address = 10.99.99.2/24 +PrivateKey = 8DFSQc0qbT3P9Dhnbg44bxU+W2uRraXsebB+suQH+nQ= + +[Peer] +PublicKey = voKHGdJUz8B6Q6jRYJspzhSWDLmXI4jroPc89VkMCHQ= +AllowedIPs = 0.0.0.0/0 +Endpoint = 192.168.0.10:51820 +PersistentKeepalive = 25 +``` +Al tratarse de fichero sensibles, tienen que tener permisos de solo lectura, por lo que vamos a cambiar los permisos: + +```bash +sudo chmod -R 600 /etc/wireguard/ +``` + +Creamos la interfaz: + +```bash +sudo wg-quick up /etc/wireguard/wg0.conf +``` + +![wgup2](https://i.imgur.com/hsQTSjy.png) + +Una vez hecho esto, tenemos que añadir la clave pública del cliente al fichero de configuración del **servidor**, añadiendo las siguentes líneas: + +```bash +[Peer] +PublicKey = eh7Ap8nkBQf5vL60sp2ORzqLtz2YWnbjABbTMrukaCo= +AllowedIPs = 10.99.99.2/32 +``` + +y reiniciamos la interfaz: + +```bash +sudo wg-quick down /etc/wireguard/wg0.conf +sudo wg-quick up /etc/wireguard/wg0.conf +``` + +Podemos ver el estado de la interfez con el comando `wg`: + +![wg](https://i.imgur.com/GIJCLAo.png) + +### Rutas + +Para que los mensajes que se envíen desde la máquina cliente a la máquina servidor, pasen por el túnel VPN, tenemos que cambiar la ruta por defecto para que sea a través del servidor: + +```bash +sudo ip route del default +sudo ip route add default via 10.99.99.1 +``` + +Tenemos que cambiar la ruta por defecto también de la máquina interna para que sea a través del servidor: + +```bash +sudo ip route del default +sudo ip route add default via 192.168.1.10 +``` + +### Comprobación + +Para comprobar que funciona, vamos a hacer un `traceroute` desde la máquina cliente a la máquina servidor: + +![traceroute1](https://i.imgur.com/RxFLZJh.png) + +## Caso D: VPN sitio a sitio con WireGuard + +Configura una VPN sitio a sitio usando WireGuard. Documenta el proceso adecuadamente y compáralo con el del apartado B. + +El Escenario es el siguiente: + +![escenario2](https://i.imgur.com/VGD6hgl.png) + +El escenario es similar al del caso B por lo que utilizaremos el mismo vagrantfile: + +```ruby +Vagrant.configure("2") do |config| + +config.vm.synced_folder ".", "/vagrant", disabled: true + + config.vm.define :maquina1 do |maquina1| + maquina1.vm.box = "debian/bullseye64" + maquina1.vm.hostname = "maquina1" + maquina1.vm.network :private_network, + :libvirt__network_name => "interna1", + :libvirt__dhcp_enabled => false, + :ip => "192.168.0.20", + :libvirt__netmask => '255.255.255.0', + :libvirt__forward_mode => "veryisolated" + end + + config.vm.define :cliente do |cliente| + cliente.vm.box = "debian/bullseye64" + cliente.vm.hostname = "cliente" + cliente.vm.network :private_network, + :libvirt__network_name => "interna1", + :libvirt__dhcp_enabled => false, + :ip => "192.168.0.10", + :libvirt__netmask => '255.255.255.0', + :libvirt__forward_mode => "veryisolated" + cliente.vm.network :private_network, + :libvirt__network_name => "internet", + :libvirt__dhcp_enabled => false, + :ip => "10.20.30.1", + :libvirt__netmask => '255.255.255.0', + :libvirt__forward_mode => "veryisolated" + end + + config.vm.define :servidor do |servidor| + servidor.vm.box = "debian/bullseye64" + servidor.vm.hostname = "servidor" + servidor.vm.network :private_network, + :libvirt__network_name => "internet", + :libvirt__dhcp_enabled => false, + :ip => "10.20.30.2", + :libvirt__netmask => '255.255.255.0', + :libvirt__forward_mode => "veryisolated" + servidor.vm.network :private_network, + :libvirt__network_name => "interna2", + :libvirt__dhcp_enabled => false, + :ip => "172.22.0.10", + :libvirt__netmask => '255.255.0.0', + :libvirt__forward_mode => "veryisolated" + end + + config.vm.define :maquina2 do |maquina2| + maquina2.vm.box = "debian/bullseye64" + maquina2.vm.hostname = "maquina2" + maquina2.vm.network :private_network, + :libvirt__network_name => "interna2", + :libvirt__dhcp_enabled => false, + :ip => "172.22.0.20", + :libvirt__netmask => '255.255.0.0', + :libvirt__forward_mode => "veryisolated" + end +end +``` + +Ahora vamos a configurar las máquinas: + +### Servidor + +La configuración es similar a la del caso B, con la diferencia de que el fichero de configuración en `/etc/wireguard/wg0.conf` es el siguiente: + +Las claves son: + +* privada: `0N0kdHNHajtKY78rAGaI5uHzY8QGvZMCuiyw3WXU0n0=` +* pública: `SC7FuKTw2GnjJmJDmP0GuZGzgr9CBHUbcBOAXKKrCSU=` + +```bash +[Interface] +Address = 10.99.99.1 +ListenPort = 51820 +PrivateKey = 0N0kdHNHajtKY78rAGaI5uHzY8QGvZMCuiyw3WXU0n0= +``` + +Creamos la interfaz con el siguiente comando: + +```bash +sudo wg-quick up wg0 +``` + +### Cliente + +La configuración es similar a la del caso B, con la diferencia de que el fichero de configuración en `/etc/wireguard/wg0.conf` es el siguiente: + +Las claves son: + +* privada: `OLKDIsseCywbzWOwME1gxzIZLhopGljCeyYgibrHwm0=` +* pública: `jwqTMNZ4lQkVk2OLrlMGZGDCkkCLJFmcUjlF7aPvrWc=` + +```bash +[Interface] +Address = 10.99.99.2 +PrivateKey = OLKDIsseCywbzWOwME1gxzIZLhopGljCeyYgibrHwm0= +ListenPort = 51820 + +[Peer] +PublicKey = SC7FuKTw2GnjJmJDmP0GuZGzgr9CBHUbcBOAXKKrCSU= +AllowedIPs = 0.0.0.0/0 +Endpoint = 10.20.30.2:51820 +``` + +Creamos la interfaz con el siguiente comando: + +```bash +sudo wg-quick up wg0 +``` + +Activamos el bit de forwarding en el servidor editando el fichero `/etc/sysctl.conf` y descomentando la siguiente línea: + +```bash +net.ipv4.ip_forward=1 +``` + +y hacemos los cambios efectivos: + +```bash +sudo sysctl -p +``` + +Ahora, como tenemos la clave pública del otro servidor, modificamos el fichero `/etc/wireguard/wg0.conf` del servidor para añadir la siguiente sección: + +```bash +[Peer] +Publickey = jwqTMNZ4lQkVk2OLrlMGZGDCkkCLJFmcUjlF7aPvrWc= +AllowedIPs = 0.0.0.0/0 +PersistentKeepAlive = 25 +Endpoint = 10.20.30.1:51820 +``` + +y reiniciamos el servicio: + +```bash +sudo wg-quick down wg0 +sudo wg-quick up wg0 +``` + +### Máquinas + +Ahora vamos a configurar las rutas en las maquinas internas: + +Máquina1: + +```bash +sudo ip route del default +sudo ip route add default via 192.168.0.10 +``` + +Máquina2: + +```bash +sudo ip route del default +sudo ip route add default via 172.22.0.10 +``` + +### Prueba de funcionamiento + +traceroute desde maquina1 a maquina2: + +![traceroute2](https://i.imgur.com/0HeraM7.png) + +traceroute desde maquina2 a maquina1: + +![traceroute3](https://i.imgur.com/4WHGAH0.png) + +## Conclusión + +Utilizando WireGuard la configuración es más sencilla de realizar y tiene menos ficheros, por lo que es más fácil de gestionar y de depurar errores. Aparte de esto, el funcionamiento es el mismo que el de OpenVPN. \ No newline at end of file diff --git a/src/content/posts/2023-01-30_integridad_firmas/featured.png b/src/content/posts/2023-01-30_integridad_firmas/featured.png new file mode 100644 index 0000000..35b4416 Binary files /dev/null and b/src/content/posts/2023-01-30_integridad_firmas/featured.png differ diff --git a/src/content/posts/2023-01-30_integridad_firmas/index.md b/src/content/posts/2023-01-30_integridad_firmas/index.md new file mode 100644 index 0000000..edca184 --- /dev/null +++ b/src/content/posts/2023-01-30_integridad_firmas/index.md @@ -0,0 +1,162 @@ +--- +title: Integridad, firmas y autenticación +published: 2023-01-30 +image: "./featured.png" +tags: ["Criptografía", "gnupg"] +category: Documentación +draft: false +--- + +## Tarea 1: Firmas electrónicas + +1. **Manda un documento y la firma electrónica del mismo a un compañero. Verifica la firma que tu has recibido.** + +```bash +echo "DOCUMENTO CIFRADO SECRETO" > documento_rober.txt\n +gpg --output firmarober.sig --detach-sig documento_rober.txt +``` + +Envío los ficheros por correo. + +2. **¿Qué significa el mensaje que aparece en el momento de verificar la firma?** + +![Firma](https://i.imgur.com/dOFJJTl.png) + +Significa que, aunque el fichero está firmado por esa firma, no se puede asegurar que la firma pertenezca a la persona que dice ser. + +3. **Vamos a crear un anillo de confianza entre los miembros de nuestra clase, para ello.** + * Tu clave pública debe estar en un servidor de claves + * Escribe tu fingerprint en un papel y dárselo a tu compañero, para que puede descargarse tu clave pública. + * Te debes bajar al menos tres claves públicas de compañeros. Firma estas claves. + * Tu te debes asegurar que tu clave pública es firmada por al menos tres compañeros de la clase. + * Una vez que firmes una clave se la tendrás que devolver a su dueño, para que otra persona se la firme. + * Cuando tengas las tres firmas sube la clave al servidor de claves y rellena tus datos en la tabla Claves públicas PGP 2020-2021 + * Asegurate que te vuelves a bajar las claves públicas de tus compañeros que tengan las tres firmas. + +4. **Muestra las firmas que tiene tu clave pública.** + +Listamos las firmas con el comando `gpg --list-sigs` + +![Firmas](https://i.imgur.com/LnWbJLH.png) + +5. **Comprueba que ya puedes verificar sin “problemas” una firma recibida por una persona en la que confías.** + +Como se puede ver en la imagen anterior, nuestra firma está verificada por **Antonio**, y viceversa. Por lo que podemos verificar sin problemas un documento firmado por **Antonio**. + +![Verificación](https://i.imgur.com/LnLceFT.png) + +6. **Comprueba que puedes verificar con confianza una firma de una persona en las que no confías, pero sin embargo si confía otra persona en la que tu tienes confianza total.** + +Ahora, vamos a utilizar un fichero firmado por **María Jesús**, en la que no confiamos directamente, pero en la que sí tiene confianza plena **Antonio**: + +![Verificación 2](https://i.imgur.com/dzHItTJ.png) + +## Tarea 3: Integridad de ficheros + +Para validar el contenido de la imagen CD, solo asegúrese de usar la herramienta apropiada para sumas de verificación. Para cada versión publicada existen archivos de suma de comprobación con algoritmos fuertes (SHA256 y SHA512); debería usar las herramientas sha256sum o sha512sum para trabajar con ellos. + +1. **Verifica que el contenido del hash que has utilizado no ha sido manipulado, usando la firma digital que encontrarás en el repositorio. Puedes encontrar una guía para realizarlo en este artículo: How to verify an authenticity of downloaded Debian ISO images** + +```bash +wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-11.6.0-amd64-netinst.iso +wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/SHA256SUMS +sha256sum -c SHA256SUMS 2> /dev/null | grep netinst +``` + +![Verificación de hash](https://i.imgur.com/aAHo0GB.png) + +## Tarea 4: Integridad y autenticidad + +Busca información sobre **apt secure** y responde las siguientes preguntas: + +1. **¿Qué software utiliza apt secure para realizar la criptografía asimétrica?** + +Utiliza **GnuPG** para realizar la criptografía asimétrica. + +2. **¿Para que sirve el comando apt-key? ¿Qué muestra el comando apt-key list?** + +El comando `apt-key` sirve para administrar las claves de los repositorios de paquetes. El comando `apt-key list` muestra las claves de los repositorios de paquetes. + +3. **En que fichero se guarda el anillo de claves que guarda la herramienta apt-key?** + +El anillo de claves se guarda en el fichero `/etc/apt/trusted.gpg`. + +4. **¿Qué contiene el archivo Release de un repositorio de paquetes?. ¿Y el archivo Release.gpg?. Puedes ver estos archivos en el repositorio http://ftp.debian.org/debian/dists/Debian10.1/. Estos archivos se descargan cuando hacemos un apt update.** + +El archivo `Release` contiene la lista de paquetes que contiene el repositorio de paquetes. El archivo `Release.gpg` contiene la firma digital del archivo `Release`. + +5. **Explica el proceso por el cual el sistema nos asegura que los ficheros que estamos descargando son legítimos.** + +El sistema nos asegura que los ficheros que estamos descargando son legítimos mediante la verificación de la firma digital del fichero `Release` que se encuentra en el repositorio de paquetes. + +6. **añade de forma correcta el repositorio de virtualbox añadiendo la clave pública de virtualbox como se indica en la documentación.** + +Se hace con los siguientes comandos: + +```bash +echo "deb https://download.virtualbox.org/virtualbox/debian buster contrib" >> /etc/apt/sources.list +wget -q https://www.virtualbox.org/download/oracle\_vbox\_2016.asc -O- | apt-key add - +wget -q https://www.virtualbox.org/download/oracle\_vbox.asc -O- | apt-key add - +``` + +Tras esto, se puede instalar virtualbox con el comando `apt install virtualbox`. + +## Tarea 5: Autentificación: ejemplo SSH + +1. **Explica los pasos que se producen entre el cliente y el servidor para que el protocolo cifre la información que se transmite? ¿Para qué se utiliza la criptografía simétrica? ¿Y la asimétrica?** + +Los pasos que se producen entre el cliente y el servidor para que el protocolo cifre la información que se transmite son los siguientes: + +* Se lleva a cabo un 'handshake' (apretón de manos) encriptado para que el cliente pueda verificar que se está comunicando con el servidor correcto +* La capa de transporte de la conexión entre el cliente y la máquina remota es encriptada mediante un código simétrico +* El cliente se autentica ante el servidor. +* El cliente remoto interactua con la máquina remota sobre la conexión encriptada. + +La criptografía simétrica se utiliza para encriptar la información que se transmite entre el cliente y el servidor. La criptografía asimétrica se utiliza para autentificar al cliente y al servidor. + + +2. **Explica los dos métodos principales de autentificación: por contraseña y utilizando un par de claves públicas y privadas.** + +Los dos métodos principales de autentificación son: + +* Por contraseña: el cliente envía la contraseña al servidor para que este pueda autentificar al cliente. +* Por par de claves públicas y privadas: el cliente envía su clave pública al servidor para que este pueda autentificar al cliente. El cliente envía su clave privada al servidor para que este pueda autentificar al cliente. + +3. **En el cliente para que sirve el contenido que se guarda en el fichero ~/.ssh/know_hosts?** + +El contenido que se guarda en el fichero ~/.ssh/know_hosts sirve para que el cliente pueda autentificar al servidor. + +4. **¿Qué significa este mensaje que aparece la primera vez que nos conectamos a un servidor?** +```bash + $ ssh debian@172.22.200.74 + The authenticity of host '172.22.200.74 (172.22.200.74)' can't be established. + ECDSA key fingerprint is SHA256:7ZoNZPCbQTnDso1meVSNoKszn38ZwUI4i6saebbfL4M. + Are you sure you want to continue connecting (yes/no)? +``` + +Implica que la conexión es nueva y que el cliente no tiene guardada la clave pública del servidor. Por lo tanto, el cliente no puede autentificar al servidor. El cliente pregunta al usuario si quiere continuar con la conexión. + +5. **En ocasiones cuando estamos trabajando en el cloud, y reutilizamos una ip flotante nos aparece este mensaje:** +```bash + $ ssh debian@172.22.200.74 + @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ + @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! + Someone could be eavesdropping on you right now (man-in-the-middle attack)! + It is also possible that a host key has just been changed. + The fingerprint for the ECDSA key sent by the remote host is + SHA256:W05RrybmcnJxD3fbwJOgSNNWATkVftsQl7EzfeKJgNc. + Please contact your system administrator. + Add correct host key in /home/jose/.ssh/known_hosts to get rid of this message. + Offending ECDSA key in /home/jose/.ssh/known_hosts:103 + remove with: + ssh-keygen -f "/home/jose/.ssh/known_hosts" -R "172.22.200.74" + ECDSA host key for 172.22.200.74 has changed and you have requested strict checking. +``` + +Significa que la clave pública que teníamos asociada a esa dirección IP ha cambiado. Por lo tanto, el cliente no puede autentificar al servidor. Por lo que podría implicar que se está suplantando su identidad. Si aún así queremos continuar, hay que ejecutar el comando `ssh-keygen -f "/home/jose/.ssh/known_hosts" -R "172.22.200.74"` + +6. **¿Qué guardamos y para qué sirve el fichero en el servidor ~/.ssh/authorized_keys?** + +En ese fichero se guardan las claves públicas de los clientes que pueden acceder al servidor. Sirve para que el servidor pueda autentificar a los clientes. \ No newline at end of file diff --git a/src/content/posts/2023-02-07_servidor_correo/featured.png b/src/content/posts/2023-02-07_servidor_correo/featured.png new file mode 100644 index 0000000..8a41259 Binary files /dev/null and b/src/content/posts/2023-02-07_servidor_correo/featured.png differ diff --git a/src/content/posts/2023-02-07_servidor_correo/index.md b/src/content/posts/2023-02-07_servidor_correo/index.md new file mode 100644 index 0000000..c33b427 --- /dev/null +++ b/src/content/posts/2023-02-07_servidor_correo/index.md @@ -0,0 +1,493 @@ +--- +title: "Práctica: Servidor de correos" +published: 2023-02-07 +image: "./featured.png" +tags: ["correo", "autoalojado","vps"] +category: Documentación +draft: false +--- + +## Gestión de correo desde el servidor + +### Tarea 1 + + +Documenta una prueba de funcionamiento, donde envíes desde tu servidor local al exterior. Muestra el log donde se vea el envío. Muestra el correo que has recibido. Muestra el registro SPF. + + +Creo las siguientes entradas en el DNS de mi dominio: + +![MX](https://i.imgur.com/izykpPC.png) + +Donde hay un registro MX que apunta a mail.admichin.es, que a su vez es un registro A que apunta a la IP de mi servidor. Además, hay un registro SPF que apunta a la ip de la máquina. + +Además, configuro resolución inversa en la configuración de la VPS: + +![Reverse](https://i.imgur.com/Q8x5DC1.png) + +Ahora, en la VPS instalo los siguientes paquetes: + +```bash +apt update +apt install postfix bsd-mailx -y +``` + +Durante la configuración, selecciono **Internet Site** y **admichin.es**. + +Envío un correo a mi cuenta personal: + +```bash +mail robertorodriguezmarquez98@gmail.com +Subject: Prueba de funcionamiento +Hola buenos días +Cc: +``` + +Vemos el log de postfix: + +```bash +tail /var/log/mail.log +``` + +![Log](https://i.imgur.com/lii209w.png) + +Y el correo recibido: + +![Correo](https://i.imgur.com/FWNO7aB.png) + +### Tarea 2 + + +Documenta una prueba de funcionamiento, donde envíes un correo desde el exterior (gmail, hotmail,…) a tu servidor local. Muestra el log donde se vea el envío. Muestra cómo has leído el correo. Muestra el registro MX de tu dominio. + + +Ahora envío un correo desde mi cuenta personal a mi servidor: + +![Correo](https://i.imgur.com/FWNO7aB.png) + +Y compruebo que el correo ha llegado a mi servidor: + +![Correo](https://i.imgur.com/JWSTUmj.png) +![Correo](https://i.imgur.com/D0xKQDi.png) + +Y el log de postfix: + +![Log](https://i.imgur.com/pAWEPrP.png) + +## Uso de alias y redirecciones + +### Tarea 3 + + +**Usos de alias y redirecciones**. Vamos a comprobar como los procesos del servidor pueden mandar correos para informar sobre su estado. Por ejemplo cada vez que se ejecuta una tarea cron podemos enviar un correo informando del resultado. Normalmente estos correos se mandan al usuario `root` del servidor, para ello: + +```bash + crontab -e +``` + +E indico donde se envía el correo: + +```bash +MAILTO=root +``` + +Puedes poner alguna tarea en el cron para ver como se mandan correo. + +Posteriormente usando alias y redirecciones podemos hacer llegar esos correos a nuestro correo personal. + +Configura el cron para enviar correo al usuario root. Comprueba que están llegando esos correos al root. Crea un nuevo alias para que se manden a un usuario sin privilegios. Comprueban que llegan a ese usuario. Por último crea una redirección para enviar esos correo a tu correo personal (gmail,hotmail,…). + + +Voy a crear un script que muestre la fecha y el espacio en el disco. Lo guardo en `/root/script-espacio.sh`: + +```bash +#!/bin/bash + +echo "##################################" +echo "Fecha y hora: $(date)" +echo "##################################" +echo "Espacio en el disco:" +df -h +``` + +Ahora creamos la tarea de cron para que se ejecute cada 5 minutos: + +```bash +crontab -e +``` + +Y añadimos las siguientes líneas: + +```bash +MAILTO = root + +*/5 * * * * /root/script-espacio.sh +``` + +Cuando pasan 5 minutos, recibimos el correo: + +![Correo](https://i.imgur.com/XVtl86N.png) + +Ahora voy a crear un alias para que se envíen los correos a un usuario sin privilegios (en este caso, calcetines), editando el fichero `/etc/aliases`: + +```bash +root: calcetines +``` + +Y ejecuto el comando `newaliases` para que se actualicen los alias. + +Ahora, cuando pasen 5 minutos, recibimos el correo en el usuario sin privilegios: + +![Correo](https://i.imgur.com/aogu98o.png) + +Ahora voy a crear una redirección para que se envíen los correos a mi correo personal, editando el fichero `/home/calcetines/.forward`: + +```bash +robertorodriguezmarquez98@gmail.com +``` + +Y ahora, cuando pasen 5 minutos, recibimos el correo en mi correo personal: + +![Correo](https://i.imgur.com/UdaG5gg.png) + +## Para asegurar el envío + +### Tarea 4 + + +Configura de manera adecuada DKIM es tu sistema de correos. Comprueba el registro DKIM en la página https://mxtoolbox.com/dkim.aspx. Configura postfix para que firme los correos que envía. Manda un correo y comprueba la verificación de las firmas en ellos. +} + +Voy a instalar el paquete `opendkim`: + +```bash +apt install opendkim opendkim-tools -y +``` + +En el fichero `/etc/opendkim.conf`, edito las siguientes líneas: + +```bash +Domain admichin.es +Selector default +KeyFile /etc/opendkim/keys/admichin.es/default.private +#Socket local:/run/opendkim/opendkim.sock +Socket local:/var/spool/postfix/opendkim/opendkim.sock +PidFile /run/opendkim/opendkim.pid +TrustAnchorFile /usr/share/dns/root.key +``` + +Ahora añado el socket en el fichero `/etc/default/opendkim`. + +Tras eso, en el fichero `/etc/postfix/main.cf`, añado las siguientes líneas: + +```bash +milter_default_action = accept +milter_protocol = 6 +smtpd_milters = local:opendkim/opendkim.sock +non_smtpd_milters = $smtpd_milters +``` + +Ahora genero los ficheros de claves: + +```bash +mkdir /etc/opendkim/keys/admichin.es +cd /etc/opendkim/keys/admichin.es +opendkim-genkey -b 2048 -d admichin.es -D /etc/opendkim/keys/admichin.es -s default -v +``` + +Ahora, utilizando el contenido de `/etc/opendkim/keys/admichin.es/default.txt`, añado un registro TXT en el dominio `admichin.es`: + +![Registro](https://i.imgur.com/rWLIaWm.png) + +Reinicio los servicios: + +```bash +systemctl restart opendkim postfix +``` + +Ahora, cuando envío un correo, se añade la firma DKIM: + +![Correo](https://i.imgur.com/SjhdRvn.png) + +Finalmente, compruebo la verificación de la firma en la página **mxtoolbox**: + +![Verificación](https://i.imgur.com/leht5mi.png) + +## Para luchar contra el spam + +## Gestión de correos desde un cliente + +### Tarea 8 + + +Configura el buzón de los usuarios de tipo Maildir. Envía un correo a tu usuario y comprueba que el correo se ha guardado en el buzón Maildir del usuario del sistema correspondiente. Recuerda que ese tipo de buzón no se puede leer con la utilidad mail. + + +Voy a cambiar el tipo de buzón de los usuarios, editando el fichero `/etc/postfix/main.cf`: + +```bash +home_mailbox = Maildir/ +``` + +Ahora instalamos el cliente mutt para poder leer los correos: + +```bash +apt install mutt -y +systemctl restart postfix +``` + +Tengo que hacer la siguiente configuración en cada usuario: + +```bash +nano ~/.muttrc +``` + +```bash +set mbox_type=Maildir +set mbox="~/Maildir" +set folder="~/Maildir" +set spoolfile="~/Maildir" +set record="+.Sent" +set postponed="+.Drafts" +set mask="!^\\.[^.]" +``` + +Podemos ver el contenido del directorio `Maildir`: + +![Directorio](https://i.imgur.com/xJmTIsK.png) + +Ahora, cuando envío un correo, se guarda en el buzón Maildir del usuario del sistema correspondiente, y lo podemos leer con mutt: + +![Correo](https://i.imgur.com/mCg6V9I.png) + +### Tarea 9 + +Instala configura dovecot para ofrecer el protocolo IMAP. Configura dovecot de manera adecuada para ofrecer autentificación y cifrado. + + +Instalo dovecot: + +```bash +apt install dovecot-imapd -y +``` + +Modifico el fichero `/etc/dovecot/conf.d/10-ssl.conf` para añadir el certificado que generamos con certbot al crear la página, modificando las siguientes líneas: + +```bash +ssl_cert = 'admichin.es' +); +?> +``` + +Ahora creo el contenedor de docker: + +```bash +docker run -d --name docker-cuboredondo \ +-v /root/cuboredondo/:/var/roundcube/config/ \ +-e ROUNDCUBEMAIL_DEFAULT_HOST=ssl://mail.admichin.es \ +-e ROUNDCUBEMAIL_SMTP_SERVER=ssl://mail.admichin.es \ +-e ROUNDCUBEMAIL_SMTP_PORT=465 \ +-e ROUNDCUBEMAIL_DEFAULT_PORT=993 \ +-p 8001:80 \ +roundcube/roundcubemail +``` + +o en una sola linea: + +```bash +docker run -d --name docker-cuboredondo -v /root/cuboredondo/:/var/roundcube/config/ -e ROUNDCUBEMAIL_DEFAULT_HOST=ssl://mail.admichin.es -e ROUNDCUBEMAIL_SMTP_SERVER=ssl://mail.admichin.es -e ROUNDCUBEMAIL_SMTP_PORT=465 -e ROUNDCUBEMAIL_DEFAULT_PORT=993 -p 8001:80 roundcube/roundcubemail +``` + +Ahora creo el virtualhost para el dominio en `/etc/nginx/sites-available/webmail.admichin.es`: + +```bash +server { + listen 80; + listen [::]:80; + + server_name webmail.admichin.es; + + return 301 https://$host$request_uri; +} + +server { + listen 443 ssl http2; + listen [::]:443 ssl http2; + + ssl on; + ssl_certificate /etc/letsencrypt/live/admichin.es-0001/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/admichin.es-0001/privkey.pem; + + index index.html index.php index.htm index.nginx-debian.html; + + server_name webmail.admichin.es; + + location / { + proxy_pass http://localhost:8001; + include proxy_params; + } +} +``` + +Ahora activo el sitio y reinicio nginx: + +```bash +ln -s /etc/nginx/sites-available/webmail.admichin.es /etc/nginx/sites-enabled/ +systemctl restart nginx +``` + +Ahora podemos acceder a la instancia de roundcube desde el navegador: + +![Roundcube](https://i.imgur.com/CEWcKuI.png) + +Como se puede ver acabo de recibir el correo del ejercicio de la tarea del cron. Ahora un correo enviado desde fuera: + +![Correo enviado desde fuera](https://i.imgur.com/bqHtnNH.png) + +### Tarea 11 + + +Configura de manera adecuada postfix para que podamos mandar un correo desde un cliente remoto. La conexión entre cliente y servidor debe estar autentificada con SASL usando dovecor y además debe estar cifrada. Para cifrar esta comunicación puedes usar dos opciones: + +* **ESMTP + STARTTLS**: Usando el puerto 567/tcp enviamos de forma segura el correo al servidor. +* **SMTPS**: Utiliza un puerto no estándar (465) para SMTPS (Simple Mail Transfer Protocol Secure). No es una extensión de smtp. Es muy parecido a HTTPS. + +Elige una de las opciones anterior para realizar el cifrado. Y muestra la configuración de un cliente de correo (evolution, thunderbird, …) y muestra como puedes enviar los correos. + + +Usaré los mismos certificados que he generado antes para cifrar los emails que envío y recibo. Para ello, modifico la configuración de postfix en `/etc/postfix/main.cf`: + +```bash +smtpd_tls_cert_file = /etc/letsencrypt/live/admichin.es-0001/fullchain.pem +smtpd_tls_key_file = /etc/letsencrypt/live/admichin.es-0001/privkey.pem + +smtpd_sasl_auth_enable = yes +smtpd_sasl_type = dovecot +smtpd_sasl_path = private/auth +smtpd_sasl_authenticated_header = yes +broken_sasl_auth_clients = yes +``` + +Ahora edito `/etc/postfix/master.cf`: + +```bash +submission inet n - y - - smtpd + -o content_filter=spamassassin + -o syslog_name=postfix/submission + -o smtpd_tls_security_level=encrypt + -o smtpd_sasl_auth_enable=yes + -o smtpd_tls_auth_only=yes + -o smtpd_reject_unlisted_recipient=no + -o smtpd_client_restrictions=$mua_client_restrictions + -o smtpd_helo_restrictions=$mua_helo_restrictions + -o smtpd_sender_restrictions=$mua_sender_restrictions + -o smtpd_recipient_restrictions= + -o smtpd_relay_restrictions=permit_sasl_authenticated,reject + -o milter_macro_daemon_name=ORIGINATING + +smtps inet n - y - - smtpd + -o syslog_name=postfix/smtps + -o smtpd_tls_wrappermode=yes + -o smtpd_sasl_auth_enable=yes + -o smtpd_reject_unlisted_recipient=no + -o smtpd_client_restrictions=$mua_client_restrictions + -o smtpd_helo_restrictions=$mua_helo_restrictions + -o smtpd_sender_restrictions=$mua_sender_restrictions + -o smtpd_recipient_restrictions= + -o smtpd_relay_restrictions=permit_sasl_authenticated,reject + -o milter_macro_daemon_name=ORIGINATING +``` + +Le indico a dovecot como debe realizar la auntentificación en el fichero `/etc/dovecot/conf.d/10-master.conf`: + +```bash +service auth { + ... + # Postfix smtp-auth + unix_listener /var/spool/postfix/private/auth { + mode = 0666 + } + ... +} +``` + +Ahora hay que abrir los puertos 465 y 993 en la vps. Tras eso, reiniciamos el servicio: + +```bash +systemctl restart postfix dovecot +``` + +Ahora configuramos el cliente de correo **evolution**: + +![Configuración de evolution](https://i.imgur.com/pdVsGVt.png) +![Configuración de evolution](https://i.imgur.com/Asvo17x.png) + +Tras configurarlo probamos la recepción de un correo: + +![Correo recibido](https://i.imgur.com/4g08tu3.png) + +Y el envío: + +![Correo enviado](https://i.imgur.com/ZBCNpp7.png) +![Correo enviado](https://i.imgur.com/jbV8Ojo.png) + + +### Tarea 12 + + +Configura el cliente webmail para el envío de correo. Realiza una prueba de envío con el webmail. + + +Esta tarea consiste en poder enviar correos desde el cliente roundcube, y se han realizado las configuraciones necesarias en la tarea 10. Ahora solo queda probarlo: + +![Correo enviado desde roundcube](https://i.imgur.com/CGQ8zuf.png) +![Correo enviado desde roundcube](https://i.imgur.com/miQ63i6.png) + +## Comprobación final + +### Tarea 13 + + + Prueba de envío de correo. En esta [página](https://www.mail-tester.com/) tenemos una herramienta completa y fácil de usar a la que podemos enviar un correo para que verifique y puntúe el correo que enviamos. Captura la pantalla y muestra la puntuación que has sacado. + + +Enviamos un correo para comprobar la puntuación: + +![Correo enviado para comprobar la puntuación](https://i.imgur.com/pt2pp6m.png) +![Correo enviado para comprobar la puntuación](https://i.imgur.com/X5klV3K.png) \ No newline at end of file diff --git a/src/content/posts/2023-02-08_informatica_forense/featured.png b/src/content/posts/2023-02-08_informatica_forense/featured.png new file mode 100644 index 0000000..7e856af Binary files /dev/null and b/src/content/posts/2023-02-08_informatica_forense/featured.png differ diff --git a/src/content/posts/2023-02-08_informatica_forense/index.md b/src/content/posts/2023-02-08_informatica_forense/index.md new file mode 100644 index 0000000..298b832 --- /dev/null +++ b/src/content/posts/2023-02-08_informatica_forense/index.md @@ -0,0 +1,312 @@ +--- +title: Informática forense +published: 2023-02-08 +image: "./featured.png" +tags: ["forense"] +category: Documentación +draft: false +--- + +## Enunciado + +La informática forense es el conjunto de técnicas que nos permite obtener la máxima información posible tras un incidente o delito informático. + +En esta práctica, realizarás la fase de toma de evidencias y análisis de las mismas sobre una máquina Linux y otra Windows. Supondremos que pillamos al delincuente in fraganti y las máquinas se encontraban encendidas. Opcionalmente, podéis realizar el análisis de un dispositivo Android. + +Sobre cada una de las máquinas debes realizar un volcado de memoria y otro de disco duro, tomando las medidas necesarias para certificar posteriormente la cadena de custodia. + + + +## Apartado A. Máquina Windows + +### Volcado de memoria + +Para realizar el volcado de memoria he usado la herramienta **FTK Imager**, que permite realizar volcados de disco y memoria. Para ello hago lo siguiente. Utilizo las siguientes opciones: + +![ftk4](https://i.imgur.com/tD6w8MG.png) + +Ahora, para analizar los datos, utilizo **Volatility** en mi máquina debian; para ello, especifico el fichero que he creado con FTK Imager al utilizar los comandos. + +#### 1. Procesos en ejecución + +Uso el comando `pslist` para ver los procesos en ejecución: + +```bash +python vol.py -f "/media/roberto/usb/memdump.mem" windows.pslist.PsList +``` + +![vol1](https://i.imgur.com/tMhTGFN.png) + +#### 2. Servicios en ejecución + +Uso el comando `getservicesids` para ver los servicios en ejecución: + +```bash +python vol.py -f "/media/roberto/usb/memdump.mem" windows.getservicesids.GetServiceSIDs +``` + +![vol2](https://i.imgur.com/BZjmc2d.png) + +#### 3. Puertos abiertos + +Uso el comando `netstat` para ver los puertos abiertos: + +```bash +python vol.py -f "/media/roberto/usb/memdump.mem" windows.netstat.NetStat +``` + +![vol3](https://i.imgur.com/DnH0We9.png) + +#### 4. Conexiones establecidas por la máquina + +Uso el comando `netscan` para ver las conexiones establecidas por la máquina: + +```bash +python vol.py -f "/media/roberto/usb/memdump.mem" windows.netscan.NetScan +``` + +![vol4](https://i.imgur.com/7ZrLSg4.png) + +#### 5. Sesiones de usuario establecidas remotamente + +Uso el comando `sessions` para ver las sesiones de usuario establecidas remotamente: + +```bash +python vol.py -f "/media/roberto/usb/memdump.mem" windows.sessions.Sessions +``` + +![vol5](https://i.imgur.com/YcTjn7U.png) + +#### 6. Ficheros transferidos recientemente por NetBios + +#### 7. Contenido de la caché DNS + +#### 8. Variables de entorno + +Para ver las variables de entorno, uso el comando `envars`: + +```bash +python vol.py -f "/media/roberto/usb/memdump.mem" windows.envars.Envars +``` + +![vol6](https://i.imgur.com/IUSyeJ2.png) + +### Volcado del registro + +Para realizar el volcado de registro he usado también la herramienta **FTK Imager**. Utilizo la opción `Obtain system files`: + +![ftk5](https://i.imgur.com/JUcvnmy.png) + +Una vez finalizado el volcado, utilizo el programa **Registry Viewer** para analizar los datos obtenidos. + +#### 10. Redes wifi utilizadas recientemente + +Para ver las redes wifi usadas recientemente, abro el archivo `software`, y ahí sigo la siguiente ruta: `Microsoft/Windows NT/CurrentVersion/NetworkList/Profiles`: + +![reg1](https://i.imgur.com/RFzUv61.png) + +#### 11. Configuración del firewall de nodo + +Para ver la configuración del firewall de nodo, abro el archivo `system`, y ahí sigo la siguiente ruta: `ControlSet001/Services/SharedAccess/Parameters/FirewallPolicy/FirewallRules`: + +![reg2](https://i.imgur.com/4b7ZsO1.png) + +#### 12. Programas que se ejecutan en el Inicio + +Para ver los programas que se ejecutan en el inicio, abro el archivo `software`, y ahí sigo la siguiente ruta: `Microsoft/Windows/CurrentVersion/Run`: + +![reg3](https://i.imgur.com/6MsrP73.png) + +#### 13. Asociación de extensiones de ficheros y aplicaciones + +No he podido encontrar en la aplicación **Registry Viewer** los registros, pero usando regedit en la máquina, se encuentran en la siguiente localización: `Computer\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts`: + +![reg4](https://i.imgur.com/Ig5FCUk.png) + + +### Volcado de disco + +Para realizar el volcado de disco he usado la herramienta FTK Imager también: + +![ftk1](https://i.imgur.com/tUwr02N.png) + +Selecciono **RAW** como tipo de imagen: + +![ftk2](https://i.imgur.com/GWoxYEU.png) + +Y, como indica la ayuda, en Fragment size pongo 0, además de indicar la ruta y el nombre del fichero: + +![ftk3](https://i.imgur.com/cTgXwqp.png) + +El resto de los pasos del proceso los dejo con los valores por defecto. + +Ahora, para analizar los datos, utilizo Autopsy; para ello, abro el fichero que he creado con FTK Imager, indicamos el direcorio del fichero , y en tipo, selecciono **Disk image or VM file**: + +![autopsy1](https://i.imgur.com/JHCRjQ2.png) + +Tras finalizar la configuración, empezará a analizar el volcado de disco. Este proceso tarda bastante tiempo en completarse. Una vez acabado podemos analizar los datos obtenidos. + +#### 9. Dispositivos USB conectados + +Para ver los dispositivos USB conectados, utilizo la opción `USB Device Attached`: + +![autopsy8](https://i.imgur.com/1XfoSfH.png) + +#### 14. Aplicaciones usadas recientemente + +Para ver las aplicaciones usadas recientemente, utilizo la opción `User Activity` del disco duro: + +![autopsy9](https://i.imgur.com/vthHo40.png) + +#### 15. Ficheros abiertos recientemente + +![autopsy9](https://i.imgur.com/ZQtfblE.png) + +#### 16. Software Instalado + +Para ver el software instalado, utilizo la opción `Installed Programs`: + +![autopsy10](https://i.imgur.com/xsFb4yR.png) + +#### 18. Cuentas de Usuario + +Para ver las cuentas de usuario, utilizo la opción `OS Accounts`: + +![autopsy11](https://i.imgur.com/A1Ha5e6.png) + +#### 19. Historial de navegación y descargas, cookies + +Para ver el historial de navegación, utilizo la opción `Web History`: + +![autopsy12](https://i.imgur.com/1EN0RI4.png) + +Para ver las cookies utilizo la opción `Web Cookies`: + +![autopsy13](https://i.imgur.com/rDaxg3p.png) + +Para ver el historial de descargas, utilizo la opción `Web Downloads`: + +![autopsy14](https://i.imgur.com/A6x55kE.png) + +#### 21. Archivos con extensión cambiada + +Los archivos con extensión cambiada aparecen en la sección `Analysis Results/Extension Mismatch Detected`: + +![autopsy2](https://i.imgur.com/hmLGaGi.png) + +#### 22. Archivos eliminados + +Los archivos eliminados aparecen en la sección `Recycle Bin`: + +![autopsy3](https://i.imgur.com/XmQIyKC.png) + +#### 23. Archivos Ocultos + +En la opción para explorar el sistema de archivos, se pueden distinguir los archivos ocultos porque en los metadatos, aparece la etiqueta: `Hidden`: + +![autopsy4](https://i.imgur.com/OcIKUYP.png) + +#### 24. Archivos que contienen una cadena determinada + +Para buscar archivos que contengan una cadena determinada, utilizo la opción `Keyword Search`: + +![autopsy5](https://i.imgur.com/B9ezFRy.png) + +#### 25. Búsqueda de imágenes por ubicación + +Para buscar imágenes por ubicación, utilizo la opción `Geolocation`: + +![autopsy6](https://i.imgur.com/G9nTp6h.png) + +#### 26. Búsqueda de archivos por autor + +Para buscar archivos por autor, utilizo la opción `Metadata`: + +![autopsy7](https://i.imgur.com/XcQPTmy.png) + +## Apartado B) Máquina Linux + +Intenta realizar las mismas operaciones en una máquina Linux para aquellos apartados que tengan sentido y no se realicen de manera idéntica a Windows. + +### Volcado de memoria + +He realizado el volcado de memoria con **Lime**, que es una herramienta que se utiliza para realizar volcados de memoria en Linux. Para ello, he usado el comando de la siguiente manera (he instalado Lime meadiante su repositorio en github): + +```bash +insmod lime-4.19.0-23-amd64.ko "path=/mnt/linux/memorialinux.mem format=lime" +``` + +Es importante que para realizar el volcado, hay que iniciar el sistema de forma insegura, ya que si no, no permite utilizar el comando. + +No he sido capaz de realizar el análisis utilizando volatility, ya que es necesario instalar plugins para interpretar el volcado de memoria, y no los reconoce, por lo que voy a usar los comandos en lugar de trabajar sobre el volcado. + +#### 1. Procesos en ejecución + +Para ver los procesos en ejecución, utilizo el comando `ps aux`: + +![ps1](https://i.imgur.com/I6H5Egn.png) + +#### 2. Servicios en ejecución + +Para ver los servicios en ejecución, utilizo el comando `systemctl`: + +```bash +systemctl list-units --type=service --state=running +``` + +![systemctl1](https://i.imgur.com/lh2yFCl.png) + +#### 3. Puertos abiertos + +Para ver los puertos abiertos, utilizo el comando `netstat`, que se encuentra en el paquete `net-tools`: + +```bash +apt install net-tools +netstat -tulpn +``` + +![netstat1](https://i.imgur.com/QmwsCnY.png) + +#### 4. Conexiones establecidas por la máquina + +Las sesiones se pueden observar en el comando netstat utilizado anteriormente. + +#### 5. Sesiones de usuario establecidas remotamente + +Para ver las sesiones de usuario establecidas remotamente, utilizo el comando `who`: + +```bash +who -a +``` + +![who1](https://i.imgur.com/m6c6R6z.png) + +#### 7. Contenido de la caché DNS + +En debian, la caché dns está deshabilitada por defecto. Para habilitarla, voy a instalar el paquete **nscd** (demonio de caché para servicio de nombres), y leer el fichero que genera. El fichero tiene un formato binario, por lo que voy a usar el comando `strings` para ver su contenido: + +```bash +strings /var/cache/nscd/hosts +``` + +![nscd1](https://i.imgur.com/4rfJMeG.png) + +#### 8. Variables de entorno + +Para ver las variables de entorno, utilizo el comando `env`: + +![env1](https://i.imgur.com/O4fIJRT.png) + +### Volcado de disco + +El volcado de disco en linux lo he realizado con el comando dd, que se utiliza para copiar archivos y volúmenes. Para ello, he usado el comando de la siguiente manera: + +```bash +dd if=/dev/vda2 of=/mnt/linux/volcado_linux.001 bs=64K +``` + +![dd1](https://i.imgur.com/6P6cdSJ.png) + +Es imporate que, durante el análisis de la imagen en Autopsy, el tiempo es mucho mayor, y que es de hecho la última fase, cuando ya se encuentra al 100% la que toma más tiempo. + +Los apartados rellativos al análisis usando autopsy, o se realizan exactamente igual que en Windows, o no tienen sentido en Linux, por lo que no los están documentados aquí. \ No newline at end of file