Software">
Nothing Special   »   [go: up one dir, main page]

AGUILAR MORALES GUADALUPE ALEJANDRO Fortificacion de Un Entorno Linux 1020

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

Seguridad en Sistemas Operativos Propietarios (MEXMASI) -

Octubre 2022

Actividad grupal: Fortificación de un sistema Linux

Profesor: Wilmer Efrén Pereira


Alumnos:
 Aguilar Morales Guadalupe Alejandro
Fecha: 20 de Diciembre de 2022,
Fecha última modificación 23/01/23
UNIR México | Universidad Internacional de La Rioja en México
Contenido

1. Introducción .............................................................................................. 2
1.1. Alcance .................................................................................................. 2
1.2. Referencias ............................................................................................ 2
1.3. Definiciones ........................................................................................... 3
2. Justificación de la Inversión....................................................................... 4
3. Equipos que componen la solución ........................................................... 4
a. Características de software y Hardware .................................................... 4
4. Desarrollo de la Actividad ......................................................................... 5
1. Introducción
Este documento tiene como objetivo proporcionar información técnica sobre la
implementación y configuración segura de una máquina virtual basada en VmWare y cuyo
sistema operativo será Ubuntu, para la empresa "Example". Está dirigido al personal
encargado de la administración de la infraestructura de seguridad de TI y redes de la
empresa, así como al personal encargado de la administración y control de cambios del
personal de administración de sistemas. El documento incluirá información sobre la
configuración de un sistema de seguridad basado en Linux para la empresa "Example" para
la fortificación o “Hardening”.

1.1. Alcance

El alcance del proyecto incluye la configuración de una máquina virtual con 4GB de RAM,
10GB de disco duro y una interfaz de red en modo NAT. El espacio de usuario, /home, debe
estar en un volumen lógico separado. Además, el proyecto incluye las siguientes
responsabilidades:

Implementación de un sistema de seguridad en red para proteger la máquina virtual


y los datos almacenados en ella.
Integración de herramientas de automatización para mejorar la eficiencia y la
productividad en el uso de la máquina virtual.
Creación de un sistema de backup y recuperación de datos para garantizar la
disponibilidad continúa de los datos almacenados en la máquina.

En resumen estos son los objetivos finales de esta implementación virtual que son los
objetivos finales de las tareas documentadas en este reporte.

1.2. Referencias

https://www.itzgeek.com/how-tos/linux/ubuntu-how-tos/how-to-install-ubuntu-22-04-lts.html

https://jumpcloud.com/blog/how-to-enable-full-disk-encryption-on-an-ubuntu-20-04-desktop
https://www.cyberithub.com/how-to-password-protect-grub-boot-loader-in-ubuntu-20-
04-lts/

https://jumpcloud.com/blog/how-to-encrypt-ubuntu-20-04-desktop-post-installation

https://averagelinuxuser.com/linux-partitioning-recommendations/
1.3. Definiciones
Para facilitar la lectura y comprensión de este documento, se consideran las siguientes
definiciones:
En lo personal yo uso el concepto de “hardening”.
“Hardening” es el proceso de fortalecimiento de la seguridad de un sistema, dispositivo o
aplicación mediante la eliminación de debilidades y la configuración de opciones de
seguridad. El objetivo del “hardening” es reducir los puntos de ataque potenciales y
aumentar la resistencia del sistema frente a ataques maliciosos. Esto se logra mediante la
eliminación de software o servicios innecesarios, la configuración de políticas de seguridad,
la implementación de medidas de seguridad adicionales y la realización de pruebas de
penetración para identificar y corregir debilidades. El “hardening” se aplica comúnmente a
sistemas operativos, aplicaciones y dispositivos de red, y es esencial para garantizar la
seguridad de los sistemas y proteger los datos confidenciales.

a) Securizar: es el proceso de garantizar la seguridad de un sistema, dispositivo o


aplicación mediante la implementación de medidas de seguridad adecuadas. El objetivo
de securizar es proteger los sistemas y los datos confidenciales contra ataques
maliciosos y garantizar la disponibilidad, integridad y confidencialidad de la información.

b) NAT (Network Address Translation) es una técnica utilizada para permitir que
dispositivos conectados a una red privada utilicen una dirección IP pública compartida
para acceder a Internet. NAT se utiliza comúnmente en redes de área local (LAN) para
permitir que varios dispositivos compartan una conexión a Internet con una sola
dirección IP pública.

c) OpenSSH: Es un conjunto de herramientas de seguridad de código abierto que


