Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
master_cs:fortificacion:tm1 [2025/02/10 16:39] – thejuanvisu | master_cs:fortificacion:tm1 [2025/02/17 17:38] (actual) – thejuanvisu | ||
---|---|---|---|
Línea 110: | Línea 110: | ||
* **LVM**: Sistema de volúmenes lógicos. Es más flexime que la aproximación tradicional ya que se puede añadir espacio dinámicamente. Es más fácil de administrar y aca volúmen lógico puede ser cifrado. No es recomendable para la partición /boot. Para usar esta aproximación en sistemas debian se debe instalar el paquete lvm2 | * **LVM**: Sistema de volúmenes lógicos. Es más flexime que la aproximación tradicional ya que se puede añadir espacio dinámicamente. Es más fácil de administrar y aca volúmen lógico puede ser cifrado. No es recomendable para la partición /boot. Para usar esta aproximación en sistemas debian se debe instalar el paquete lvm2 | ||
* Volúmenes Físicos: Son discos duros o particiones configuradas como tales. | * Volúmenes Físicos: Son discos duros o particiones configuradas como tales. | ||
+ | |||
+ | ==== Posibles amenazas para el sistema de archivos ==== | ||
+ | |||
+ | * Acceso No Autorizado: Para prevenirlo se puede hacer lo siguiente: | ||
+ | * Todos los directorios home deben tener el permiso 700 y podemos establecer el umask para que sea 077 | ||
+ | * Los archivos de configuración de diferentes daemons no deben ser legibles. | ||
+ | * Algunas distros tienen programas que revisan y establecen periódicamente los permisos de los archivos en el sistema de archivos | ||
+ | * | ||
+ | * Que el sistema de ficheros sea llenado a tope y nadie pueda escribir en el | ||
+ | * Corrupción del sistema de archivos haciéndolo inutilizable | ||
+ | * Usar un sistema de archivos fiable y probado | ||
+ | * Mantener la máquina en un ambiente estale. | ||
+ | * Tener cuidado con los permisos de archivos | ||
+ | * Ganar acceso a archivos maliciosos con privilegios altos. | ||
+ | * 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 / | ||
+ | * cpulimit: Limita el consumo de CPU de una aplicación, | ||
+ | * prlimit: | ||
+ | ==== Limitar recursos de aplicaciones con cgroups ==== | ||
+ | Los cgroups son jerárquicos. Para crear un cgroup hacemos lo siguiente | ||
+ | |||
+ | <code C> | ||
+ | cd / | ||
+ | mkdir prueba #Creamos nuevo cgroup | ||
+ | |||
+ | </ | ||
+ | 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 | ||
+ | </ | ||
+ | |||
+ | 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. | ||
+ | </ | ||
+ | |||
+ | Para limitar el consumo de memoria: | ||
+ | |||
+ | <code c> | ||
+ | echo 5000000 > memory.high #Se limita a 500000 de memoria el uso del programa | ||
+ | </ | ||
+ | |||
+ | se pueden parar todos los procesos del cegroup con: | ||
+ | <code c> | ||
+ | echo 1 > csgroup.freeze | ||
+ | </ | ||
+ | Para liberar los programas se usa: | ||
+ | <code c> | ||
+ | echo 0 > csgroup.freeze | ||
+ | </ | ||
+ | |||
+ | ==== 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: | ||
+ | < | ||
+ | lxc-create | ||
+ | </ | ||
+ | |||
+ | 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 | ||
+ | </ | ||
+ | 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. | ||
+ | </ | ||
+ | Para parar el contanier se usa: | ||
+ | < | ||
+ | lxc-stop -n NOMBRE_CONTENEDOR | ||
+ | </ | ||
+ | |||
+ | 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 | ||
+ | </ | ||
+ | |||
+ | Una vez conectados así al contanier le podemos poner una contraseña con el comando " | ||
+ | < | ||
+ | lxc-ls -f | ||
+ | </ | ||
+ | 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: | ||
+ | < | ||
+ | cd / | ||
+ | </ | ||
+ | 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, | ||
+ | |||
+ | ==== 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 | ||
+ | </ | ||
+ | Tras es activamos selinux con el siguiente comando: | ||
+ | < | ||
+ | selinux activate | ||
+ | </ | ||
+ | esto crea un archivo / | ||
+ | * Modo permisivo: selinux simplemente manda warnings al log, pero no bloquea el acceso. | ||
+ | * Modo enforce: Bloquea accesos no autorizados, | ||
+ | También añade al grub en / | ||
+ | |||
+ | Para ver los avisos generados por selinux podemos usar el siguiente comando: | ||
+ | < | ||
+ | audit2why -a | ||
+ | </ | ||
+ | |||
+ | |||
+ | === APParmor === | ||
+ | Usado por debuan. __Permisos por aplicación__ indicando donde puede acceder y donde no. | ||
+ | Para habilitar un programa con apparmor usamos el comando: | ||
+ | < | ||
+ | apparmor_parser / | ||
+ | </ | ||
+ | Por defecto el programa se pondrá en modo enforce. | ||
+ | Para saber el estado de las aplicaciones en apparmor usamos | ||
+ | < | ||
+ | aa-status | ||
+ | </ | ||
+ | para que al usar un programa simplemente mande un warning usamos complain: | ||
+ | < | ||
+ | aa-complain / | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ===== 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. | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
Línea 143: | Línea 289: | ||
</ | </ | ||
+ | La ubicación resultante está en: / | ||