hardening en linux
Guia de hardening
1. Kernel y Boot
Si aqui falla la seguridad, el resto no importa
2. Access Control y MAC
MAC (Mandatory Access Control) Busca separar privilegios incluso para procesos root, esto inclye a estos modulos de seguridad del kernel de linux:
- AppArmor
- SELinux
3. Servicios y apps en red
Esto incluye proteger los servicios expuestos a cualquier red: internet o LAN Algunas categorias:
- SSH + Fail2ban + Obscurity (otro puerto en lugar de 22) + Parametros de seguridad(AllowUsers,MaxAuthTries, etc) + Deshabilitar root login
- Bases de datos : bindearla al localhost
- Web Servers o Proxies : utilizar security headers, eliminar funcionalidades caracteristicas de la tecnologia, rate limit, limitar metodos http, TLS fuerte
- Containers: nunca correr como root, parametros de seguridad de docker, escaneo de seguridad de las docker images Otros:
- Fail2ban : proteger de bruteforce
- Firehol: Interfaz wrapper de iptables
4. Cifrado en niveles y proteccion de DATOS EN REPOSO
NIVELES DE CIFRADO
- DE BLOQUE : LUKS (Disco completo o la particion home)
- DE ARCHIVOS O DIRECTORIOS ESPECIFICOS:
- fscrypt
- gocrypt
- ARCHIVOS SUELTOS : aplicar gpg simetrico
- COPIAS DE SEGURIDAD o BACKUP : cifrarlas
- borg
- restic
5. Auth y User accounts
- Politicas de passwords
- 2fa
- RESTRICCION DE SU Y SUDO
- Proteger de bruteforce local
6. Red y Perimetro Local
cortafuegos:
- firewall estatico : Por ejemplo solo abrir ssh y http
- iptables
- nftables
- firewall dinamico
- firehol
- fail2ban
- crowdsec
- proteccion de red a nivel kernel
7. Monitorizacion, Auditorio, Deteccion
- Monitorizar archivos criticos como /etc/passwd, /etc/shadow, ssh keys
- aide (Advanced Intrusion detection and environment) es un comprobador o revisor de la integridad de archivos o directorios
- tripwire : permite el monitoreo
- centralizacion de logs
- rsyslog
- syslog-ng
- logrotate
- Herramientas modernas
- osquery
- wazuh
- chkrootkit
- rkhunter
8. Aplicaciones y entornos especificos
Proteger lo que corre sobre servicios, esto depende de la tecnologia, por ejemplo para nodejs no usar dependencias vulnerable ni correr como root, usar cabeceras, en caso de php deshabilitar funciones de ejecucion como exec, system, passthru y otras, en react sanitizar inputs, wordpress etc.
9. Gestion de updates
- AUR : solo paquetes confiables, revisa "PKG BUILD" e .install manualmente
- arch-
RESUMEN
- KERNEL / BOOT
- sysctl
- linux-hardenend
- secure boot
- Access control
- apparmor
- Servicios de red
- Cifrado de datos por niveles
- auth y cuentas de usuarios
- red y perimetro
- firehol
- iptables
- monitorizacion
- actualizaciones
Seguridad a nivel de kernel
glosario
-
UEFI
-
FIRMWARE
-
BOOTLOADER
-
KERNEL
- MODULO DEL KERNEL
-
PKI (CRIPTOGRAFIA DE CALVE PUBLICA)
-
RootKit
-
BootKit
-
LSM (Linux Security Module)
-
Spoofing (Acto de pretender ser alguien)
-
Syn flood (Inundacion Syn)
-
Evil maid attack
1. SECURE BOOT
cada componente del proceso arranque tiene una firma criptografica, secure boot se encarga de verificar esas firmas antes de ejecutar esto incluye principalmente a
- bootloader
- kernel Si coincide, la ejecuta Si no coincide, no la ejecuta Microsoft: UEFI en la mayoria de casos viene configurada con "claves" de Microsoft y del fabricante, es decir solo arrancan sistemas que estos hayan aprobado Linux: Lo anterior es un problema para linux personalizado, porque? porque cualquier actualizacion del kernel requiere que los anteriores lo autoricen. Solucion?
- "enrollar" tus propias clves UEFI
- Firmar tu mismo el bootloader y kernel Para que?
- para que asi tu mismo te encargues de controlar completamente que puede arrancar y que no en tu maquina.
- Protegerte de BootKits y RootKits en el arranque que modifiquen el GRUB o Kernel, EvilMaidAttack donde modifiquen tu bootloader por otro Que no te permite? Proteccion contra malware con persistencia dentro del SO y de firmware UEFI comprometido, ni contra un atacante con acceso fisico prolongado suficiente para reflashear el firmware o cambiar la config de UEFI si esta no esta con una contrasena. , otros
2. PARAMETROS DEL KERNEL DE LINUX
El kernel de linux tiene parametros expuestos como archivos virtuales y la interfaz para configurarlos es sysctl, algunos ajustes tienen implicaciones directas a la seguridad:
- Proteciones de manejo de red a bajo nivel antes que ningun app o firewall de usuario la procese
- Protecciones de memoria contra exploits que buscan abusar la gestion de memoria del kernel
- ASLR (Address Space Layout Randomization)
- ROP (Return oriented Programming)
- Information Leak o Fuga de informacion de logs de kernel
- ptrace: syscall que permite a un proceso inspecionar y controlar otro, legitimo para debuggers
3. Deshabilitacion de modulos que abren vectores de ataque
Thunderbolt, uvcvideo, bluetooth, etnre otros. Todo esta relacionado al acceso DMA
4. Utilizar el kernel Linux Hardened en lugar del Mainline
Este kernel inclina el balance entre seguridad, rendimiento y compatibilidad hacia la seguridad. (Tiene el modulo Lockdown configurado por default entre otros)
5. Utilizar Lockdown Linux Security Module
Utilizar este modulo de seguridad restringe los permisos de root para que asi una vez comprometido yescalado un dispositivo, el atacante no comprometa el sistema de forma mas profunda.
6. RESTRINGIR "DMESG"
Muestra mensajes del kernel que inc luye informacion de hardware detectado, modulos cargados, errores y lo mas importnte direcciones de memoria que pueden usar los exploits para evadir ASLR