Knoppia

Wiki de Informática y otras historias

Herramientas de usuario

Herramientas del sitio


master_cs:fortificacion:p3

[Fort]Práctica 3: Securizando Aplicaciones

1. Abre un navegador y realiza una descarga

Revisa con el TOP el consumo de CPU

Firefox (Proceso 110216) está consumiendo en torno al 60% de la CPU como podemos ver en la siguiente captura:

Usa cpulimit para reducir el consumo de CPU a 1/5 del que usa

Para realizar esto ejecutaremos los siguientes comandos:

cd /sys/fs/cgroup/ 
mkdir firefox #Creamos el cgroup para firefox
cd firefox

Tras eso añadimos firefox al cgroup y procedemos a limitar su consumo de CPU

echo 110216 > cgroup.procs#Metemos el proceso de firefox en el cgroup
echo 200000 1000000 > cpu.max #Limitamos el uso de CPU al 20%

Resultado

Como se puede observar, el consumo ha bajado y ahora consume un 20% máximo.

2. Crea un container Debian y arráncalo

Para arrancar un container debian usamos el siguiente comando:

lxc-create -t debian -n deb

Establece una contraseña para el usuario root del container

Para ello debemos entrar primero a la máquina con el siguiente comando para abrir la terminal del contenedor:

lxc-start #Arrancamos la máquina
lxc-attach -n deb /bin/sh #Llamamos a la terminal

Tras eso procedemos a establecer la contraseña del root con el siguiente comando:

passwd root

Añade 3 usuarios

Desde el mismo sitio que hemos establecido la contraseña para el root procedemos a crear los 3 usuarios:

su - root
useradd -m -s /bin/bash usuario1
useradd -m -s /bin/bash usuario2
useradd -m -s /bin/bash usuario3

Instala apache 2 y ssh en el container

Comenzamos instalando apache 2:

Tras eso procedemos a instalar SSH:

Cambia la dirección de red en el container para usar una dirección de red estática

Para establecer una IP estática usamos el siguiente comando:

sudo ifconfig eth0 10.0.3.68 netmask 255.255.255.0 up

Cambial el puerto de SSH al 222

Vamos a la ruta /etc/ssh y modificamos el archivo sshd_config:

Modifica el archivo de configuración del container

3. Crea un cgroup

Creamos un nuevo csgroup con el siguiente comando:

cd /sys/fs/cgroup/
mkdir grupo #Creamos el nuevo cgroup
cd grupo

Abre un terminal y añade el shell de este al cgroup

echo $$ #Obtenemos el ID del proceso del Shell (En este caso 1709)
echo 1709 > cgroup.procs #Añadimos el proceso del shell al gproup

Desde ese mismo shell abre firefox y atril

Revisa el contenido de cgroup.procs y memory.current

Pon un 1 en cgroups.freeze ¿Que pasa? ¿Que hay ahora en memory.current?

Los programas que abrimos antes quedan congelados. El contenido de memory.current es ahora este:

Este valor que podemos observar es la memoria consumida por los procesos de cgroup en bytes. Ahora el valor parece ser superior al que vimos anteriormente. Tras esto descongelamos el proceso poniendo un 0 en groups.freeze

Pon los valores 30000 100000 en cpu.max ¿Que pasa?

Estamos limitando cuanto pueden consumir los procesos del cgroup, en este caso estamos limitando los procesos a un 30%

4. Crea una copia de ls, llámala listar y crea un perfil de apparmor vacío para ella

aa-easyprof /usr/bin/listar #Creamos archivo de configuración plantillaque debemos editar
aa-easyprof /usr/bin/listar > /etc/apparmor.d/usr.bin.listar #Copiamos el archivo generado al apparmor
nano /etc/apparmor.d/usr.bin.listar

Editamos el archivo añadiendo las reglas de denegación debajo de “# No read paths specified”

Tras eso parseamos el archivo modificado para apparmor y habilitamos la política con enforce:

apparmor_parser -r /etc/apparmor.d/usr.bin.listar
aa-enforce /usr/bin/listar

¿Que pasa cuando se usa listar para mostrar /etc?

Nos sale que no tenemos permisos para ver el directorio

¿Que pasa cuando usas -l con otros directorios?

Se muestran pero sin nombres de usuario al que pertenecen ni grupos:

master_cs/fortificacion/p3.txt · Última modificación: 2025/02/18 15:53 por thejuanvisu