Skip to content

About

Tutorial to install Debian virtual machine.

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Latest commit

 

History

49 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

Born2beroot-Tutorial 💻

Índice

  1. Descargar imagen de la maquina virtual 💿

  2. Instalación de la maquina 🛠

  3. Instalación Debian 🌀

  4. Configuración de la máquina virtual ⚙️

    4.1 Instalación de sudo y configuración de usuarios y grupos 👤

    4.2 Instalación y configuración de SSH 📶

    4.3 Instalación y configuración de UFW 🔥🧱

    4.4 Configurar contraseña fuerte para sudo 🔒

    4.5 Configuración de política de contraseñas fuerte 🔑

    4.6 Conectarse via SSH 🗣

  5. Script 🚨

    5.1 Resultado total del script 🆗

  6. Crontab ⏰

  7. Signature.txt 📝

  8. Hoja de corrección ✅

    8.1 Respuestas de la evaluación 💯

1- Descargar imagen de la maquina virtual 💿

Click aqui para redireccionarte a la URL donde puedes descargar la ISO de manera segura.

2- Instalacion de la maquina 🛠

Para realizar la instalación se requiere de un software de virtualización. En este tutorial haremos uso de VirtualBox. Si ya tienes VirtualBox instalado y dispones de la ISO Debian ya podemos empezar con el tutorial.

1 ◦ Debemos abrir VirtualBox y pinchar sobre Nueva

Captura de pantalla 2022-07-13 a las 18 02 05

2 ◦ Escogemos el nombre de nuestra máquina y la carpeta donde estará ubicada. Importante introducir la maquina dentro de la carpeta sgoinfre ya que si no la ubicamos ahí nos quedaremos sin espacio y fallará la instalación.

Captura de pantalla 2022-07-13 a las 18 06 31

3 ◦ Seleccionamos la cantidad de memoria RAM que reservaremos para la máquina.

Captura de pantalla 2022-07-13 a las 13 06 05

4 ◦ Seleccionamos la segunda opción para asi crear un disco duro virtual ahora.

Captura de pantalla 2022-07-13 a las 18 13 24

5 ◦ Escogemos la primera opción VDI ya que nos hemos descargado una imagen de disco.

Captura de pantalla 2022-07-13 a las 18 16 35

6 ◦ Seleccionamos la primera opción Reservado dinámicamente para que asi se vaya reservando memoria en la máquina real segun vayamos utilizandola en la virtual hasta llegado al límite máximo disponible en la virtual.

Captura de pantalla 2022-07-13 a las 18 19 33

7 ◦ Una vez hayamos establecido la cantidad recomendada 12 GB deberemos darle a Crear.

Captura de pantalla 2022-07-13 a las 18 25 20

8 ◦ Puede parecer que ya hemos terminado la instalación , pero todavía faltan un par de pasos más. Debemos darle a configuración

Captura de pantalla 2022-07-13 a las 18 30 46

9 ◦ Acto seguido pincharemos encima de Almacenamiento , volveremos a pinchar sobre el emoticono 💿 que se encuentra a la derecha y de nuevo pincharemos sobre Seleccionar un archivo de disco.

Captura de pantalla 2022-07-13 a las 18 33 28

10 ◦ Seleccionaremos la ISO que acabamos de descargar y le damos a Abrir y después le daremos a Aceptar.

Captura de pantalla 2022-07-13 a las 18 38 39

  1. ◦ Una vez completados todos los pasos anteriores ya podemos Iniciar nuestra máquina virtual.

Captura de pantalla 2022-07-13 a las 18 44 55

3- Instalación Debian 🌀

➤ Espera❗️ Tu vista es muy importante 👀❗️ Para poder hacer la ventana más grande debes hacer lo siguiente:

Captura de pantalla 2022-07-13 a las 18 51 41

Utiliza la tecla command para que la captura del ratón pase de la maquina real a la virtual y al reves.

Sigamos con la instalación 🛠

1 ◦ Escogeremos la version sin interfaz gráfica Install ya que el subject indica que no se utilice ninguna Cada vez que queramos confirmar algo presionaremos Enter y para movernos por las opciones utilizaremos las flechas.

Captura de pantalla 2022-07-13 a las 18 58 48

2 ◦ Escogeremos el idioma que usaremos para la instalación y el predeterminado que se le quedará al sistema English.

Captura de pantalla 2022-07-13 a las 19 00 41

3 ◦ Introducimos nuestro País, territorio o zona. En mi caso pondre Other.

Captura de pantalla 2022-07-13 a las 19 07 50

4 ◦ Como he seleccionado other debo indicar mi continente o region. En mi caso pongo Europe 🇪🇺.

Captura de pantalla 2022-07-13 a las 19 09 58

5 ◦ Seleccionamos el país. En mi caso Spain 🇪🇸.

Captura de pantalla 2022-07-13 a las 19 12 01

6 ◦ Seleccionamos United States.

Captura de pantalla 2022-07-13 a las 19 13 43

7 ◦ Importante seleccionar American English como configuración de teclado ya que si no tendremos las teclas mal enlazadas.

Captura de pantalla 2022-07-13 a las 19 02 21

8 ◦ En este paso debemos elegir el Host Name de la máquina, el cual debe ser tu login seguido de 42.

