-
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 🔒
Click aqui para redireccionarte a la URL donde puedes descargar la ISO de manera segura.
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
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.
3 ◦ Seleccionamos la cantidad de memoria RAM que reservaremos para la máquina.
4 ◦ Seleccionamos la segunda opción para asi crear un disco duro virtual ahora.
5 ◦ Escogemos la primera opción VDI ya que nos hemos descargado una imagen de disco.
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.
7 ◦ Una vez hayamos establecido la cantidad recomendada 12 GB deberemos darle a Crear.
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
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.
10 ◦ Seleccionaremos la ISO que acabamos de descargar y le damos a Abrir y después le daremos a Aceptar.
- ◦ Una vez completados todos los pasos anteriores ya podemos
Iniciarnuestra máquina virtual.
➤ Espera❗️ Tu vista es muy importante 👀❗️ Para poder hacer la ventana más grande debes hacer lo siguiente:
Utiliza la tecla command para que la captura del ratón pase de la maquina real a la virtual y al reves.
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.
2 ◦ Escogeremos el idioma que usaremos para la instalación y el predeterminado que se le quedará al sistema English.
3 ◦ Introducimos nuestro País, territorio o zona. En mi caso pondre Other.
4 ◦ Como he seleccionado other debo indicar mi continente o region. En mi caso pongo Europe 🇪🇺.
5 ◦ Seleccionamos el país. En mi caso Spain 🇪🇸.
6 ◦ Seleccionamos United States.
7 ◦ Importante seleccionar American English como configuración de teclado ya que si no tendremos las teclas mal enlazadas.
8 ◦ En este paso debemos elegir el Host Name de la máquina, el cual debe ser tu login seguido de 42.
9 ◦ Este apartado lo dejaremos vacío ya que el subject no mencionada nada de Domain name.
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.
11 ◦ Repetimos el proceso de nuevo para comprobar que no la hayamos escrito mal.
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.
Volvemos a poner el nombre de usuario.
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.
14 ◦ Seleccionamos la hora de nuestra ubicación.
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. Manual y seguir otro tutorial
16 ◦ Seleccionamos el disco en el que queremos hacer el particionado (Solo debe haber un disco).
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.
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).
19 ◦ Le damos a Cancel ya que el borrado de datos en el disco no es necesario.
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.
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.
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.
23 ◦ Seleccionamos la opción Yes para continuar y confirmar que no queremos hacer más cambios en el disco.
24 ◦ Seleccionamos la opción No ya que no necesitamos paquetes adicionales.
25 ◦ Escogemos nuestro País.
26 ◦ Escogemos deb.debian.org ya que tenindo en cuenta nuestra region es donde tendremos una mejor conexión.
27 ◦ Esta opción la dejaremos vacía le daremos directamente a Continue.
28 ◦ Seleccionamos la opcion No ya que no queremos que los developers vean nuestras estadísticas aunque sean anónimas.
29 ◦ Quitaremos todas las opciones de software (con la barra espaciadora) y le daremos a Continue.
30 ◦ Seleccionaremos Yes para instalar GRUB boot en el disco duro.
31 ◦ Escogeremos el dispositivo para la instalación del cargador de arranque /dev/sda (ata_VBOX_HARDDISK).
32 ◦ Le daremos a Continue para finalizar la instalación.
➤ 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.
➤ Debemos introducir el usuario y contraseña que hemos creado. En mi caso el usuario es gemartin y la contraseña Hola42spain.
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.
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.
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.
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.
5 ◦ Ahora deberemos crear un nuevo grupo llamado login42. Para crearlo debemos hacer sudo addgroup login42.
🧠 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.
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.
🧠 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
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.
Para comprobar que se haya instalado correctamente haremos sudo service ssh status y nos debe aparecer active.
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.
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
➤ #PermitRootLogin prohibit-password -> PermitRootLogin no
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.
Editaremos la siguiente línea:
➤ #Port 22 -> Port 4242
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.
🧠 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.
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.
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.
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.
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.
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.
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.
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.
🤔 Que hace cada comando❓
1 ◦ El primer paso será editar el fichero login.defs.
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
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.
4 ◦ Lo siguiente que debemos hacer es volver a editar un fichero y modificar algunas líneas. Haremos nano /etc/pam.d/common-password.
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
➤ Así se debe ver en el fichero
🤔 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.
1 ◦ Para conectarnos por SSH debemos cerrar la máquina, abrir VirtualBox y darle a configuración.
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.
3 ◦ Pincharemos sobre el siguiente emoticono para agregar una regla de reenvío.
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.
➤ 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.
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.
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.
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í.
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.
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.
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.
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}'.
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)}'.
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}'.
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.
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}'.
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.
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}'.
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.
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.
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.
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.
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.
#!/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
Resultado tras la ejecución del script
🧠 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.
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.
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á.
El siguiente paso será ubicarnos en la ruta donde tengamos el .vdi de nuestra maquina virtual.
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.
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 👨🏻🎓❤️
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
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.
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.
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.
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.
Es un módulo de seguridad del kernel Linux que permite al administrador del sistema restringir las capacidades de un programa.
◦ Email: gemartin@student.42barcelona.com
◦ Linkedin: https://www.linkedin.com/in/gemartin99/


















































































































