Knoppia

Wiki de Informática y otras historias

Herramientas de usuario

Herramientas del sitio


master_cs:fortificacion:tm1

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
master_cs:fortificacion:tm1 [2025/02/17 16:34] thejuanvisumaster_cs:fortificacion:tm1 [2025/02/17 17:38] (actual) thejuanvisu
Línea 126: Línea 126:
       * Usar ACL (Listas de Control de Acceso)       * Usar ACL (Listas de Control de Acceso)
    
 +
 +
 +===== Securización de Aplicaciones =====
 +==== Identificar y eliminar aplicaciones no utilizadas ====
 +Hay 2 tipos de aplicaciones:
 +  * Las que tienen agujeros de seguridad
 +  * Las que las tienen pero aún no se han descubierto
 +
 +Cuando se instala una distribución de linux hay muchas aplicaciones que no son necesarias de las cuales se puede prescindir. Se pueden poner límites a las configuraciones en /etc/security/limits.conf. Estos límites son por sesión, estos límites tienen uno hard y uno soft. El límite soft se puede superar, siempre y cuando no sobrepase el límite hard. Para limitar una aplicación podemos usar: 
 +  * cpulimit: Limita el consumo de CPU de una aplicación, pero es demasiado rudimentario
 +  * prlimit:  Permite poner límites a los gastos de recursos de un proceso.
 +==== Limitar recursos de aplicaciones con cgroups ====
 +Los cgroups son jerárquicos. Para crear un cgroup hacemos lo siguiente
 +
 +<code C>
 +cd /sys/fs/cgroup/ #Ruta de los cgroups
 +mkdir prueba #Creamos nuevo cgroup
 +
 +</code>
 +Los ficheros del cgroup son como los ficheros de proc. Ahora el directorio /prueba debería estar poblado por numerosos archivos. Para añadir un proceso al cgroup hacemos lo siguiente:
 +<code c>
 +echo 2007 > cgroup.procs #Metemos el proceso 2007 en cgroup.procs
 +</code>
 +
 +Para limitar el consumo de cpu hacemos:
 +<code c>
 +echo 10000 1000000 > cpu.max #Por cada 100000 de CPU se asigna 10000 de CPU al programa.
 +</code>
 +
 +Para limitar el consumo de memoria:
 +
 +<code c>
 +echo 5000000 > memory.high #Se limita a 500000 de memoria el uso del programa
 +</code>
 +
 +se pueden parar todos los procesos del cegroup con: 
 +<code c>
 +echo 1 > csgroup.freeze
 +</code>
 +Para liberar los programas se usa:
 +<code c>
 + echo 0 > csgroup.freeze
 +</code>
 +
 +==== Ejecución en jaulas chroot ====
 +El programa que se ejecuta en estas jaulas no puede subir del directorio en el que se ejecuta. Antiguamente se usaba para testear software y para servidores FTP. Se suele usar cuando se arranca un medio de instalación. Para tener un entorno ChRoot funcional se hace lo siguiente:
 +
 +==== Entorno de virtualización ====
 +La creación de containers es muy simple, utilizamos lxc:
 +<Code>
 +lxc-create 
 +</code>
 +
 +Se pueden ver los contenedores que se pueden crear en /usr/share/
 +
 +<code c>
 +lxc-create -t alpine -n NOMBRE_CONTENEDOR #En este caso alpine sería el tipo de contenedor
 +</code>
 +Para arrancar el container usamos el siguiente comando:
 +<code c>
 +lxc-start -F -n NOMBRE_CONTENEDOR #el -F indica que es en primer plano y el -n el nombre del contenedor.
 +</code>
 +Para parar el contanier se usa:
 +<code>
 +lxc-stop -n NOMBRE_CONTENEDOR
 +</code>
 +
 +Los containers tienen usuarios predefinidos que se suelen indicar al crear el container. 
 +Podemos ejecutar algo en el container con:
 +<code c>
 +lxc-attach -n NOMBRE_CONTENEDOR /bin/sh #Por ejemplo, ejecutamos un shell en el container
 +</code>
 +
 +Una vez conectados así al contanier le podemos poner una contraseña con el comando "passwd root" y podemos crear un usuario nuevo en esta con "useradd -m NOMBRE". Podemos ver los container arrancados y sus ips con:
 +<code>
 +lxc-ls -f
 +</code>
 +Para entrar en un container que no se ha iniciado con -F podemos usar SSH contra su IP. lxc crea una interface llamada bridge 0 para conectar los containers mediante NAT como si fuera virtualbox. para configurar la red de un container vamos a la dirección:
 +<code>
 +cd /var/lib/lxc
 +</code>
 +Aquí hay una carpeta por container, para configurar uno vamos al que queramos y modificamos el archivo config. Dentro de este se pueden ajustar más parámetros, como el autoarranque o la memoria entre otros. Mediante NFTables podemos comunicar el container con el exterior para que pueda prestar servicios. Esto nos permite arrancar aplicaciones de forma aislada. Dentro de /var/lib/lxc/NOMBRE_CONTAINER/rootfs podemos encontrar los archivos usandos dentro del container. Estos aparecen como pertenecientes al usuario que creó el container, a pesar de ello la máquina los puede usar, esto se debe a que comparte los identificadores con la máquina HOST
 +
 +==== Mandatory Access Control ====
 +Hay 2 tipos:
 +=== SELinux ===
 +Usado por Fedora. __Permisos por archivos__, todo tiene una etiqueta (Archivos, procesos, etc...) que dice que puede acceder a que. Solo se admiten los acceso permitidos por las etiquetas. Para convertir una máquina en SELinux primero hay que instalar los siguientes paquetes:
 +<code bash>
 +apt install selinux-basics selinux-utils selinux-policy-defualt auditd 
 +</code>
 +Tras es activamos selinux con el siguiente comando:
 +<code>
 +selinux activate
 +</code>
 +esto crea un archivo /.autorelabel para etiquetar los ficheros no etiquetados. Selinux necesita EXT4. Si se usa Selinux no se puede compartir el directorio home entre dos distros que no lo usen. Selinux tiene 2 modos:
 +  * Modo permisivo: selinux simplemente manda warnings al log, pero no bloquea el acceso.
 +  * Modo enforce: Bloquea accesos no autorizados, lo malo es que solo avisa la primera vez que se intenta realizar un acceso no autorizado.
 +También añade al grub en /boot/grub/grub.cfg el modo security = selinux. En /etc/selinux/config podemos cambiar el modo de selinux de permisive a enforce.
 +
 +Para ver los avisos generados por selinux podemos usar el siguiente comando:
 +<code>
 +audit2why -a
 +</code>
 +
 +
 +=== APParmor ===
 +Usado por debuan. __Permisos por aplicación__ indicando donde puede acceder y donde no.
 +Para habilitar un programa con apparmor usamos el comando:
 +<code>
 +apparmor_parser /etc/apparmor.d/usr.bin.programa
 +</code>
 +Por defecto el programa se pondrá en modo enforce.
 +Para saber el estado de las aplicaciones en apparmor usamos
 +<code>
 +aa-status
 +</code>
 +para que al usar un programa simplemente mande un warning usamos complain:
 +<code>
 +aa-complain /usr/bin/programa
 +</code>
 +
 +
 +
 +===== Securización de las cuentas de usuarios =====
 +Se trata de endurecer la autenticación y evitar que algunos usuarios tengan más permisos de los que deberían.
 +
 +
 +
 +
 +
 +
 +
  
 ====== Comandos ====== ====== Comandos ======