Captura de pantalla 2022-07-13 a las 19 17 23

9 ◦ Este apartado lo dejaremos vacío ya que el subject no mencionada nada de Domain name.

Captura de pantalla 2022-07-13 a las 19 20 29

10 ◦ Debemos introducir una contraseña para la cuenta de administración del sistema. Importante apuntarla o hacer una foto ya que le daremos uso. Si quieres ver la contraseña para asegurarte de que la has escrito correctamente debes tabular hasta llegar a la opción Show Password in Clear debes darle a la barra espaciadora y se mostrara la clave.

Captura de pantalla 2022-07-13 a las 19 21 29

11 ◦ Repetimos el proceso de nuevo para comprobar que no la hayamos escrito mal.

Captura de pantalla 2022-07-13 a las 19 24 53

12 ◦ Elegimos el nombre de nuestro nuevo usuario. Como indica el subject hay que crear un usuario adicional que no sea el root con nuestro login, por ese motivo llamaré gemartin a mi nuevo usuario.

Captura de pantalla 2022-07-13 a las 19 26 20

Volvemos a poner el nombre de usuario.

image

13 ◦ Ahora debemos introducir la contraseña de nuestro nuevo usuario. Como la anterior , repetiremos el proceso para comprobar que no la hayas escrito mal y tambien es importante que la guardes porque le daremos uso más adelante.

Captura de pantalla 2022-07-13 a las 19 30 08

14 ◦ Seleccionamos la hora de nuestra ubicación.

Captura de pantalla 2022-07-13 a las 19 31 41

15 ◦ Esocgeremos la tercera opción Guied - use entire disk and set up encrypted LVM ya que el subject nos dice que deben ser particiones cifradas. ⚠️ Si quieres hacer el bonus deberás darle a Manual y seguir otro tutorial ⚠️

Captura de pantalla 2022-07-13 a las 19 33 13

16 ◦ Seleccionamos el disco en el que queremos hacer el particionado (Solo debe haber un disco).

Captura de pantalla 2022-07-13 a las 19 40 03

17 ◦ Una vez hayamos escogido el disco deberemos hacer el particionado tal y como nos piden. Para realizarlo adecuadamente debemos seleccionar la tercera opción Separate /home, /var, and /tmp partitions.

Captura de pantalla 2022-07-13 a las 19 41 16

18 ◦ Esocgemos la opción Yes para que asi se escriban los cambios en el disco y podamos configurar el gestor de volumenes lógicos (LVM).

Captura de pantalla 2022-07-13 a las 19 44 30

19 ◦ Le damos a Cancel ya que el borrado de datos en el disco no es necesario.

Captura de pantalla 2022-07-13 a las 19 46 45

20 ◦ De nuevo deberemos poner una contraseña, esta vez será la frase de encriptación. Como te he comentado previamente deberás repetir el proceso y la debes anotar ya que será importante en un futuro.

Captura de pantalla 2022-07-13 a las 19 51 17

21 ◦ En este paso debemos introducir la cantidad de volumen que usaremos para la partición guiada. Debemos introducir max o el numero de tamaño maximo disponible en mi caso es 12.4 GB.

Captura de pantalla 2022-07-13 a las 19 55 02

22 ◦ Para finalizar la partición y escribir los cambios en el disco le daremos a la opción Finish partitioning and write changes to disk.

Captura de pantalla 2022-07-13 a las 19 59 15

23 ◦ Seleccionamos la opción Yes para continuar y confirmar que no queremos hacer más cambios en el disco.

Captura de pantalla 2022-07-13 a las 20 00 58

24 ◦ Seleccionamos la opción No ya que no necesitamos paquetes adicionales.

Captura de pantalla 2022-07-13 a las 20 05 42

25 ◦ Escogemos nuestro País.

Captura de pantalla 2022-07-13 a las 20 14 23

26 ◦ Escogemos deb.debian.org ya que tenindo en cuenta nuestra region es donde tendremos una mejor conexión.

Captura de pantalla 2022-07-13 a las 20 15 00

27 ◦ Esta opción la dejaremos vacía le daremos directamente a Continue.

Captura de pantalla 2022-07-13 a las 20 17 24

28 ◦ Seleccionamos la opcion No ya que no queremos que los developers vean nuestras estadísticas aunque sean anónimas.

Captura de pantalla 2022-07-13 a las 20 21 54

29 ◦ Quitaremos todas las opciones de software (con la barra espaciadora) y le daremos a Continue.

Captura de pantalla 2022-07-13 a las 20 24 17

30 ◦ Seleccionaremos Yes para instalar GRUB boot en el disco duro.

Captura de pantalla 2022-07-13 a las 20 26 24

31 ◦ Escogeremos el dispositivo para la instalación del cargador de arranque /dev/sda (ata_VBOX_HARDDISK).

Captura de pantalla 2022-07-13 a las 20 35 46

32 ◦ Le daremos a Continue para finalizar la instalación.

Captura de pantalla 2022-07-13 a las 20 39 30

4 Configuración de la máquina virtual ⚙️

➤ Lo primero que debemos hacer es seleccionar Debian GNU/Linux.

➤ Debemos introducir la contraseña de encriptación que utilizamos previamente. En mi caso es Hello42bcn.

