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 sistemabash
cat /etc/passwd - Listar usuarios con privilegios de superusuariobash
cat /etc/sudoers | grep -v '#' - Ver los intentos de inicio de sesión fallidosbash
journalctl -xe | grep "Failed password" - Ver los últimos accesos al sistemabash
last - Listar conexiones activas de SSHbash
who
2. Monitorear procesos sospechosos
- Listar procesos en ejecuciónbash
ps aux --sort=-%cpu - Verificar si hay procesos ejecutándose como rootbash
ps -U root -u root u
3. Revisar puertos abiertos y conexiones de red
- Ver los puertos abiertos y las conexiones activasbash(Si
netstat -tulnpnetstatno está disponible, usarssen su lugar)bashss -tulnp - Escanear puertos abiertos en el sistemabash
sudo nmap -sS -p- localhost - Comprobar si hay conexiones sospechosas activasbash
netstat -antp | grep ESTABLISHED - Verificar conexiones entrantes y salientesbash
sudo lsof -i -P -n
4. Revisar la integridad del sistema
- Verificar la integridad de archivos clave del sistemabash
sudo debsums -c # Para sistemas basados en Debianbashrpm -Va # Para sistemas basados en RHEL/Fedora - Comprobar cambios recientes en archivos del sistemabash
find /etc -type f -mtime -1 # Archivos modificados en las últimas 24 horas - Buscar archivos con permisos insegurosbash
find / -type f -perm 777
5. Verificar y analizar logs
- Examinar el registro de autenticaciónbash
sudo cat /var/log/auth.log | grep "ssh" - Analizar logs del sistema en tiempo realbash
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-servicio2️ Asegurar SSH
✅ Cambiar el puerto por defecto de SSH (evita ataques automatizados)
Editar el archivo de configuración:
sudo nano /etc/ssh/sshd_configCambiar la línea:
Port 2222Reiniciar 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 yes3️ Mantener el sistema actualizado
sudo apt update && sudo apt upgrade -y # Debian/Ubuntu
sudo yum update -y # RHEL/CentOS
sudo dnf update -y # Fedora4️ 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 fail2ban5️ 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