Muestra las diferencias entre dos versiones de la página.
Próxima revisión | Revisión previa | ||
master_cs:fortificacion:p3 [2025/02/18 13:57] – creado thejuanvisu | master_cs:fortificacion:p3 [2025/02/18 15:53] (actual) – thejuanvisu | ||
---|---|---|---|
Línea 1: | Línea 1: | ||
- | [Fort]Práctica 3: | + | ====== |
+ | |||
+ | ===== 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: | ||
+ | <code c> | ||
+ | cd / | ||
+ | mkdir firefox #Creamos el cgroup para firefox | ||
+ | cd firefox | ||
+ | </ | ||
+ | <WRAP column 100%> | ||
+ | {{: | ||
+ | </ | ||
+ | Tras eso añadimos firefox al cgroup y procedemos a limitar su consumo de CPU | ||
+ | <code c> | ||
+ | echo 110216 > cgroup.procs# | ||
+ | echo 200000 1000000 > cpu.max #Limitamos el uso de CPU al 20% | ||
+ | </ | ||
+ | <WRAP column 100%> | ||
+ | {{: | ||
+ | </ | ||
+ | ==== 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 | ||
+ | </ | ||
+ | <WRAP column 100%> | ||
+ | {{: | ||
+ | </ | ||
+ | |||
+ | 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: | ||
+ | <WRAP column 100%> | ||
+ | {{: | ||
+ | </ | ||
+ | |||
+ | Tras eso procedemos a instalar SSH: | ||
+ | |||
+ | <WRAP column 100%> | ||
+ | {{: | ||
+ | </ | ||
+ | ==== 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 / | ||
+ | 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: | ||
+ | <WRAP column 100%> | ||
+ | {{: | ||
+ | </ | ||
+ | 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? ==== | ||
+ | <WRAP column 100%> | ||
+ | {{: | ||
+ | </ | ||
+ | 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 ==== | ||
+ | <WRAP column 100%> | ||
+ | {{: | ||
+ | </ | ||
+ | <code c> | ||
+ | aa-easyprof / | ||
+ | aa-easyprof / | ||
+ | nano / | ||
+ | </ | ||
+ | Editamos el archivo añadiendo las reglas de denegación debajo de "# No read paths specified" | ||
+ | <WRAP column 100%> | ||
+ | {{: | ||
+ | </ | ||
+ | Tras eso parseamos el archivo modificado para apparmor y habilitamos la política con enforce: | ||
+ | < | ||
+ | apparmor_parser -r / | ||
+ | aa-enforce / | ||
+ | </ | ||
+ | |||
+ | === ¿Que pasa cuando se usa listar para mostrar /etc? === | ||
+ | |||
+ | Nos sale que no tenemos permisos para ver el directorio | ||
+ | <WRAP column 100%> | ||
+ | {{: | ||
+ | </ | ||
+ | === ¿Que pasa cuando usas -l con otros directorios? | ||
+ | |||
+ | Se muestran pero sin nombres de usuario al que pertenecen ni grupos: | ||
+ | <WRAP column 100%> | ||
+ | {{: | ||
+ | </ | ||
+ |