Captura de pantalla 2022-07-13 a las 20 47 26

➤ Debemos introducir el usuario y contraseña que hemos creado. En mi caso el usuario es gemartin y la contraseña Hola42spain.

Captura de pantalla 2022-07-13 a las 20 48 38

Ya tenemos todo listo para empezar a configurar nuestra máquina virtual Debian❗️

4.1 - Instalación de sudo y configuración de usuarios y grupos 👤

1 ◦ Para la instalación de sudo primero debemos estar en el usuario root, para ello pondremos Su en el terminal y introduciremos la contraseña, en mi caso es Hola42bcn. Una vez hemos accedido al usuario root debemos poner el comando apt install sudo para así instalar los paquetes necesarios.

Captura de pantalla 2022-07-14 a las 1 36 46

2 ◦ Debemos reiniciar la máquina para que se apliquen los cambios. Para ello haremos uso del comando sudo reboot y esperaremos a que se reinicie.

Captura de pantalla 2022-07-14 a las 2 02 24

3 ◦ Una vez reiniciado debemos volver a introducir las contraseñas de cifrado y del usuario. Para verificar que hayamos instalado sudo correctamente entraremos de nuevo en el usuario root y pondremos el comando sudo -V, este comando además de mostrarnos la versión de sudo también mostrará los argumentos pasados para configurar cuando se creó sudo y los plugins que pueden mostrar información más detallada. (Opcional) ➤ Puesto que el output del comando es muy largo si deseamos verlo completamente debemos redireccionar la salida del mismo a un fichero sudo -V > file.txt y luego editar el fichero nano file.txt. O poner | more despues del comando.

Captura de pantalla 2022-07-14 a las 2 09 59

4 ◦ Siguiendo en el usuario root crearemos un usuario con nuestro login con el comando sudo adduser login como nostros ya hemos creado el usuario en la instalación nos debe aparecer que el usuario ya existe.

Captura de pantalla 2022-07-14 a las 2 15 11

5 ◦ Ahora deberemos crear un nuevo grupo llamado login42. Para crearlo debemos hacer sudo addgroup login42.

Captura de pantalla 2022-07-14 a las 2 16 09

🧠 Que es GID❓ Es el identificador de grupo, es una abreviatura de Group 🆔.

🤔 Se ha creado correctamente el grupo? Lo cierto es que si ya que no ha habido ningún mensaje de error, aún así podemos comprobar si se ha creado con el comando getent group nombre_grupo o también podemos hacer cat /etc/group y podremos ver todos los grupos y los usuarios que hay dentro de ellos.

6 ◦ Con el comando sudo adduser user group incluiremos al usuario en el grupo. Debemos incluir al usuario en los grupos root y login42.

Captura de pantalla 2022-07-14 a las 2 24 49

Captura de pantalla 2022-07-14 a las 2 25 53

7 ◦ Una vez los hayamos introducido para checkear que todo se haya hecho correctamente podemos ejecutar el comando getent group nombre_grupo o tambien podemos editar el fichero /etc/group nano /etc/group y en los grupos root y login42 debera aparecer nuestro usuario.

Captura de pantalla 2022-07-14 a las 2 35 20

Captura de pantalla 2022-07-14 a las 2 35 35

Captura de pantalla 2022-07-14 a las 2 31 13

Captura de pantalla 2022-07-14 a las 2 31 30

4.2 - Instalación y configuración SSH 📶

🧠 Que es SSH❓ Es el nombre de un protocolo y del programa que lo implementa cuya principal función es el acceso remoto a un servidor por medio de un canal seguro en el que toda la información está cifrada.

1 ◦ Lo primero que haremos será hacer sudo apt update para actualizar los repositorios que definimos en el archivo /etc/apt/sources.list

Captura de pantalla 2022-07-14 a las 3 09 44

2 ◦ Acto seguido instalaremos la herramienta principal de conectividad para el inicio de sesión remoto con el protocolo SSH, esta herramienta es OpenSSH. Para instalarla debemos introducir el comando sudo apt install openssh-server. En el mensaje de confirmación ponemos Y, acto seguido esperaremos a que termine la instalación.

Captura de pantalla 2022-07-14 a las 3 14 52

Para comprobar que se haya instalado correctamente haremos sudo service ssh status y nos debe aparecer active.

Captura de pantalla 2022-07-14 a las 3 53 59

3 ◦ Una vez terminada la instalación se han creado algunos ficheros que debemos configurar. Para ello utilizaremos Nano o si tu lo prefieres otro editor de texto. El primer fichero que editaremos será /etc/ssh/sshd_config.

Captura de pantalla 2022-07-14 a las 3 24 21

4 ◦ Los # al comienzo de una línea significan que esta comentada, las líneas que vayamos a modificar deberás quitarle el comentario. Una vez estemos editando el fichero deberemos modificar las siguientes líneas:

➤ #Port 22 -> Port 4242

Captura de pantalla 2022-07-14 a las 3 31 04

➤ #PermitRootLogin prohibit-password -> PermitRootLogin no

Captura de pantalla 2022-07-14 a las 3 34 13

Una vez hayamos modificado esas líneas debemos guardar los cambios realizados sobre el fichero y dejar de editarlo.

