🔍 Comprobación de Seguridad e Integridad en Linux

Este documento recopila comandos prácticos para auditar la seguridad y la integridad de un sistema Linux, así como un conjunto de buenas prácticas operativas orientadas especialmente a la exposición en red (servicios publicados, proxy inverso, acceso remoto, etc.). Puede utilizarse como checklist periódico de revisión o como guía de endurecimiento (hardening) inicial del sistema.


🎯 Objetivos

  • Detectar accesos no autorizados o comportamientos anómalos.
  • Identificar servicios y puertos expuestos innecesariamente.
  • Verificar la integridad de archivos críticos del sistema.
  • Reducir la superficie de ataque en redes públicas o privadas.
  • Establecer controles preventivos y correctivos.

🔍 Comprobación de Seguridad e Integridad en Linux

🔹 1. Verificar usuarios y accesos

  • Listar usuarios en el sistema
    cat /etc/passwd
    
  • Listar usuarios con privilegios de superusuario
    cat /etc/sudoers | grep -v '#'
    
  • Ver los intentos de inicio de sesión fallidos
    journalctl -xe | grep "Failed password"
    
  • Ver los últimos accesos al sistema
    last
    
  • Listar conexiones activas de SSH
    who
    

🔹 2. Monitorear procesos sospechosos

  • Listar procesos en ejecución
    ps aux --sort=-%cpu
    
  • Verificar si hay procesos ejecutándose como root
    ps -U root -u root u
    

🔹 3. Revisar puertos abiertos y conexiones de red

  • Ver los puertos abiertos y las conexiones activas
    netstat -tulnp
    

    (Si netstat no está disponible, usar ss en su lugar)

    ss -tulnp
    
  • Escanear puertos abiertos en el sistema
    sudo nmap -sS -p- localhost
    
  • Comprobar si hay conexiones sospechosas activas
    netstat -antp | grep ESTABLISHED
    
  • Verificar conexiones entrantes y salientes
    sudo lsof -i -P -n
    

🔹 4. Revisar la integridad del sistema

  • Verificar la integridad de archivos clave del sistema
    sudo debsums -c  # Para sistemas basados en Debian
    
    rpm -Va  # Para sistemas basados en RHEL/Fedora
    
  • Comprobar cambios recientes en archivos del sistema
    find /etc -type f -mtime -1  # Archivos modificados en las últimas 24 horas
    
  • Buscar archivos con permisos inseguros
    find / -type f -perm 777
    

🔹 5. Verificar y analizar logs

  • Examinar el registro de autenticación
    sudo cat /var/log/auth.log | grep "ssh"
    
  • Analizar logs del sistema en tiempo real
    sudo journalctl -f
    

🔐 Buenas Prácticas para Asegurar un Sistema Linux

1️⃣ Asegurar conexiones de red

✅ Configurar el firewall con ufw (para sistemas basados en Ubuntu/Debian):

sudo ufw enable
sudo ufw default deny incoming
sudo ufw allow 22/tcp  # Habilitar SSH si es necesario
sudo ufw status verbose

✅ En sistemas con firewalld (RHEL, CentOS, Fedora):

sudo systemctl start firewalld
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload

✅ Desactivar servicios innecesarios:

sudo systemctl list-units --type=service
sudo systemctl disable nombre-del-servicio

2️⃣ Asegurar SSH

Cambiar el puerto por defecto de SSH (evita ataques automatizados)
Editar el archivo de configuración:

sudo nano /etc/ssh/sshd_config

Cambiar la línea:

Port 2222

Reiniciar SSH:

sudo systemctl restart ssh

Deshabilitar acceso SSH con root
En /etc/ssh/sshd_config modificar:

PermitRootLogin no

Habilitar autenticación con clave pública y deshabilitar contraseñas

PasswordAuthentication no
PubkeyAuthentication yes

3️⃣ Mantener el sistema actualizado

sudo apt update && sudo apt upgrade -y  # Debian/Ubuntu
sudo yum update -y                      # RHEL/CentOS
sudo dnf update -y                      # Fedora

4️⃣ Configurar detección de intrusos

Instalar y configurar Fail2Ban (bloquea IPs sospechosas automáticamente)

sudo apt install fail2ban -y
sudo systemctl enable fail2ban

Ver logs de Fail2Ban

sudo journalctl -u fail2ban

5️⃣ Configurar SELinux o AppArmor

Habilitar SELinux en sistemas RHEL/Fedora

sestatus
sudo setenforce 1

Habilitar AppArmor en sistemas Debian/Ubuntu

sudo aa-status
sudo systemctl enable apparmor

Diego J. Gonzalez

This site uses Just the Docs, a documentation theme for Jekyll.