proporciona servicios de red seguros como SSH (Secure Shell), SCP (Secure Copy), SFTP
(Secure File Transfer Protocol) y rlogin. OpenSSH server es el componente del servidor
de OpenSSH que se instala en un sistema para permitir que los usuarios se conecten a
él de forma segura y realizar tareas remotas.

d) Iptables: es una herramienta de línea de comando utilizada para configurar el firewall


en sistemas operativos basados en Linux. Permite al administrador de sistemas
establecer reglas para controlar el tráfico de red entrante y saliente en un sistema.
e) Partición: en Linux es una porción de un disco duro que se utiliza como un sistema de
archivos independiente. Se representa mediante una letra de unidad asignada, como
sda1 o sdb2, y puede ser montada en un punto de montaje específico en el sistema de
archivos.

2. Justificación de la Inversión

La inversión en tecnología de la información puede ayudar a la empresa "Example" a


mejorar su operación y proporcionar una mejor experiencia a sus clientes. Los avances
tecnológicos pueden ayudar a simplificar y automatizar procesos, lo que puede reducir los
costos y mejorar la eficiencia. Sin embargo esto no es suficiente toda la información que
genera una empresa como puede ser datos confidenciales de sus clientes y proveedores,
información contable y financiera de la propia empresa, toda esta información debe
guardar los principios básicos de confidencialidad, integridad y disponibilidad.
Además, la tecnología también puede proporcionar una plataforma para ofrecer nuevos
servicios, lo que puede aumentar la satisfacción y la lealtad de los clientes, lo que puede
tener un impacto positivo en el rendimiento financiero de la empresa.

3. Equipos que componen la solución


a. Características de software y Hardware

Controladora
Características de Hardware Descripción
Producto LAPTOP
Marca (Fabricante) LENOVO
Modelo 20TD00J4US
Número de serie 12345
Peso máximo 3.5 Kg
Fuente de poder Externa
Almacenamiento 500 GB
Temperatura de Operación 10-25 C*
Características de Software Descripción
Sistema Operativo Windows 10 de Origen
4. Desarrollo de la Actividad
A. La máquina virtual debe tener 4GB de RAM, 10GB de disco duro y una interfaz de red en modo
NAT.
Cometarios o aclaraciones: Se crea una máquina virtual en Ubuntu con las características
solicitadas
B. El espacio de usuario, /home, debe estar en un volumen lógico separado.
Cometarios o aclaraciones: Desde la creación de la maquina se hace la partición solicitada
C. El disco duro debe estar cifrado con la clave: disc0Unir
Cometarios o aclaraciones: Abajo se observa como se cifra el disco según lo solicitado con la
contraseña.
Abajo se observa el disco ya encriptado con todos los volumenes
D. El usuario creado durante la instalación será unir con una clave SSSO0Unir
E. El grub debe estar protegido.
Cometarios o aclaraciones: Se hace la instalación de la aplicación grub y después se hace la
generación de la llave y
finalmente se prueba que al momento del arranque solicite la palabra clave
F. Securizar los comandos su y sudo
Se hace el aseguramiento de las funciones SUDO y SU
En la primera opción me equivoque intencionalmente y se hace la prueba con usuario unir y
con usuario privilegiado para ver diferencia
G. Se debe tener instalado OpenSSH server
H. Configurar IPTables para que solamente acepte conexiones a OpenSSH a través del puerto 22.
I. Los usuarios que van a trabajar en la máquina son del área de dirección y de
ingeniería. Crear un script que nos solicite el nombre de usuario, la contraseña, su
grupo (que si no existe se añadirá) y si es usuario administrador para permitirnos
crear usuarios en el sistema. Además, el script debe verificar si el usuario ya existe
en el sistema antes de darle de alta.
J. Usando el script anterior, crear el usuario Ingenieria01 no administrador con la
contraseña SSSO0Ing01 y otro Direccion01 con la contraseña SSSO0Dir01. Se debe
contemplar que se puedan añadir nuevos usuarios en el futuro.
K. Listar el fichero /etc/passwd para verificar que los usuarios existentes son los que
se han definidos
L. El usuario Ingenieria01 creará una carpeta que pertenezca a todos los usuarios del área
ingeniería y en la que puedan leer y escribir. A su vez, los usuarios del área de dirección
tendrán acceso de lectura al contenido ubicado en dicha carpeta.
M. Por último, se nos solicita montar un servidor proxy Squid con las siguientes características:
i. Evitar que los usuarios naveguen por sus correos personales de gmail.com, hotmail.com,
yahoo.com.
ii. Restringir que no se pueda navegar ningún día de la semana entre las 8 y las 10 de la mañana.
iii. Que los logs se almacenen en un fichero que se llame mensajes.log
iv. Instalar y configurar el navegador Firefox para usar el servidor Squid configurado y verificar que
se aplican correctamente las restricciones.
ARCHIVOS SCRIPT USADOS . El primer script es solicitado en la tarea.
El segundo script sirve para verificar automáticamente las carpetas de los usuarios
es extra
#!/bin/bash