5 ◦ Ahora debemos editar el fichero /etc/ssh/ssh_config.

Captura de pantalla 2022-07-14 a las 3 48 56

Editaremos la siguiente línea:

➤ #Port 22 -> Port 4242

Captura de pantalla 2022-07-14 a las 3 50 29

6 ◦ Por último debemos reiniciar el servicio ssh para que así se actualicen las modificaciones que acabamos de realizar. Para ello debemos escribir el comando sudo service ssh restart y una vez reseteado miraremos el estado actual con sudo service ssh status y para confirmar que se hayan realizado los cambios en la escucha del servidor debe aparecer el Puerto 4242.

Captura de pantalla 2022-07-14 a las 3 56 56

4-3 Instalació y configuración de UFW 🔥🧱

🧠 Que es UFW❓ Es un firewall el cual utiliza la línea de comandos para configurar las iptables usando un pequeño número de comandos simples.

1 ◦ Lo primero que debemos hacer el instalar UFW, para ello haremos uso del comando sudo apt install ufw acto seguido escribiremos una y para confirmar que deseamos instalarlo y esperaremos a que termine.

Captura de pantalla 2022-07-14 a las 19 28 55

Captura de pantalla 2022-07-14 a las 19 29 25

2 ◦ Una vez instalado debemos habilitarlo , para ello debemos poner el siguiente comando sudo ufw enable y acto seguido nos debe indicar que el firewall esta activo.

Captura de pantalla 2022-07-14 a las 19 32 57

3 ◦ Ahora lo que debemos hacer es que nuestro firewall permita las conexiones que se lleven a cabo mediante el puerto 4242. Lo haremos con el siguiente comando sudo ufw allow 4242.

Captura de pantalla 2022-07-14 a las 19 34 12

4 ◦ Por último comprobaremos que esta todo correctamente configurado mirando el estado de nuestro cortafuegos , en donde ya debe aparecer como permitidas las conexiones mediante el puerto 4242. Para ver el estado daremos uso del comando sudo ufw status.

Captura de pantalla 2022-07-14 a las 19 38 37

4-4 Configurar contraseña fuerte para sudo 🔒

1 ◦ Crearemos un fichero en la ruta /etc/sudoers.d/ a mi fichero yo le he decidido llamar sudo_config ya que en ese fichero se almacenará la configuración de la contraseña. El comando exacto para crear el fichero es touch /etc/sudoers.d/sudo_config.

Captura de pantalla 2022-07-14 a las 22 00 40

2 ◦ Debemos crear el directorio sudo en la ruta /var/log porque cada comando que ejecutemos con sudo , tanto el input como el output debe quedar almacenado en ese directorio. Para crearlo utilizaremos el comando mkdir /var/log/sudo.

Captura de pantalla 2022-07-14 a las 21 56 53

3 ◦ Debemos editar el fichero creado en el paso 1. Como he comentado anteriormente puedes utilizar el editor que mas te guste , pero yo dare uso de nano. Comando para editar el fichero: nano /etc/sudoers.d/sudo_config.

Captura de pantalla 2022-07-14 a las 22 04 10

4 ◦ Una vez estamos editando el fichero deberemos introducir los siguientes comandos para cumplir todos los requisitos que pide el subject.

Defaults  passwd_tries=3
Defaults  badpass_message="Mensaje de error personalizado"
Defaults  logfile="/var/log/sudo/sudo_config"
Defaults  log_input, log_output
Defaults  iolog_dir="/var/log/sudo"
Defaults  requiretty
Defaults  secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

➤ Como debería verse el fichero.

Captura de pantalla 2022-07-16 a las 2 03 45

🤔 Que hace cada comando❓

Captura de pantalla 2022-07-16 a las 2 04 56

4-5 Configuración de política de contraseñas fuerte 🔑

1 ◦ El primer paso será editar el fichero login.defs.

Captura de pantalla 2022-07-16 a las 2 54 06

2 ◦ Una vez estemos editando el fichero modificaremos los siguientes parametros:

➤ PASS_MAX_DAYS 99999 -> PASS_MAX_DAYS 30

➤ PASS_MIN_DAYS 0 -> PASS_MIN_DAYS 2

Captura de pantalla 2022-07-16 a las 3 05 49

PASS_MAX_DAYS: Es el tiempo de expiración de la contraseña. El numero corresponde a días.

PASS_MIN_DAYS: El número mínimo de días permitido antes de modificar una contraseña.

PASS_WARN_AGE: El usuario recibira un mensaje de aviso indicando que faltan los dias especificados para que expire su contraseña.

3 ◦ Para poder seguir con la configuración debemos instalar los siguientes paquetes con este comando sudo apt install libpam-pwquality , acto seguido pondremos Y para confirmar la instalación y esperaremos a que termine.

Captura de pantalla 2022-07-16 a las 3 13 52

4 ◦ Lo siguiente que debemos hacer es volver a editar un fichero y modificar algunas líneas. Haremos nano /etc/pam.d/common-password.

Captura de pantalla 2022-07-16 a las 3 27 02

5 ◦ Despues de retry=3 debemos añadir los siguientes comandos:

minlen=10
ucredit=-1
dcredit=-1
maxrepeat=3
reject_username
difok=7
enforce_for_root

