← Blog

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

  1. UEFI

  2. FIRMWARE

  3. BOOTLOADER

  4. KERNEL

    1. MODULO DEL KERNEL
  5. PKI (CRIPTOGRAFIA DE CALVE PUBLICA)

  6. RootKit

  7. BootKit

  8. LSM (Linux Security Module)

  9. Spoofing (Acto de pretender ser alguien)

  10. Syn flood (Inundacion Syn)

  11. 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?
  1. "enrollar" tus propias clves UEFI
  2. 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
  1. ASLR (Address Space Layout Randomization)
  2. ROP (Return oriented Programming)
  3. Information Leak o Fuga de informacion de logs de kernel
  4. 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