Una máquina virtual es un software que simula un ordenador dentro de otro ordenador. Permite ejecutar diferentes sistemas operativos y aplicaciones en un entorno virtualizado, separado del sistema operativo principal.
La elección de SO es Debian, podríamos querer usar una máquina virtual para propósitos de desarrollo, pruebas o incluso para ejecutar programas que requieren un entorno específico. Por ejemplo, podríamos usar una máquina virtual de Debian para probar nuevas configuraciones de software sin afectar al sistema principal, o para ejecutar aplicaciones que no son compatibles directamente con el sistema operativo principal.
Debemos descargar la ISO de la última versión de Debian S.O.
-
Seleccionar Debian 10.X 64-bits
-
Elegir el tipo de Boot Firmware Type
-
Legacy BIOS
No crea ninguna partición específica y entra en los requerimientos del subject.
-
UEFI
Crea una partición nueva e incumpliría con el subject.
-
-
En el botón de 'Customize Settings'
-
Ingresamos el nombre de la Máquina Virtual (MV): 'Born2beRoot'
-
Elegimos 'sgoinfre' como la ruta donde se almacenará la MV.
Optamos por esta ruta para evitar que ocupe espacio en nuestro usuario. 'Goinfre' es una carpeta compartida que ofrece espacio de almacenamiento adicional para los usuarios en ciertos entornos, como la Escuela 42.
Es esencial crear un directorio con tu nombre de usuario y los permisos necesarios.
Debes usar el comando cd .. hasta encontrar sgoinfre
→ sgoinfre$ mkdir “tu_user”
>goinfre$ chmod 700 “tu_user”
Esto asignará permisos de lectura, escritura y ejecución solo para ti como propietario, y ningún permiso para otros usuarios.
Si quieres completar la primera parte del bono, debes ampliar el espacio predeterminado que proporciona VMware a 30GB. Puedes hacer esto ajustando la configuración de la aplicación antes de iniciarla.
-
-
Elige el idioma inglés, el teclado y luego donde estás.
-
Hostname:
- Debe ser tu login mas 42.
gusgonza42
- Deja el dominio vacío.
- Establece una contraseña. Para visualizarla, usa la tecla de tabulación y luego el espacio. Hello42bcn-
- Selecciona el nombre de nuestro nuevo usuario. Como indica el subject, debemos crear un usuario adicional que no sea root con nuestro login.
gusgonza
contraseñaHello42Spain.
En este punto si quieres hacer un parte del bonus tendrías que escoger la opción manual y seguir los pasos del apartado de bonus del este documento. es fácil de hacerlo. Si no, sigue con los pasos.
- Debe ser tu login mas 42.
-
Escogeremos la tercera opción
Guied - use entire disk and set up encrypted LVM
, ya que el subject indica que deben ser particiones cifradas. -
Una vez seleccionado el disco, debemos hacer el particionado como se nos pide. Para hacerlo correctamente, seleccionamos la segunda opción
Separate /home partition
y le damos a YES. Cancelamos, ya que el borrado de datos en el disco no es necesario. -
De nuevo, debemos establecer una contraseña. Esta vez será la frase de encriptación. Como mencioné antes, debes repetir el proceso y anotar la contraseña, ya que será importante en el futuro.
Yowcloud42
-
En este paso, introducimos la cantidad de volumen que usaremos para la partición guiada. Deberíamos introducir
max
o el número máximo de tamaño disponible, que en mi caso es20.9 GB
. -
Para finalizar la partición y escribir los cambios en el disco, seleccionamos la opción
Finish partitioning and write changes to disk
y confirmamos con YES.-
Seleccionamos la opción
No
, ya que no necesitamos paquetes adicionales instalación media -
¿Qué son los volúmenes lógicos?
Los volúmenes lógicos son como carpetas virtuales donde puedes agrupar tus archivos desde diferentes lugares, haciendo que sea más fácil administrarlos y moverlos según sea necesario.
-
-
Seleccionamos la opción
Yes
para continuar y confirmar que no queremos hacer más cambios en el disco. Hará la instalación base del sistema. -
Escogemos nuestro país.
-
Escogemos
deb.debian.org
, ya que es lo que recomienda Debian. -
La opción de Configure el HTTP proxy information la dejaremos vacía y le daremos
Continue
. Esta configurando e instalando. -
Seleccionamos la opción
No
porque no deseamos que los desarrolladores vean nuestras estadísticas, incluso si son anónimas. -
Quitaremos todas las opciones de software (con la barra espaciadora) y le daremos a
Continue
. Esperamos mientras instala -
Seleccionaremos
Yes
para instalar GRUB boot en el disco duro. -
Escogeremos el dispositivo para la instalación del cargador de arranque
/dev/sda
. A esperar. y le damos aContinue
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 Yowcloud
.
➤ Debemos introducir el usuario y contraseña que hemos creado. En mi caso el usuario es gusgonza
y la contraseña Hello42bcn-
.
Instalación de sudo y configuración de usuarios y grupos
-
Para la instalación de sudo primero debemos estar en el usuario root, para ello pondremos
su
en el terminal e introduciremos la contraseña, en mi caso esHola42bcn-
. Una vez hemos accedido al usuario root, debemos poner el comandoapt install sudo
para así instalar los paquetes necesarios. -
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. -
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 comandosudo -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. -
Siguiendo en el usuario root crearemos un usuario con nuestro login con el comando
sudo adduser gusgonza
como nosotros ya hemos creado el usuario en la instalación nos debe aparecer que el usuario ya existe. -
Ahora deberemos crear un nuevo grupo llamado
user42
. Para crearlo debemos hacersudo addgroup user42
.Qué es GID Es el identificador de grupo, es una abreviatura de Group ID
Se ha creado correctamente el grupo? Lo cierto es que sí, ya que no ha habido ningún mensaje de error, aun así podemos comprobar si se ha creado con el comando
getent group nombre_grupo
o también podemos hacercat /etc/group
y podremos ver todos los grupos y los usuarios que hay dentro de ellos. -
Con el comando
sudo adduser user group
incluiremos al usuario en el grupo. Debemos incluir al usuario en los grupossudo
yuser42
. -
Una vez los hayamos introducido para chequear que todo se haya hecho correctamente podemos ejecutar el comando
getent group nombre_grupo
o también podemos editar el fichero /etc/groupvim /etc/group
y en los grupossudo
ylogin42
deberá aparecer nuestro usuario.
Instalación y configuración SSH
Qué es SSH Es un protocolo y el programa que lo implementa. Su principal función es permitir el acceso remoto a un servidor a través de un canal seguro en el que toda la información se cifra.
-
Lo primero que haremos será ejecutar
sudo apt update
para actualizar los repositorios definidos en el archivo /etc/apt/sources.list. -
Instalaremos OpenSSH, la herramienta principal para la conectividad de inicio de sesión remoto con el protocolo SSH. Para instalarla, introduciremos el comando
sudo apt install openssh-server
. Cuando aparezca el mensaje de confirmación, escribiremosY
y luego esperaremos a que termine la instalación.Para verificar que se instaló correctamente, ejecutaremos
sudo service ssh status
. Debería aparecer como activo. -
Tras finalizar la instalación, se crean algunos archivos que debemos configurar. Utilizaremos vim para esta tarea, que puedes instalar con
sudo apt install vim
. El primer archivo que editaremos será/etc/ssh/sshd_config
. Si no estás utilizando el usuario root, no tendrás permisos de escritura. Para conseguirlos, puedes utilizarsu
e ingresar la contraseña para acceder al usuario root, o simplemente agregar sudo al principio del comando:sudo vim /etc/ssh/sshd_config
. -
Los
#
al inicio de una línea indican que está comentada; debes eliminar este símbolo en las líneas que vayas a modificar. Al editar el archivo, debes cambiar las siguientes líneas:➤ #Port 22 -> Port 4242
➤ #PermitRootLogin prohibit-password -> PermitRootLogin no
Una vez que hayas hecho estas modificaciones, guarda los cambios y cierra el archivo.
-
Ahora debemos editar el fichero
vim /etc/ssh/ssh_config
.Editaremos la siguiente línea:
➤ #Port 22 -> Port 4242
sudo service ssh restart
para actualizar los cambiosUna vez reseteado, comprobaremos el estado actual con
sudo service ssh status
. Para confirmar que los cambios en la escucha del servidor se han realizado, debe aparecer el Puerto 4242.
Instalación y configuración de UFW
¿Qué es UFW? Es un firewall que utiliza la línea de comandos para configurar las iptables mediante un pequeño número de comandos simples.
-
Lo primero que debemos hacer es instalar UFW. Para ello, utilizaremos el comando
sudo apt install ufw
. A continuación, escribiremos unay
para confirmar. -
Una vez instalado, debemos habilitarlo. Para ello, introduciremos el siguiente comando:
sudo ufw enable
. A continuación, nos debe indicar que el firewall está activo. -
Ahora debemos hacer que nuestro firewall permita las conexiones a través del puerto 4242. Lo haremos con el siguiente comando:
sudo ufw allow 4242
.Este comando sirve para abrir cualquier puerto. Para eliminarlo, activaremos el menú y luego seleccionaremos el puerto a eliminar.
-
Por último, comprobaremos que está 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
.
Configurar contraseña fuerte para sudo
-
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
. -
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
. -
Debemos editar el fichero creado en el paso 1. Como he comentado anteriormente, puedes utilizar el editor que más te guste, pero yo haré uso de nano. Comando para editar el fichero:
vim /etc/sudoers.d/sudo_config
-
Una vez estamos editando el fichero deberemos introducir los siguientes comandos para cumplir todos los requisitos que pide él subject. en vin
yy
copia la linea yp
pega en la siguiente línea.Defaults passwd_tries=3 Defaults badpass_message="oh, no. Happens & up2u" 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"
➤ Cómo debería verse el fichero.
passwd_tries=3
: Limita el número de intentos de contraseña para autenticación.badpass_message="Oh, no. Happens & try again!"
: Define el mensaje mostrado al ingresar una contraseña incorrecta.logfile="/var/log/sudo/sudo_config"
: Especifica la ubicación del archivo de registro de sudo.log_input, log_output
: Registra tanto la entrada como la salida de los comandos ejecutados con sudo.iolog_dir="/var/log/sudo"
: Define el directorio para almacenar registros detallados de entrada/salida.requiretty
: Requiere un terminal asociado para el uso de sudo. Esta línea requiere que un pseudo-terminal (tty) esté asociado con el proceso sudo. Esto es útil para asegurar que sudo solo pueda ser utilizado desde la línea de comandos interactiva y no desde scripts o procesos automatizados.secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
: Define las rutas seguras para la ejecución de comandos con sudo.
Configuración de política de contraseñas fuerte
-
El primer paso será editar el fichero
login.defs. vim /etc/login.defs
-
Una vez estemos editando el fichero, modificaremos los siguientes parámetros:
-
PASS_MAX_DAYS 99999 -> PASS_MAX_DAYS 30
-
PASS_MIN_DAYS 0 -> PASS_MIN_DAYS 2
-
PASS_MAX_DAYS: Número máximo de días que se puede utilizar una contraseña. El número corresponde a días. 30
-
PASS_MIN_DAYS: Número mínimo de días permitidos entre cambios de contraseña. 2
-
PASS_WARN_AGE: Número de días de advertencia que se dan antes de que caduque una contraseña. 7
-
-
Para poder seguir con la configuración debemos instalar los siguientes paquetes con este comando
sudo apt install libpam-pwquality
, acto seguido pondremosY
para confirmar la instalación y esperaremos a que termine.libpam-pwquality
es una biblioteca que ayuda a implementar políticas de seguridad robustas para contraseñas en sistemas Unix y Linux, mejorando la resistencia contra ataques de fuerza bruta y aumentando la seguridad general del sistema.
-
Lo siguiente que debemos hacer es volver a editar un fichero y modificar algunas líneas. Haremos
vim /etc/pam.d/common-password
. -
Después de retry=3 debemos añadir los siguientes comandos:
minlen=10 ucredit=-1 dcredit=-1 lcredit=-1 maxrepeat=3 reject_username difok=7 enforce_for_root
minlen=10
: Establece la longitud mínima de la contraseña en 10 caracteres.ucredit=-1
: Requiere al menos una letra mayúscula en la contraseña.dcredit=-1
: Requiere al menos un dígito en la contraseña.lcredit=-1
: Requiere al menos una letra minúscula en la contraseña.maxrepeat=3
: Limita la cantidad de veces que un mismo carácter puede repetirse consecutivamente en la contraseña a 3.reject_username
: Prohíbe que la contraseña contenga el nombre de usuario.difok=7
: Requiere que al menos 7 caracteres de la nueva contraseña sean diferentes de los de la contraseña anterior.enforce_for_root
: Aplica estas políticas de seguridad también para el usuario root, asegurando que las contraseñas de root sigan estas reglas para mejorar la seguridad del sistema.
Conectarse vía SSH 🗣 con VMware
-
Daremos click derecho sobre nuestra máquina y escogeremos la opción
Connect to SSH
. -
Una vez se nos abra la siguiente pestaña debemos rellenar todos los campos. En port debemos poner
4242
para indicar que queremos conectarnos por ese puerto. Los siguientes campos son el username de tu máquina, en mi casogusgonza
y la contraseña del usuario, en mi casoHello42spain
.También podemos conectarnos mediante el terminal, pero debemos sustituir localhost por la IP de la máquina virtual. Quedaría algo así:
ssh gusgonza@192.168.39.1 -p 4242
. para saber tu ip usahostname -I
Script
Qué es un script
Es una secuencia de comandos guardada en un fichero que cuando se ejecuta hará la función de cada comando.
El uso de WALL: Es un comando en sistemas Unix y Linux que se utiliza para enviar un mensaje a todos los usuarios que están actualmente conectados y tienen una sesión abierta en el sistema. El nombre wall
es una abreviatura de "Write to All" (Escribir a Todos).
-
Architecture
Para poder ver la arquitectura del SO y su versión de kernel utilizaremos el comando
uname -a
( "-a" == "--all" ) que básicamente printará toda la información, excepto si el tipo de procesador es desconocido o la plataforma de hardware -
Núcleos físicos
El comando
grep "physical id" /proc/cpuinfo
muestra la salida del archivo/proc/cpuinfo
que contiene información sobre los procesadores en tu sistema. Muestra la línea que contiene el texto "physical id".La salida que has proporcionado indica que tienes un solo ID físico de CPU en tu sistema, ya que solo se muestra un resultado con "physical id: 0". Esto significa que hay un solo conjunto físico de procesadores en tu sistema.
-
Núcleos virtuales
grep processor /proc/cpuinfo
: Este comando busca en el archivo/proc/cpuinfo
todas las líneas que contienen la palabra "processor". Ahora,/proc/cpuinfo
es un archivo especial en sistemas Linux que proporciona información detallada sobre la CPU del sistema. Cada procesador lógico en el sistema está representado por una línea que contiene la palabra "processor".wc -l
: Este comando cuenta el número de líneas que recibe cómo entrada. Con la opciónl
, le estamos diciendo awc
que cuente las líneas.Entonces, cuando combinamos ambos comandos, lo que estamos haciendo es buscar todas las líneas en
/proc/cpuinfo
que contienen la palabra "processor" y luego contar cuántas líneas encontramos. Dado que cada procesador lógico se representa en una línea diferente en/proc/cpuinfo
, el resultado nos dará el número total de procesadores lógicos detectados en el sistema.Esperamos obtener un número que represente la cantidad de procesadores lógicos disponibles en el sistema.
-
Memoria RAM
Uso del AWK
Estás utilizando AWK para extraer y procesar información específica de la salida del comando
free --mega
, que muestra información sobre la memoria del sistema en megabytes. Con AWK, estás buscando líneas que comienzan con "Mem:" y extrayendo la memoria usada y total de esas líneas. Luego, estás formateando la salida para mostrar el porcentaje de memoria usada con dos decimales y el símbolo "%".-
free --mega
: Este comando muestra información sobre la memoria del sistema, incluyendo la cantidad de memoria usada, libre y reservada para otros usos, utilizando la unidad de medida en megabytes (--mega). Muestra el total de memoria física y virtual en el sistema. -
awk '$1 == "Mem:" {print $3}'
: Este comando filtra la salida del comandofree --mega
. Utiliza AWK, un poderoso lenguaje de procesamiento de texto, para buscar las líneas donde la primera palabra es "Mem:". Luego, imprime el tercer campo de esas líneas, que corresponde a la memoria usada en megabytes.free --mega | awk '$1 == "Mem:" {print $3}'
-
awk '$1 == "Mem:" {print $2}'
: Similar al anterior, este comando filtra la salida para encontrar las líneas donde la primera palabra es "Mem:". Pero en lugar de imprimir el tercer campo, imprime el segundo campo, que corresponde a la memoria total en megabytes.free --mega | awk '$1 == "Mem:" {print $2}'
-
awk '$1 == "Mem:" {printf("(%.2f%%)\n", $3/$2*100)}'
: Nuevamente, filtra la salida para encontrar las líneas donde la primera palabra es "Mem:". Luego, calcula el porcentaje de memoria usada dividiendo la memoria usada entre la memoria total y multiplicando por 100 para obtener el porcentaje. Utilizaprintf
para formatear el resultado y mostrar solo dos decimales. También incluye el símbolo "%" al final.free --mega | awk '$1 == "Mem:" {printf("(%.2f%%)\n", $3/$2*100)}'
-
-
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 subject indica la memoria utilizada se muestra en MB, así que entonces utilizaremos el flag -m.-
Uso de
df
para ver el espacio en disco ocupado y disponible:df -m
muestra el uso del espacio en disco en megabytes.grep "/dev/"
filtra las líneas que contienen "/dev/".grep -v "/boot"
excluye las líneas que contienen "/boot".awk '{memory_use += $3} END {print memory_use}'
suma el tercer campo de cada línea y imprime el resultado, que representa el espacio en disco ocupado en MB.
df -m | grep "/dev/" | grep -v "/boot" | awk '{memory_use += $3} END {print memory_use}'
-
Uso de
df
para ver el espacio total en disco:awk '{memory_result += $2} END {printf ("%.fGb\n"), memory_result/1024}'
suma el segundo campo de cada línea, convierte el resultado de MB a GB y lo imprime.- Para obtener el espacio total utilizaremos un comando muy parecido. Las únicas diferencias serán que los valores que sumaremos serán los $2 en vez de $3 y la otra diferencia es que en el subject aparece el tamaño total en Gb así que como el resultado de la suma nos da el número en Mb debemos transformarlo a Gb, para ello debemos dividir el número entre 1024 y quitar los decimales.
df -m | grep "/dev/" | grep -v "/boot" | awk '{memory_result += $2} END {printf ("%.fGb\n"), memory_result/1024}'
-
Cálculo del porcentaje de uso de memoria:
awk '{use += $3} {total += $2} END {printf("(%d%%)\n"), use/total*100}'
combina los dos comandos anteriores para obtener la memoria usada y total. Luego calcula el porcentaje de uso y lo imprime entre paréntesis con el símbolo "%" al final.
df -m | grep "/dev/" | grep -v "/boot" | awk '{use += $3} {total += $2} END {printf("(%d%%)\n"), use/total*100}'
-
Porcentaje uso de CPU
Uso de
vmstat
para ver el porcentaje de uso de CPU:vmstat
es un comando utilizado en sistemas operativos Unix y Unix-like (como Linux) para monitorear y reportar estadísticas del sistema relacionadas con la memoria virtual, el procesamiento, la utilización de la CPU y la actividad de los discos. El nombre "vmstat" es una abreviatura de "Virtual Memory Statistics". Este comando proporciona una instantánea de varias métricas del sistema en un intervalo de tiempo específico.
-
vmstat 1 4 | tail -1 | awk '{print $15}'
muestra el porcentaje de uso de memoria disponible. -
Luego, se resta este valor de 100 y se imprime el resultado con un decimal y un "%" al final, en el script.
vmstat 1 4
: Este comando ejecuta el programavmstat
, que muestra estadísticas del sistema. El flag1
establece un intervalo de actualización de 1 segundo, mientras que el4
indica que se mostrarán los datos durante 4 iteraciones.tail -1
: Este comando muestra solo la última línea de la salida generada porvmstat
. Comovmstat
produce múltiples líneas de salida con datos en intervalos regulares, solo estamos interesados en la última línea, que contiene la información más reciente.awk '{print $15}'
: AWK es un programa de procesamiento de texto. En este caso, utilizamos AWK para extraer y mostrar solo el valor del decimoquinto campo de la última línea de la salida devmstat
. En el contexto devmstat
, el decimoquinto campo representa el porcentaje de uso de la CPU.
En resumen, este comando en su totalidad nos permite obtener el porcentaje de uso de la CPU en el sistema. Cada parte del comando cumple una función específica:
vmstat
recopila las estadísticas del sistema,tail -1
selecciona solo la última línea de esa salida, yawk
extrae el valor del campo que indica el porcentaje de uso de la CPU.vmstat 1 4 | tail -1 | awk '{print $15}'
-
-
Último reinicio
El comando
who
en la terminal de Linux muestra una lista de usuarios actualmente conectados al sistema, junto con detalles como la terminal de sesión y la hora de inicio de sesión. Es útil para verificar quién está utilizando el sistema en un momento dado. Puedes usar el comandowho
sin argumentos para obtener una lista básica de usuarios conectados, o puedes agregar opciones como-b
para mostrar la última hora de inicio del sistema,-u
para información adicional sobre la actividad del usuario, o-q
para mostrar solo el número de usuarios conectados.who -b | awk '$1 == "system" {print $3 " " $4}'
En la MV:
Por terminal conectado por ssh:
-
Uso LVM
LVM (Logical Volume Manager):
- LVM es un sistema de gestión de volúmenes lógicos que proporciona una capa de abstracción sobre los discos físicos.
- Permite la creación, redimensionamiento y administración de volúmenes lógicos de manera dinámica.
- Facilita tareas como la agregación de múltiples discos físicos, creación de instantáneas y migración de datos.
-
lsblk
: Este comando muestra información sobre los dispositivos de bloque en el sistema, como discos duros, SSD, entre otros. -
grep "lvm"
: El resultado delsblk
se filtra congrep
para buscar líneas que contengan la cadena "lvm". Esto nos ayuda a identificar si hay dispositivos que están gestionados por LVM. -
wc -l
: El resultado degrep
se pasa awc -l
, que cuenta el número de líneas que contienen la cadena "lvm". Esto nos dará el número total de dispositivos gestionados por LVM. -
if [ $(lsblk | grep "lvm" | wc -l) -gt 0 ]; then echo yes; else echo no; fi
: En este comando condicional (if
), se verifica si el número de líneas que contienen "lvm" es mayor que 0. Si es así, significa que hay dispositivos gestionados por LVM, por lo que se imprime "yes". De lo contrario, se imprime "no".-
if
: Inicia una estructura de control condicional en el script de shell. Permite ejecutar un bloque de comandos si se cumple una condición especificada. -
[ $(lsblk | grep "lvm" | wc -l) -gt 0 ]
: Esta es la condición delif
. Aquí se realiza una serie de comandos dentro de la expansión de comandos$(...)
para verificar si LVM está activo en el sistema.lsblk
: Lista los dispositivos de bloque en el sistema.grep "lvm"
: Filtra las líneas que contienen la cadena "lvm".wc -l
: Cuenta el número total de líneas que contienen "lvm".gt 0
: Compara si el número de líneas es mayor que 0.
-
then
: Marca el inicio del bloque de comandos que se ejecutarán si la condición delif
se evalúa como verdadera. -
echo yes
: Imprime "yes" en la salida estándar si LVM está activo en el sistema. -
else
: Marca el inicio del bloque de comandos que se ejecutarán si la condición delif
se evalúa como falsa. -
echo no
: Imprime "no" en la salida estándar si LVM no está activo en el sistema. -
fi
: Marca el final de la estructura de control condicional. Indica el final del bloque de comandos delif
.
En resumen, este comando permite determinar si LVM está activo en el sistema, mostrando "yes" si lo está y "no" si no lo está, facilitando así la verificación del estado de LVM en el sistema.
- PV (Physical Volume): Es un volumen físico, lo cual es un dispositivo de almacenamiento físico, como un disco duro o una partición de disco, que se utiliza como base para el almacenamiento en LVM (Logical Volume Management). En resumen, es una unidad física de almacenamiento que se integra en el sistema LVM.
- LV (Logical Volume): Es un volumen lógico, creado dentro de un volumen físico (PV) o un conjunto de ellos. Los LVs son similares a las particiones de disco tradicionales, pero con ventajas adicionales. Se pueden redimensionar fácilmente, mover entre diferentes sistemas físicos y se pueden administrar de manera más flexible que las particiones tradicionales. Los LVs se utilizan como bloques de construcción para montar sistemas de archivos, volúmenes de intercambio (swap), entre otros usos de almacenamiento en Linux.
En resumen, PVs son dispositivos de almacenamiento físico, mientras que LVs son volúmenes lógicos que se crean utilizando PVs. Juntos, forman la infraestructura de almacenamiento gestionada por LVM en sistemas Linux.
-
-
Conexiones TCP
Las conexiones TCP (Transmission Control Protocol) son conexiones de red establecidas entre dos dispositivos en una red que utilizan el protocolo TCP para comunicarse entre sí de manera confiable y orientada a la conexión. TCP es uno de los protocolos fundamentales en el modelo de referencia de interconexión de sistemas abiertos (OSI), en la capa de transporte.
Entonces: las conexiones TCP con SSH (Secure Shell) son conexiones de red establecidas utilizando el protocolo TCP y se emplean para establecer sesiones seguras entre dos dispositivos en una red.
El comando
ss -ta | grep ESTAB | wc -l
se utiliza para contar el número de conexiones TCP establecidas en el sistema. Aquí está una explicación detallada de cada parte del comando:ss -ta
: Este comandoss
muestra información sobre los sockets. Con el flagta
, estamos filtrando para mostrar solo las conexiones TCP establecidas.grep ESTAB
: Utilizamosgrep
para filtrar las líneas que contienen "ESTAB", que indica que la conexión está establecida.wc -l
: Este comando cuenta el número de líneas que se pasan a través de él. En este caso, contará el número de conexiones TCP establecidas que se han filtrado previamente.
En resumen, el comando
ss -ta | grep ESTAB | wc -l
nos proporciona el número total de conexiones TCP establecidas en el sistema en un momento dado. -
Número de usuarios
El comando
users | wc -w
se utiliza para contar el número de usuarios actualmente conectados al sistema. Aquí está una explicación de cada parte del comando:users
: Este comando muestra los nombres de usuario de las personas que están actualmente conectadas al sistema.|
: Es un operador de tubería que redirige la salida del comando anterior como entrada al siguiente comando.wc -w
: El comandowc
(word count) se utiliza para contar palabras en la entrada que recibe. Con el flagw
,wc
contará el número de palabras que se le pasan a través de la tubería.
En resumen,
users | wc -w
nos proporciona el número de usuarios que están actualmente conectados al sistema. -
Dirección IP y MAC
-
Conseguir la dirección ip del dispositivo:
hostname -I
-
ip link
: Este comando muestra información sobre las interfaces de red del sistema. -
|
: Es un operador de tubería que redirige la salida del comando anterior como entrada al siguiente comando. -
grep "link/ether"
: Utilizamosgrep
para filtrar las líneas que contienen la cadena "link/ether", que es la línea que contiene la dirección MAC. -
awk '{print $2}'
: El comandoawk
se utiliza para procesar y manipular datos de texto. Con{print $2}
, estamos especificando que solo queremos imprimir la segunda columna de la salida degrep
, que es la dirección MAC.
En resumen, el comando
ip link | grep "link/ether" | awk '{print $2}'
nos proporciona la dirección MAC de la interfaz de red del sistema. -
-
Número de comandos ejecutados con sudo
El comando
journalctl _COMM=sudo | grep COMMAND | wc -l
se utiliza para contar el número de comandos que se ejecutan consudo
y se registran en los registros del sistema. Aquí está una explicación detallada de cada parte del comando:-
journalctl _COMM=sudo
: Este comandojournalctl
se utiliza para mostrar y administrar los registros del sistema.Con
_COMM=sudo
, estamos filtrando los registros para mostrar solo aquellos relacionados con comandos ejecutados consudo
. -
|
: Es un operador de tubería que redirige la salida del comando anterior como entrada al siguiente comando. -
grep COMMAND
: Utilizamosgrep
para filtrar las líneas que contienen la palabra "COMMAND", lo que nos permite seleccionar solo las líneas que representan comandos ejecutados. -
wc -l
: El comandowc
(word count) se utiliza para contar las líneas en la entrada que recibe. Con el flagl
,wc
contará el número de líneas que se le pasan a través de la tubería.
En resumen, el comando
journalctl _COMM=sudo | grep COMMAND | wc -l
nos proporciona el número total de comandos ejecutados consudo
y registrados en los registros del sistema. -
-
Resultado del script
##!/bin/bash
# System Architecture
architecture=$(uname -a)
# Physical CPUs
physical_cpus=$(grep "physical id" /proc/cpuinfo | wc -l)
# Virtual CPUs
virtual_cpus=$(grep "processor" /proc/cpuinfo | wc -l)
# RAM Usage
ram_total=$(free --mega | awk '$1 == "Mem:" {print $2}')
ram_used=$(free --mega | awk '$1 == "Mem:" {print $3}')
ram_percentage=$(free --mega | awk '$1 == "Mem:" {printf("%.2f"), $3/$2*100}')
# Disk Usage
disk_total=$(df -m | grep "/dev/" | grep -v "/boot" | awk '{total += $2} END {printf ("%.1fGb\n"), total/1024}')
disk_used=$(df -m | grep "/dev/" | grep -v "/boot" | awk '{used += $3} END {print used}')
disk_percentage=$(df -m | grep "/dev/" | grep -v "/boot" | awk '{used += $3} {total+= $2} END {printf("%d"), used/total*100}')
# CPU Load
cpu_load=$(vmstat 1 2 | tail -1 | awk '{printf $15}')
cpu_occupied=$(expr 100 - $cpu_load)
cpu_final=$(printf "%.1f" $cpu_occupied)
# Last System Boot
last_boot=$(who -b | awk '$1 == "system" {print $3 " " $4}')
# LVM Usage
lvm_usage=$(if [ $(lsblk | grep "lvm" | wc -l) -gt 0 ]; then echo yes; else echo no; fi)
# TCP Connections
tcp_connections=$(ss -ta | grep ESTAB | wc -l)
# User Logins
user_logins=$(users | wc -w)
# Network
ip=$(hostname -I)
mac=$(ip link | grep "link/ether" | awk '{print $2}')
# Sudo
sudo_commands=$(journalctl _COMM=sudo | grep COMMAND | wc -l)
# Send message to all users
wall "
================================
SYSTEM INFORMATION
--------------------------------
- Architecture: $architecture
- Physical CPUs: $physical_cpus
- Virtual CPUs: $virtual_cpus
- RAM Usage: $ram_used/${ram_total}MB ($ram_percentage%)
- Disk Usage: $disk_used/${disk_total} ($disk_percentage%)
- CPU Load: $cpu_final%
- Last System Boot: $last_boot
- LVM Usage: $lvm_usage
- TCP Connections: $tcp_connections ESTABLISHED
- User Logins: $user_logins
- Network: IP $ip ($mac)
- Sudo Commands: $sudo_commands commands
================================
"
- ARCH: Obtiene y almacena la arquitectura del sistema usando
uname -a
. - CPU PHYSICAL: Cuenta el número de IDs físicos de CPU utilizando
grep
ywc
. - CPU VIRTUAL: Cuenta el número de procesadores virtuales utilizando
grep
ywc
. - RAM: Obtiene y almacena la cantidad total de RAM, la cantidad utilizada y el porcentaje utilizado utilizando el comando
free
y el comandoawk
. - DISK: Obtiene y almacena la cantidad total y utilizada de espacio en disco, así como el porcentaje utilizado utilizando
df
,grep
yawk
. - CPU LOAD: Calcula la carga promedio de la CPU utilizando
vmstat
,tail
yawk
. - LAST BOOT: Obtiene y almacena la fecha y hora del último inicio del sistema utilizando
who -b
yawk
. - LVM USE: Comprueba si LVM está en uso en el sistema utilizando
lsblk
,grep
y un condicional en shell. - TCP CONNEXIONS: Cuenta el número de conexiones TCP establecidas utilizando
ss
ygrep
. - USER LOG: Cuenta el número de usuarios conectados utilizando
users
ywc
. - NETWORK: Obtiene y almacena la dirección IP y la dirección MAC de la máquina utilizando
hostname -I
yip link
. - SUDO: Cuenta el número de comandos sudo ejecutados utilizando
journalctl
ygrep
. - WALL: Envía un mensaje a todos los usuarios del sistema mostrando la información recopilada.
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
.
Crontab: Es una utilidad en sistemas Unix y Unix-like que se utiliza para programar tareas que se ejecutan de forma periódica en segundo plano. Estas tareas pueden ser comandos simples, scripts o cualquier otra operación que desees automatizar en tu sistema. Es un administrador de procesos en segundo plano.
Archivo crontab: Es un archivo de texto plano que contiene las instrucciones para el programa crontab. Cada usuario puede tener su propio archivo crontab, donde puede programar tareas que se ejecutarán bajo su cuenta de usuario. También hay un archivo crontab para el usuario root, que puede contener tareas que se ejecutan con privilegios de superusuario.
Sintaxis de crontab: Cada línea en el archivo crontab sigue un formato específico. Hay cinco campos separados por espacios que especifican cuándo se debe ejecutar una tarea:
- Minutos (0-59)
- Horas (0-23)
- Día del mes (1-31)
- Mes (1-12 o nombres de los meses)
- Día de la semana (0-7 o nombres de los días de la semana, donde 0 y 7 representan domingo)
Para programar una tarea, debes escribir estos campos en el orden mencionado, seguidos por el comando que deseas ejecutar. Además, puedes utilizar asteriscos (*) para indicar "cada" en cada campo, o puedes especificar intervalos, listas o rangos de valores.
Por ejemplo, la línea */10 * * * * sh /ruta_del_script
significa:
- Se ejecuta cada 10 minutos (
/10
) en cualquier hora (**), cualquier día del mes (**
), cualquier mes (**), y cualquier día de la semana (**
). - El comando a ejecutar es
sh /ruta_del_script
, dondesh
es el intérprete de comandos que se utilizará y/ruta_del_script
es la ubicación del script que deseas ejecutar. */10
indica que el comando debe ejecutarse en intervalos de 10 minutos. Si solo se pon, entonces se ejecutaría solo a los minutos 10 de cada hora.
Al agregar esta línea al archivo crontab y guardar los cambios, el script se ejecutará automáticamente cada 10 minutos según la programación especificada.
-
Para garantizar la integridad de nuestros archivos, es esencial comprender cómo funcionan los comandos que utilizamos. Uno de ellos es
shasum
, una herramienta poderosa para verificar la integridad de los archivos mediante el cálculo de la suma de comprobación del hash SHA-1. Pero, ¿qué significa eso exactamente?Imagina que cada archivo tiene una huella digital única. Esta huella digital se calcula utilizando un algoritmo específico, en este caso, SHA-1. Cuando ejecutas
shasum nombremaquina.vmdk
, estás instruyendo al sistema para que calcule la huella digital del archivo "Virtual Disk.vmdk" utilizando el algoritmo SHA-1.Esta huella digital, o firma, es como una firma única para ese archivo en particular. Si el contenido del archivo cambia, por más mínimo que sea, la firma también cambiará. Por lo tanto, al calcular la firma de un archivo en un momento específico, puedes estar seguro de que cualquier cambio en el archivo se reflejará en una firma diferente.
Ahora, es importante recordar que una vez que encendemos la máquina virtual o realizamos cambios en ella, la firma del archivo puede cambiar. Por eso es crucial que apaguemos la máquina antes de calcular la firma. Además, debemos asegurarnos de no volver a abrir la máquina después de calcular la firma, ya que cualquier modificación podría alterar la firma.
Una práctica recomendada para realizar correcciones sin comprometer la integridad de los archivos es clonar la máquina virtual. Al clonarla, podemos realizar cambios sin temor a que la firma del archivo original se vea afectada. Esto garantiza que nuestra firma permanezca constante y confiable para su posterior inclusión en nuestro archivo "signature.txt" y su carga en el repositorio de la intranet.
En resumen,
shasum
es una herramienta valiosa que nos permite verificar la integridad de nuestros archivos mediante el cálculo de una firma única. Al comprender su funcionamiento y seguir buenas prácticas, podemos mantener la integridad de nuestros datos y archivos de manera efectiva.
Esto debe de guardarse en el signature.txt que a su vez se debe subir al repositorio de entrega.
- Para hacer este paso la MV debe estar apagada y no volver a abrirlo hasta la evaluacióncha
Clona tu MV para las tres evaluaciones y un 3 para que vayas testeando cosas sin tocar el original, con el comando
cp -r Born2beroot.vmwarevm nombre_copy.vmwaremv
para comprobar el shasum seria de esta manera
Tenemos que incluir estas MMVV en VMwatre. opcion de window
→ virtual machine library
simplemente hacemos open .
en donde comprobamos el shasum
y arrastramos a la ventana que de la VMware
Al arrastrarlo, tendremos que cambiar el nombre de la MV agregada
simplemente hacemos referencias con los nombres que queramos
Hemos abierto el copy_3
que tiene como nombre test
, y al entrar a el se ha modificado, entonces en este podemos testear mientras esperamos las evaluaciones.
Guardar el resultado del shasum
en el .txt
en tu repositorio
El comando
head -n 2 /etc/os-release
se utiliza en sistemas Linux para mostrar las primeras dos líneas del archivo/etc/os-release
. Este archivo proporciona información sobre la distribución y la versión del sistema operativo en el que está instalado.
El comando
/usr/sbin/aa-status
se utiliza en sistemas Linux que tienen instalado el paquete AppArmor. Este comando se utiliza para verificar el estado actual de AppArmor, un sistema de seguridad de acceso obligatorio (MAC) para el control de acceso a programas.
Cuando se ejecuta aa-status
, proporciona información sobre el estado de los perfiles de AppArmor cargados, incluidos los perfiles activos, inactivos y no aplicados, así como también información sobre los procesos que están siendo gestionados por AppArmor.
- La línea "apparmor module is loaded." indica que el módulo de AppArmor está cargado en el kernel del sistema, lo que significa que AppArmor está activo y funcionando.
- Hay 7 perfiles de AppArmor cargados.
- Todos los 7 perfiles están en modo de aplicación (enforce mode), lo que significa que se están aplicando restricciones de seguridad según lo definido por estos perfiles.
- Se muestra una lista de los perfiles en modo de aplicación, que incluyen:
/usr/lib/NetworkManager/nm-dhcp-client.action
/usr/lib/NetworkManager/nm-dhcp-helper
/usr/lib/connman/scripts/dhclient-script
/sbin/dhclient
y/usr/sbin/dhclient
lsb_release
nvidia_modprobe
ynvidia_modprobe//kmod
- No hay perfiles en modo de queja (complain mode) o en modo de matar (kill mode).
- No hay perfiles en modo sin restricciones (unconfined mode).
- Hay un proceso que tiene un perfil definido, que es
/usr/sbin/dhclient
y está en modo de aplicación (enforce mode).
En resumen, este informe indica que AppArmor está activo y aplicando restricciones de seguridad a los procesos especificados por los perfiles cargados en el sistema.
El comando ss -tulp
se utiliza para mostrar las conexiones de red y los puertos en escucha en un sistema Linux. Aquí está el significado de cada parte del comando:
ss
: Es una herramienta de línea de comandos utilizada para obtener información sobre las conexiones de red, los sockets y la tabla de enrutamiento en Linux.t
: Este argumento indica que solo se mostrarán las conexiones TCP.u
: Este argumento indica que solo se mostrarán las conexiones UDP.l
: Este argumento indica que solo se mostrarán los puertos en escucha (listening ports).p
: Este argumento muestra el proceso que está utilizando cada conexión o puerto.
Cuando ejecutas ss -tulp
, obtendrás una lista de las conexiones TCP y los puertos en escucha, junto con el proceso que está utilizando cada uno de ellos.
Necesitamos que sea la opción manual para poder crear las particiones primarias, extendidas y lógicas.
Descripción breve de todos los tipos de particiones:
◦ Primaria: La única partición en la que puede estar instalada un SO. Solo puede haber 4 particiones primarias por disco duro o 3 primarias y una extendida.
◦ Secundario/Extendida: Fue ideada para romper la limitación de 4 particiones primarias en un solo disco físico. Solo puede existir una partición de este tipo por disco, y solo sirve para contener particiones lógicas.
◦ Lógica: Ocupa una porción de la partición extendida/primaria o la totalidad de la misma, la cual se ha formateado con un tipo específico de sistema de archivos (en nuestro caso usaremos ext4) y se le ha asignado una unidad, así el sistema operativo reconoce las particiones lógicas o su sistema de archivos. Puede haber un máximo de 23 particiones lógicas en una partición extendida, sin embargo, Linux, el SO con el que trabajamos actualmente, lo reduce a 15, más que suficientes para realizar este proyecto.
Creamos el sd1 de tamaño 500M y tendremos que elegir la opción de localización para la nueva partición en 'Beginning' del disco. Modificamos el punto de montaje a que sea Boot y continuaremos
Ahora debemos crear una partición lógica con todo el espacio disponible del disco (max), que no tenga punto de montaje y que esté encriptada (la extendida)
Ahora pasaremos a encriptar los volumne tal como pide el subject:
y tenemos que Crear el volumen encriptado, que en este caso es el no montado
En este caso ya esta encriptado, si es la primera vex saldria ext4 y no crypto, pero se veria asi por primera vez
Aceptamos el mensaje de confirmación. Nos comenta que se encriptara todo lo que hay dentro de la partición y que no debe tardar mucho en terminar.
Nos da igual si tarda mucho o poco, le damos a cancel, ya que no hay nada que encriptar, debido a que la partición está vacía. Y pondremos la contaseña para encriptarla
Pasamos a configurar los volumenes logicos
Guardaremos los cambios realizados previamente, es como usar w
podemos ver el proceso de los cambiios que vamos haciendo a los volumenes con la opcion de display
En este caso, ya está encriptado. Si es la primera vez, aparecería ext4 y no crypto, pero se vería así por primera vez:
Aceptamos el mensaje de confirmación. Nos indica que se encriptará todo lo que hay dentro de la partición y que no debería tardar mucho en terminar.
No importa si tarda mucho o poco, le damos a cancelar, ya que no hay nada que encriptar, debido a que la partición está vacía. Luego, ingresaremos la contraseña para encriptarla.
Pasamos a configurar los volúmenes lógicos.
Guardaremos los cambios realizados previamente, es como usar w.
Podemos ver el proceso de los cambios que vamos haciendo a los volúmenes con la opción de display.
Crearemos un nuevo grupo de volumen. Los grupos de volúmenes agrupan particiones. como sale en el subject LVMGroup-xxx, en nuestro caso la partición tenemos que agrupar el sda5_crypt que es la que hemos encriptado
El LVM (Gestor de volúmenes lógicos, Logical Volume Manager) es una de mis funcionalidades preferidas en Linux.
Entonces, creamos el volumen lógico. Seleccionamos el grupo con el nombre de 'root' y le añadimos un tamaño de 10G.
Creamos otro volumen lógico con el mismo grupo con el nombre de swap de tamaño 2.3g
Creamos otro volumen lógico con el mismo grupo con el nombre de ‘home’ de tamaño 5g
Creamos otro volumen lógico con el mismo grupo con el nombre de var de tamaño 3g
Creamos otro volumen lógico con el mismo grupo con el nombre de srv de tamaño 3g
Creamos otro volumen lógico con el mismo grupo con el nombre de tmp de tamaño 3g
Creamos otro volumen lógico con el mismo grupo con el nombre de var-log de tamaño 4g
Resumen de lo que acabas de crear dando a Display
Podemos observar los cambios realizados a los volúmenes utilizando la opción "display".
Primero, crearemos un nuevo grupo de volúmenes. Estos grupos agrupan particiones, como se indica en el subject LVMGroup-xxx. En nuestro caso, debemos agrupar la partición sda5_crypt, que es la que hemos encriptado.
El LVM (Gestor de volúmenes lógicos, Logical Volume Manager) es una de mis funcionalidades preferidas en Linux.
A continuación, creamos el volumen lógico. Seleccionamos el grupo con el nombre 'root' y le asignamos un tamaño de 10G.
Creamos otro volumen lógico en el mismo grupo con el nombre 'swap' y un tamaño de 2.3G.
Creamos otros volúmenes lógicos en el mismo grupo con los siguientes nombres y tamaños:
- 'home' con un tamaño de 5G
- 'var' con un tamaño de 3G
- 'srv' con un tamaño de 3G
- 'tmp' con un tamaño de 3G
- 'var-log' con un tamaño de 4G
Para finalizar, puedes ver un resumen de lo que acabas de crear seleccionando "Display".
Ahora podemos observar cómo en el apartado donde nos muestran todas nuestras particiones y espacio libre ya aparecen todas las particiones lógicas que acabamos de crear.
Debemos configurar todas para seleccionar el sistema de archivos que queremos y el punto de montaje que indica el subject. De nuevo iremos por orden y seleccionaremos la primera que nos aparece que es home
.
Nos muestra la configuración de la partición. Debemos escoger un sistema de ficheros ya que actualmente no tiene. y tenemos que darle de tipo ext4
Primero, seleccionamos "home" como el punto de montaje y luego hacemos clic en "Done".
Repetimos el proceso para los siguientes puntos de montaje:
- "root" con el sistema de archivos ext4 y el punto de montaje en "/"
- "srv" con el sistema de archivos ext4 y el punto de montaje en "/srv"
- "swap" con el sistema de archivos swap
- "tmp" con el sistema de archivos ext4 y el punto de montaje en "tmp"
- "var" con el sistema de archivos ext4 y el punto de montaje en "var"
- "var-log" con el sistema de archivos ext4 y el punto de montaje en "var/log"
Después de seleccionar cada punto de montaje, hacemos clic en "Done".
Acepta el mensaje y así se guardarán los cambios. Asegúrate de que todas las particiones quedan tal como se solicita.
continuaremos con la instalación previa.
Una máquina virtual es como una computadora dentro de otra computadora. Utiliza un programa especial para dividir los recursos de la computadora principal y crear un entorno separado donde puedes instalar y ejecutar diferentes sistemas operativos y programas. Es útil para probar software, ejecutar programas incompatibles o experimentar de forma segura sin afectar tu computadora principal.
Por recomendación, si no has manejado previamente alguna distribución de SO se recomenda Debian. En mi caso, no es la primera vez que instalo un SO como Debian o otro SO.
Debian se usa en variedad de entornos , donde su estabilidad y la filosofía de software libre. Es inestable cuando hay versiones nuevas . Uso gestión de paquetes at y UFW con gestor de firewall
Rocky linux es para el mundo empresarial y organizaciones. Tiene compatibilidad con aplicaciones y servicios desarrollados para Red Hat Enterprise Linux. Mas estable al sacar nuevas versiones cada much tiempo. Gestión de paquetes yum/dnf y FirewallD como gestor de Firewall.
Las máquinas virtuales son entornos virtuales que permiten ejecutar múltiples sistemas operativos y aplicaciones en un solo hardware. Son útiles para optimizar recursos, consolidar infraestructuras y proporcionar seguridad a través del aislamiento de procesos.
README Advanced Packaging Tool
- Interfaz de usuario:
apt
ofrece una interfaz de línea de comandos básica, mientras queaptitude
ofrece una interfaz más visual e interactiva. - Resolución de conflictos: Cuando hay conflictos de paquetes,
apt
no resuelve el problema automáticamente, mientras queaptitude
sugiere posibles soluciones para resolverlo. - Registro de cambios:
aptitude
puede mostrar interactivamente el registro de cambios de Debian para todos los paquetes disponibles. - Facilidad de uso para principiantes:
aptitude
es más amigable para los principiantes, ya que ofrece una capa de abstracción sobre los diferentes subcomandos, lo que puede resultar más fácil de manejar queapt
, que requiere más conocimientos de línea de comandos y administración de sistemas Linux.
AppArmor es un sistema de seguridad para Linux que controla el acceso de las aplicaciones a recursos del sistema, como archivos y puertos de red, mediante perfiles de seguridad. Ayuda a proteger contra vulnerabilidades y ataques. (mecanismo de control de acceso)
-
Interfaz gráfica
Comprobar que no haya ninguna interfaz gráfica en uso.
ls /usr/bin/*session
-
Uso del UFW uncomplicated Firewall
Comprobar si el UFW esta activo.
sudo ufw status
Comprobar el servicio del ufw
-
SSH secure shell
Necesitamos comprobar el status del ssh
sudo service ssh status
-
Seguro que estas utilizando SO Debian?
uname -v
ouname —kernel-version
-
Agregaste correctamente tu usuario al grupo sudo y user42?
La palabra "getent" es una abreviatura de "get entries". En el contexto del comando
getent
en sistemas Unix y Unix-like, significa obtener las entradas o información de una base de datos del sistema. El comando se utiliza para recuperar información de bases de datos de sistemas como/etc/passwd
,/etc/group
,/etc/hosts
y otros.Usa los comandos
getent group sudo
ygetent group user42
Normativa de contraseñas
- En
vim /etc/login.defs
: Este archivo contiene la configuración predeterminada del sistema para el inicio de sesión de usuarios. Algunas de las configuraciones comunes:- La expiración de contraseña
- Número de días permitido antes de modificar la contraseña
- El aviso al user antes de que expire su contraseña
- En
vim /etc/pam.d/common-password
: PAM (Pluggable Authentication Modules) es un sistema flexible para la autenticación en sistemas Unix/Linux. Este archivo especifica la configuración de los módulos de autenticación utilizados para verificar las contraseñas de los usuarios durante el inicio de sesión.- Longitud mínimo 10
- Contener una mayúscula
- Contener un número
- No puede tener mas de 3 veces consecutivas el mismo carácter
- No puede contener el nombre del user
- La contraseña del root como mínimo 7 caracteres que no sean de la antigua contraseña
- Esta política de contraseña se aplica en el root
- En
-
Te acuerdas de crear un user?
sudo adduser nameUser
y luego la contraseña requerida (con las políticas agregadas) -
Te acuerdas de crear un grupo?
sudo addgroup evaluating
-
Recuerdas cómo agregar el nuevo user al nuevo grupo?
sudo adduser nameUser evaluating
Comprobar el comando
getent group evaluating
- Por qué esta se implementa esta politica de contraseñas y cuales son sus ventajas y desventajas
- Ventajas de esta politica de contraseñas
- Están diseñadas para mejorar la seguridad de tu sistema al imponer requisitos específicos en las contraseñas de los usuarios.
- Ventajas de esta politica de contraseñas
- Ventajas de la implementación:
- Mayor seguridad
- Protección contra ataques de diccionario
- Protección contra reutilización de contraseñas antiguas
- Cumplimiento de estándares de seguridad
- Desventajas de la implementación:
- Posible complejidad para los usuarios
- Bloqueo de usuarios legítimos
- Posible resistencia a la implementación
- Posibles problemas de usabilidad
- Por qué esta se implementa esta politica de contraseñas y cuales son sus ventajas y desventajas
-
Obtener el nombre del hostname
hostname
-
Modificar el hostname por otro nombre.
Reemplazamos el nombre por el nuevo
sudo vim /etc/hostname
Reemplazamos nuevamente por el nuevo nombre
sudo vim /etc/hosts
usamos
sudo reboot
comprobamos los cambios usando
hostname
-
Ver las particiones del SO
lsblk
"list block devices" (listar dispositivos de bloque):podemos ver las particiones que tiene el discoCómo funciona LVM?
Qué es LVM (Administrador de Volúmenes Lógicos) es una tecnología que permite gestionar el almacenamiento en sistemas Linux de manera flexible. Se basa en tres conceptos principales:
- Volúmenes físicos (PV): Son los discos duros o particiones que se agregan al sistema de LVM.
- Grupos de volúmenes (VG): Agrupan uno o más volúmenes físicos y actúan como reservorios de almacenamiento.
- Volúmenes lógicos (LV): Son unidades de almacenamiento virtuales creadas dentro de los grupos de volúmenes. Se pueden redimensionar fácilmente.
LVM permite gestionar el espacio de almacenamiento de manera dinámica, facilitando la gestión de particiones y la asignación de espacio sin necesidad de interrumpir el sistema.
dpkg
es una herramienta de línea de comandos que permite instalar, configurar y gestionar paquetes de software en un sistema Debian. Permite instalar paquetes individuales, mostrar información sobre paquetes instalados, realizar actualizaciones y eliminar paquetes del sistema.
-
Tienes SUDO instalado?
sudo -V
dpkg -s sudo
which sudo
para ver dónde esta instalado. -
Agregamos el nuevo user a sudo
sudo adduser nameUser sudo
para comprobarlo
getent group sudo
-
Comprobamos las reglas del subject
Puedes hacer un ejemplo de fallar la contraseña de sudo para que salte el mensaje personalizado por ejemplo:
sudo uwf status
usamos cat o vim. Yo lo he llamado sudo_config
vim /etc/sudoers.d/sudo_config
passwd_tries=3
: Limita el número de intentos de contraseña para autenticación.badpass_message="Oh, no. Happens & try again!"
: Define el mensaje mostrado al ingresar una contraseña incorrecta.logfile="/var/log/sudo/sudo_config"
: Especifica la ubicación del archivo de registro de sudo.log_input, log_output
: Registra tanto la entrada como la salida de los comandos ejecutados con sudo.iolog_dir="/var/log/sudo"
: Define el directorio para almacenar registros detallados de entrada/salida.requiretty
: Requiere un terminal asociado para el uso de sudo. Esta línea requiere que un pseudo-terminal (tty) esté asociado con el proceso sudo. Esto es útil para asegurar que sudo solo pueda ser utilizado desde la línea de comandos interactiva y no desde scripts o procesos automatizados.secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
: Define las rutas seguras para la ejecución de comandos con sudo.
-
El historial del uso del comando sudo
Vamos al lugar con
cd /var/log/sudo
usamosls
y luegocat sudo_config
Usamos un comando con sudo y miramos el fichero
al usar el
cat sudo_config
-
Comprobamos el UFW y funciona
dpkg -s ufw
sudo service ufw status
-
Listar las reglas de UFW
sudo ufw status
espacio de direccionamiento de Internet IPv4, IPv4 soporta 4,294,967,296 (232)
Pv6 ofrece 3.4 x 1038 (2128) direcciones, un número similar a 6.67126144781401e+23 direcciones IP por cada metro cuadrado sobre la superficie de la Tierra
-
Cómo creamos puertos y las eliminamos?
sudo ufw allow XXXX
para crear el puertosudo ufw status numered
y luegosudo ufw delete XXXX
para listar y eliminar el puertosudo ufw status
para ver los puertos -
Comprobar el servicio de ssh esta bien y los puertos que piden
whinitich ssh
sudo service ssh status
-
Sabemos conectarnos por ssh con el nuevo user creado, y que no se pueda con el root
ssh -p 4242 newUser@tu_ip
-
modificamos el script de 10 a 1
sudo crontab -u root -e
/1 -
Stop script
sudo /etc/init.d/cron stop
para volver a ejecutarse
sudo /etc/init.d/cron start