➤ Así debe ser la línea ↙️

Captura de pantalla 2022-07-16 a las 3 34 33

➤ Así se debe ver en el fichero ↙️

Captura de pantalla 2022-07-16 a las 3 38 08

🤔 Que hace cada comando❓

minlen=10 ➤ La cantidad minima de caracteres que debe contener la contraseña.

ucredit=-1 ➤ Como mínimo debe contener un caracter Mayus. Ponemos el - ya que debe contener como mínimo un caracter, si ponemos + nos referimos a como maximo esos caracteres.

dcredit=-1 ➤Como mínimo debe contener un digito.

maxrepeat=3 ➤ No puede tener más de 3 veces seguidas el mismo caracter.

reject_username ➤ No puede contener el nombre del usuario.

difok=7 ➤ Debe tener al menos 7 caracteres que no sean parte de la antigua contraseña.

enforce_for_root ➤ Implementaremos esta política para el usuario root.

4-6 Conectarse via SSH 🗣

1 ◦ Para conectarnos por SSH debemos cerrar la máquina, abrir VirtualBox y darle a configuración.

Captura de pantalla 2022-07-18 a las 10 15 13

2 ◦ Una vez en configuración debemos pinchar sobre el apartado de Red , pincharemos sobre Avanzadas para que así nos muestre más opciones y le daremos a Reenvío de puertos.

Captura de pantalla 2022-07-18 a las 10 18 32

3 ◦ Pincharemos sobre el siguiente emoticono para agregar una regla de reenvío.

Captura de pantalla 2022-07-18 a las 10 21 24

4 ◦ Por último agregaremos el puerto 4242 al anfitrión y al invitado. Las IP's no son necesarias. Pincharemos sobre el botón de aceptar para que así se apliquen los cambios.

Captura de pantalla 2022-07-18 a las 10 22 29

➤ Para poder conectarnos a la máquina virtual desde la real debemos abrir un terminal en la máquina real y escribir ssh gemartin@localhost -p 4242 nos pedirá la clave del usuario y una vez la introduzcamos ya nos saldrá el login en verde y eso significa que estaremos conectados.

Captura de pantalla 2022-07-19 a las 0 20 22

Captura de pantalla 2022-07-19 a las 0 20 54

5- Script 🚨

Esta es una parte muy importante del proyecto. Debes prestar atención en todo, muy importante no copiar y pegar directamente el fichero sin saber que hace cada cosa. En la evaluación debes explicar cada comando si el evaluador lo pide.

🧠 Que es un script❓ Es una secuencia de comandos guardada en un fichero que cuando se ejecuta hara la funcion de cada comando.

5-1 Architecture

Para poder ver la arquitectura del SO y su versión de kernel utilizaremos el comando uname -a ( "-a" == "--all" ) que basicamente printara toda la información excepto si el tipo de procesador es desconocido o la plataforma de hardware.

5-2 Núcleos físicos

Para poder mostrar el numero de nucleos fisicos haremos uso del fichero /proc/cpuinfo el cual proporciona información acerca del procesador: su tipo, marca, modelo, rendimiento, etc. Usaremos el comando grep "physical id" /proc/cpuinfo | wc -l con el comando grep buscaremos dentro del fichero "physical id" y con wc -l contaremos las lineas del resultado de grep. Esto lo hacemos ya que la manera de cuantificar los nucleos no es muy común. Si hay un procesador marcará 0 y si tiene más de un procesador, mostrará toda la información del procesador por separado contando los procesadores usando la notación cero. De esta manera simplemente contaremos las lineas que hay ya que es más cómodo cuantificarlo así.

5-3 Núcleos virtuales

Para poder mostrar el numero de nucleos virtuales es muy parecido al anterior. Haremos uso de nuevo del fichero /proc/cpuinfo , pero, en este caso utilizaremos el comando grep processor /proc/cpuinfo | wc -l. El uso es practicamente el mismo al anterior solo que en vez de contar las lineas de "physical id" lo haremos de processor. Lo hacemos así por el mismo motivo de antes, la manera de cuantificar marca 0 si hay un procesador.

5-4 Memoria RAM

Para mostrar la memoria ram haremos uso del comando free para así ver al momento información sobre la ram, la parte usada, libre, reservada para otros recursos, etc. Para más info sobre el comando pondremos free --help. Nosotros daremos uso de free --mega ya que en el subject aparece esa unidad de medida.

Captura de pantalla 2022-08-02 a las 2 46 10

Una vez hemos ejecutado este comando debemos filtrar nuestra busqueda ya que no necesitamos toda la información que nos aporta , lo primero que debemos mostrar es la memoria usada, para ello haremos uso del comando awk que lo que hace este comando es para procesar datos basados en archivos de texto, es decir, podremos utilizar los datos que nos interesen de X fichero. Por último lo que haremos será comparar si la primera palabra de una fila es igual a "Mem:" printaremos la tercera palabra de esa fila que será la memoria usada. Todo el comando junto seria free --mega | awk '$1 == "Mem:" {print $3}'. En el script el valor de retorno de este comando se lo asignaremos a una variable que concatenaremos con otras variables para que todo quede igual como especifica el subject.