Línea 159: Línea 291:
 La ubicación resultante está en: /dev/GRUPOVOLS/VOLUMILLO La ubicación resultante está en: /dev/GRUPOVOLS/VOLUMILLO
  
-===== Securización de Aplicaciones ===== 
-==== Identificar y eliminar aplicaciones no utilizadas ==== 
-Hay 2 tipos de aplicaciones: 
-  * Las que tienen agujeros de seguridad 
-  * Las que las tienen pero aún no se han descubierto 
- 
-Cuando se instala una distribución de linux hay muchas aplicaciones que no son necesarias de las cuales se puede prescindir. Se pueden poner límites a las configuraciones en /etc/security/limits.conf. Estos límites son por sesión, estos límites tienen uno hard y uno soft. El límite soft se puede superar, siempre y cuando no sobrepase el límite hard. Para limitar una aplicación podemos usar:  
-  * cpulimit: Limita el consumo de CPU de una aplicación, pero es demasiado rudimentario 
-  * prlimit:  Permite poner límites a los gastos de recursos de un proceso. 
-==== Limitar recursos de aplicaciones con cgroups ==== 
-Los cgroups son jerárquicos. Para crear un cgroup hacemos lo siguiente 
- 
-<code C> 
-cd /sys/fs/cgroup/ #Ruta de los cgroups 
-mkdir prueba #Creamos nuevo cgroup 
- 
-</code> 
-Los ficheros del cgroup son como los ficheros de proc. Ahora el directorio /prueba debería estar poblado por numerosos archivos. Para añadir un proceso al cgroup hacemos lo siguiente: 
-<code c> 
-echo 2007 > cgroup.procs #Metemos el proceso 2007 en cgroup.procs 
-</code> 
- 
-para limitar el consumo de cpu hacemos: 
-<code c> 
-echo 10000 1000000 > cpu.max #Por cada 100000 de CPU se asigna 10000 de CPU al programa. 
-</code> 
master_cs/fortificacion/tm1.1739810092.txt.gz · Última modificación: 2025/02/17 16:34 por thejuanvisu