# Función para agregar un usuario


add_user() {
read -p "Introduce el nombre del usuario: " username
if id "$username" >/dev/null 2>&1; then
echo "El usuario ya existe en el sistema."
return
fi
read -s -p "Introduce la contraseña del usuario: " password
echo
read -p "A qué grupo pertenece el usuario (Ingenieria/Direccion): " group
useradd -m -p "$(openssl passwd -1 "$password")" -g "$group" "$username"
if [[ "$username" == "Ingenieria01" ]]; then
read -p "¿Desea crear la carpeta compartida Ingenieria_carpeta_compartida? (s/n): " confirm
if [[ "$confirm" == "s" ]]; then
mkdir -p /home/Ingenieria_carpeta_compartida
chgrp -R "$group" /home/Ingenieria_carpeta_compartida
chmod -R 774 /home/Ingenieria_carpeta_compartida
fi
fi
read -p "¿El usuario tendrá permisos para crear más usuarios? (s/n): " create_permission
if [[ "$create_permission" == "s" ]]; then
usermod -aG sudo "$username"
fi
}

# Función para eliminar un usuario


delete_user() {
read -p "Introduce el nombre del usuario a eliminar: " username
if ! id "$username" >/dev/null 2>&1; then
echo "El usuario no existe en el sistema."
return
fi
userdel "$username"
}

# Función para cambiar la contraseña de un usuario


change_password() {
read -p "Introduce el nombre del usuario: " username
if ! id "$username" >/dev/null 2>&1; then
echo "El usuario no existe en el sistema."
return
fi
passwd "$username"
}

# Función para mostrar el contenido del archivo /etc/passwd


show_passwd() {
cat /etc/passwd
}

# Función para mostrar todos los usuarios, su grupo y permisos de lectura/escritura


show_all_users() {
awk -F: '{print $1 " pertenece al grupo " $4 " con permisos " $5 }' /etc/passwd
}

while true; do
echo "Menú de usuarios"
echo "1) Alta, baja y cambio de usuarios"
echo "2) Ver contenido de /etc/passwd"
echo "3) Mostrar todos los usuarios, su grupo y permisos de lectura/escritura"
read -p "Selecciona una opción: " option
case $option in
1)
echo "Menú de alta, baja y cambio de usuarios"
echo "A) Alta de usuario"
echo "B) Baja de usuario"
echo "C) Cambio de contraseña de usuario"
read -p "Selecciona una opción: " sub_option
case $sub_option in
A) add_user;;
B) delete_user;;
C) change_password;;
*) echo "Opción inválida";;
esac
;;
2) show_passwd;;
3) show_all_users;;
*) echo "Opción inválida";;
esac
done

#!/bin/bash

# Borrar el archivo temporal listatemporal.txt si existe


[ -f listatemporal.txt ] && rm listatemporal.txt

echo "Información de usuarios: $(date)" >> listatemporal.txt


echo "===========================================================" >>
listatemporal.txt
printf "%-15s %-15s %-20s %-20s %-20s\n" "Nombre de usuario" "Grupo principal" "Grupos adicionales"
"Privilegios" "Carpetas y subcarpetas asociadas" >> listatemporal.txt
echo "------------------------------------------------------------" >> listatemporal.txt

# Obtener una lista de todos los usuarios en el sistema


users=$(cut -d: -f1 /etc/passwd)

# Iterar sobre cada usuario


for user in $users; do

# Obtener el grupo principal del usuario


primary_group=$(id -gn $user)

# Obtener los grupos adicionales del usuario


additional_groups=$(id -Gn $user | sed "s/$primary_group //")

# Obtener los privilegios de administrador del usuario


if id -Gn $user | grep -q "root"; then
privileges="Administrador"
else
privileges="Usuario normal"
fi

# Obtener las carpetas y subcarpetas asociadas al usuario


home_dir=$(getent passwd $user | cut -d: -f6)
associated_folders=$(find $home_dir -type d)
# Imprimir información del usuario en formato tabular
printf "%-15s %-15s %-20s %-20s %-20s\n" "$user" "$primary_group" "$additional_groups" "$privileges"
"$associated_folders" >> listatemporal.txt
done

echo "===========================================================" >>


listatemporal.txt

# Mostrar el contenido del archivo temporal


cat listatemporal.txt

También podría gustarte