Captura de pantalla 2022-08-02 a las 2 55 21

Para obtener la memoria total el comando es practicamente igual al anterior lo único que deberemos cambiar es que en vez de printar la tercera palabra de la fila queremos la segunda free --mega | awk '$1 == "Mem:" {print $2}'.

Captura de pantalla 2022-08-02 a las 3 00 02

Por última parte debemos calcular el % de memoria usada. El comando de nuevo es parecido a los anteriores la única modificación que haremos en la parte del printeo. Como la operación para conseguir el tanto porciento no es exacta nos puede dar muchos decimales y en el subject solo aparecen 2 asique nosotros haremos lo mismo, por eso utilizamos %.2f para que asi solo se muestren 2 decimales. Otra cosa que quizás no sepas es en printf para que se muestre un % hay que poner %%. Todo el comando free --mega | awk '$1 == "Mem:" {printf("(%.2f%%)\n", $3/$2*100)}'.

Captura de pantalla 2022-08-02 a las 3 51 01

5-5 Memoria del disco

Para poder ver la memoria del disco ocupada y disponible utilizaremos el comando df que significa "disk filesystem" , se utiliza para obtener un resumen completo del uso del espacio en disco. Como en el sibject indica la memoria utilizada se muestra en MB asi que entonces utilizaremos el flag -m. Acto seguido haremos un grep para que solo nos muestre las lineas que contengan "/dev/" y seguidamente volveremos a hacer otro grep con el flag -v para excluir las lineas que contengan "/boot". Por último utilizaremos el comando awk y sumaremos el valor de la tercera palabra de cada linea para una vez sumadas todas las lineas printar el resultado final de la suma. El comando entero es el siguiente: df -m | grep "/dev/" | grep -v "/boot" | awk '{memory_use += $3} END {print memory_use}'.

Captura de pantalla 2022-08-03 a las 2 26 15

Para obtener el espacio total utilizaremos un comando muy parecido. Las unicas diferencias seran que los valores que sumaremos seran los $2 en vez de $3 y la otra diferencia es que en el subject aparece el tamaño total en Gb asique como el resultado de la suma nos da el numero en Mb debemos transformarlo a Gb , para ello debemos dividir el numero entre 1024 y quitar los decimales.

Captura de pantalla 2022-08-03 a las 2 40 55

Por último debemos mostrar un porcentaje de la memoria usada. Para ello , de nuevo, utilizaremos un comando muy parecido a los dos anteriores. Lo unico que cambiaremos es que combinaremos los dos comandos anteriores para tener dos variables , una que representa la memoria usada y la otra la total. Hecho esto haremos una operacion para conseguir el tanto por ciento use/total*100 y el resultado de esta operacion lo printaremos como aparece en el subject , entre parentesis y con el simbolo % al final. El comando final es este: df -m | grep "/dev/" | grep -v "/boot" | awk '{use += $3} {total += $2} END {printf("(%d%%)\n"), use/total*100}'.

Captura de pantalla 2022-08-03 a las 2 49 33

5-6 Porcentaje uso de CPU

Para poder ver el porcentaje de uso de CPU haremos uso del comando vmstat este muestra estadísticas del sistema, permitiendo obtener un detalle general de los procesos, uso de memoria, actividad de CPU, estado del sistema, etc. Podriamos poner si ninguna opción pero en mi caso pondré un intervalo de segundos de 1 a 4. Tambien daremos uso del comando tail -1 que este lo que nos va a permitir es que solo produzca el output la ultima linea, entonces de las 4 generadas solo se printara la ultima. Por ultimo solo printaremos la palabra 15 que es el uso de memoria disponible. El comando entero es el siguiente: vmstat 1 4 | tail -1 | awk '{print %15}'. El resultado de este comando solo es una parte del resultado final ya que todavia hay que hacer alguna operación en el script para que quede bien. Lo que habria que hacer es a 100 restarle la cantidad que nos ha devuelto nuestro comando, el resultado de esa operación lo printaremos con un decimal y un % al final y ya estaría hecha la operación.

Captura de pantalla 2022-08-03 a las 0 33 39

5-7 Último reinicio

Para ver la fecha y hora de nuestro último reinicio haremos uso del comando who con el flag -b ya que con ese flag nos mostrará por pantalla el tiempo del último arranque del sistema. Como ya nos ha pasado anteriormente nos muestra más información de la que deseamos asique filtraremos y solo mostraremos lo que nos interesa, para ello haremos uso del comando awk y compararemos si la primera palabra de una linea es "system" se printara por pantalla la tercera palabra de esa linea , un espacio y la cuarta palabra. El comando entero seria el siguiente: who -b | awk '$1 == "system" {print $3 " " $4}'.

Captura de pantalla 2022-08-02 a las 12 24 58

5-8 Uso LVM

Para checkear si LVM esta activo o no haremos uso del comando lsblk , este nos muestra información de todos los dispositivos de bloque (discos duros, SSD, memorias, etc) entre toda la información que proporciona podemos ver lvm en el tipo de gestor. Para este comando haremos un if ya que o printaremos Yes o No. Basicamente la condicion que buscamos sera contar el numero de lineas en las que aparece "lvm" y si hay mas de 0 printamos Yes, si hay 0 se printara No. Todo el comando seria: if [ $(lsblk | grep "lvm" | wc -l) -gt 0 ]; then echo yes; else echo no; fi.

Captura de pantalla 2022-08-02 a las 22 38 43

5-9 Conexiones TCP

Para mirar el numero de conexiones TCP establecidas. Utilizaremos el comando ss sustituyendo al ya obsoleto netstat. Filtraremos con el flag -ta para que solo se muestren las conexiones TCP. Por último haremos un grep para ver las que estan establecidas ya que tambien hay solo de escucha y cerraremos con wc -l para que cuente el numero de lineas. El comando queda tal que asi: ss -ta | grep ESTAB | wc -l.

Captura de pantalla 2022-08-03 a las 0 53 36

5-10 Número de usuarios

Daremos uso del comando users que nos mostrará el nombre de los usuarios que hay, sabiendo esto, pondremos wc -w para que cuente la cantidad de palabras que hay en la salida del comando. El comando entero queda así users | wc -w.

Captura de pantalla 2022-08-02 a las 12 33 29

5-11 Dirección IP y MAC

Para obtener la dirección del host haremos uso del comando hostname -I y para obtener la MAC haremos uso del comando ip link que se utiliza para mostrar o modificar las interfaces de red. Como aparecen más de una interfaz, IP's etc. Utilizaremos el comando grep para buscar lo que deseamos y asi poder printar por pantalla solo lo que nos piden. Para ello pondremos ip link | grep "link/ether" | awk '{print $2}' y de esta manera solo printaremos la MAC.

Captura de pantalla 2022-08-02 a las 14 53 14

5-12 Número de comandos ejecutados con sudo

Para poder obtener el numero de comandos que son ejecutados con sudo haremos uso del comando jornalctl que este es una herramienta que se encarga de recopilar y administrar los registros del sistema. Acto seguido pondremos _COMM=sudo par así filtrar las entradas especificando su ruta. En nuestro ponemos _COMM ya que hace referencia a un script ejecutable. Una vez tengamos filtrada la busqueda y solo aparezcan los registros de sudo todavía deberemos filtrar un poco más ya que cuando incias o cierras sesion de root tambien aparece en el registro, entonces para terminar de filtrar pondremos un grep COMMAND y asi solo apareceran las lineas de comandos. Por ultimo pondremos wc -l para que asi nos salgan enumeradas las lineas. El comando entero es el siguiente: journalctl _COMM=sudo | grep COMMAND | wc -l). Para comprobar que funcione correctamente podemos correr el comando en el terminal, poner un comando que incluya sudo y volver a correr el comando y deberá incrementar el número de ejecucciones de sudo.

Captura de pantalla 2022-08-02 a las 23 50 39

5-13 Resultado total del script

⚠️ Recuerda no hacer copia y pega si no sabes el funcionamiento de cada comando ⚠️

#!/bin/bash

# ARCH
arch=$(uname -a)

# CPU PHYSICAL
cpuf=$(grep "physical id" /proc/cpuinfo | wc -l)

# CPU VIRTUAL
cpuv=$(grep "processor" /proc/cpuinfo | wc -l)

# RAM
ram_total=$(free --mega | awk '$1 == "Mem:" {print $2}')
ram_use=$(free --mega | awk '$1 == "Mem:" {print $3}')
ram_percent=$(free --mega | awk '$1 == "Mem:" {printf("%.2f"), $3/$2*100}')

# DISK
disk_total=$(df -m | grep "/dev/" | grep -v "/boot" | awk '{disk_t += $2} END {printf ("%.1fGb\n"), disk_t/1024}')
disk_use=$(df -m | grep "/dev/" | grep -v "/boot" | awk '{disk_u += $3} END {print disk_u}')
disk_percent=$(df -m | grep "/dev/" | grep -v "/boot" | awk '{disk_u += $3} {disk_t+= $2} END {printf("%d"), disk_u/disk_t*100}')

# CPU LOAD
cpul=$(vmstat 1 2 | tail -1 | awk '{printf $15}')
cpu_op=$(expr 100 - $cpul)
cpu_fin=$(printf "%.1f" $cpu_op)

# LAST BOOT
lb=$(who -b | awk '$1 == "system" {print $3 " " $4}')

# LVM USE
lvmu=$(if [ $(lsblk | grep "lvm" | wc -l) -gt 0 ]; then echo yes; else echo no; fi)

# TCP CONNEXIONS
tcpc=$(ss -ta | grep ESTAB | wc -l)

# USER LOG
ulog=$(users | wc -w)

# NETWORK
ip=$(hostname -I)
mac=$(ip link | grep "link/ether" | awk '{print $2}')

# SUDO
cmnd=$(journalctl _COMM=sudo | grep COMMAND | wc -l)

wall "	Architecture: $arch
	CPU physical: $cpuf
	vCPU: $cpuv
	Memory Usage: $ram_use/${ram_total}MB ($ram_percent%)
	Disk Usage: $disk_use/${disk_total} ($disk_percent%)
	CPU load: $cpu_fin%
	Last boot: $lb
	LVM use: $lvmu
	Connections TCP: $tcpc ESTABLISHED
	User log: $ulog
	Network: IP $ip ($mac)
	Sudo: $cmnd cmd"

Script visto desde nano ↙️

Captura de pantalla 2022-08-03 a las 3 47 31

Resultado tras la ejecución del script ↙️

Captura de pantalla 2022-08-03 a las 3 46 15

6- Crontab ⏰

🧠 Que es crontab? Es un administrador de procesos en segundo plano. Los procesos indicados seran ejecutados en el momento que especifiques en el fichero crontab.

Para tener correctamente crontab configurado debemos editar el fichero crontab con el siguiente comando sudo crontab -u root -e.

En el fichero debemos añadir el siguiente comando para que el script se ejecute cada 10 minutos */10 * * * * sh /ruta del script.

Captura de pantalla 2022-08-03 a las 4 40 18

Funcionamiento de cada parametro de crontab:

m ➤ Corresponde al minuto en que se va a ejecutar el script, el valor va de 0 a 59.

h ➤ La hora exacta, se maneja el formato de 24 horas, los valores van de 0 a 23, siendo 0 las 12:00 de la medianoche. dom ➤ hace referencia al día del mes, por ejemplo se puede especificar 15 si se quiere ejecutar cada dia 15.

dow ➤ Significa el día de la semana, puede ser numérico (0 a 7, donde 0 y 7 son domingo) o las 3 primeras letras del día en inglés: mon, tue, wed, thu, fri, sat, sun.

user ➤ Define el usuario que va a ejecutar el comando, puede ser root, u otro usuario diferente siempre y cuando tenga permisos de ejecución del script.

command ➤ Refiere al comando o a la ruta absoluta del script a ejecutar.

7- Signature.txt 📝

Para obtener la firma lo primero que debemos hacer es apagar la máquina virtual ya que una vez la enciendas o modifiques algo la firma cambiará.

Captura de pantalla 2022-08-03 a las 4 47 32

El siguiente paso será ubicarnos en la ruta donde tengamos el .vdi de nuestra maquina virtual.

Screen Shot 2022-08-03 at 4 57 37 AM

Por último haremos shasum nombremaquina.vdi y esto nos dara la firma. El resultado de esta firma es lo que tendremos añadir a nuestro fichero signature.txt para posteriormente subir el fichero al repositorio de la intra. Muy importante no volver a abrir la maquina ya que se modificara la firma. Para las correcciones recuerda clonar la maquina ya que asi podras encenderla sin miedo a que cambie la firma.

🧠 Que es shasum❓ Es un comando que permite identificar la integridad de un fichero mediante la suma de comprobación del hash SHA-1 de un archivo.

Screen Shot 2022-08-03 at 4 58 48 AM




Este tutorial ha llevado mucho trabajo, si crees que te ha sido útil agradeceria mucho starred 🌟 para que así se comparta y pueda ayudar a más estudiantes 👨🏻‍🎓❤️




8- Hoja de corrección ✅

Que no te sorprenda nada❗️ Sigue bajando para poder ver todo lo que aparece en la corrección. Todas las siguientes capturas han sido sacadas de la guia de pasqualerossi 🇦🇺🤝🇪🇸 ➤ Repository

image

image

image

image

image

8-1 Respuestas de la evaluación 💯

▪️ Que es una maquina virtual❓

Es un software que simula un sistema de computación y puede ejecutar programas como si fuese una computadora real. Permite crear múltiples entornos simulados o recursos dedicados desde un solo sistema de hardware físico.

▪️ Porque has escogido Debian❓

Esto es algo personal para cada uno, mi opinion: El propio subject explica que es mas sencillo hacerlo en Debian y si buscas documentacion/tutoriales hay muchos y todos se han hecho en debian.

▪️ Diferencias basicas entre CentOS y Debian

182516961-c3e4da77-2db8-4737-a68f-27b033908705 (1) (1)

▪️ Cual es el proposito de las maquinas virtuales❓

Su objetivo es el de proporcionar un entorno de ejecución independiente de la plataforma de hardware y del sistema operativo, que oculte los detalles de la plataforma subyacente y permita que un programa se ejecute siempre de la misma forma sobre cualquier plataforma.

▪️ Diferencias entre apt y aptitude ↙️

Aptitude es una version mejorada de apt. APT es un administrador de paquetes de nivel inferior y aptitude es un administrador de paquetes de alto nivel. Otra gran diferencia es la funcionalidad que ofrecen ambas herramientas. Aptitude ofrece una mejor funcionalidad en comparación con apt-get. Ambos son capaces de de proporcionar los medios necesarios para realizar la gestión de paquetes. Sin embargo, si se busca un enfoque con mas caracteristicas, debería ser, Aptitude.

▪️ Que es APPArmor❓

Es un módulo de seguridad del kernel Linux que permite al administrador del sistema restringir las capacidades de un programa.

Contacto 📥

Contacta conmigo si crees que puedo mejorar el tutorial! Puede ayudar a futuros estudiantes! 😁

◦ Email: gemartin@student.42barcelona.com

◦ Linkedin: https://www.linkedin.com/in/gemartin99/

Quizás pueda interesarte!

- Para ver mi progresion en el common core 42 ↙️

AQUÍ

- Mi perfil en la intranet de 42 ↙️

AQUÍ

About

Tutorial to install Debian virtual machine.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages