# Checklist de auditoría de infraestructura (server VPS)

> Objetivo: revisar salud, seguridad y rendimiento del server para detectar puntos de mejora.
> Alcance sugerido: AlmaLinux 9 + WHM/cPanel.

---

## 1) Preparación

- [ ] Confirmar ventana de mantenimiento (si aplica).
- [ ] Confirmar acceso SSH con usuario administrador.
- [ ] Tener backup reciente verificado antes de cambios.
- [ ] Definir responsable técnico y registro de hallazgos.

Comando de conexión:

```bash
ssh root@<IP_DEL_SERVER>
```

---

## 2) Identidad del servidor y versión

- [ ] Validar hostname y FQDN correctos.
- [ ] Confirmar versión de SO y kernel.
- [ ] Revisar uptime y reinicios recientes.

```bash
hostnamectl
cat /etc/os-release
uname -r
uptime
last reboot | head -n 5
```

---

## 3) Recursos (CPU, RAM, disco)

- [ ] Uso de CPU en carga normal y picos.
- [ ] RAM/swap sin presión sostenida.
- [ ] Disco con espacio libre y sin crecimiento anómalo.
- [ ] I/O wait aceptable.

```bash
top -b -n1 | head -n 20
free -h
vmstat 1 5
df -hT
lsblk
iostat -xz 1 3
```

Mejora típica:
- Activar alertas cuando `/` o `/home` superen 80%.
- Ajustar swap y límites según patrón real de carga.

---

## 4) Estado de servicios críticos

- [ ] Web server activo (Apache/Nginx/LiteSpeed).
- [ ] PHP-FPM/EA-PHP operativo.
- [ ] MariaDB/MySQL saludable.
- [ ] Exim/Dovecot (si correo local) funcionando.
- [ ] cPanel/WHM en estado OK.

```bash
systemctl --failed
systemctl status httpd --no-pager
systemctl status mariadb --no-pager
systemctl status exim --no-pager
systemctl status dovecot --no-pager
systemctl status cpanel --no-pager
```

---

## 5) Red, puertos y exposición

- [ ] Ver puertos realmente abiertos.
- [ ] Confirmar que solo estén puertos necesarios.
- [ ] Validar firewall activo y reglas.

```bash
ss -tulpen
firewall-cmd --state
firewall-cmd --list-all
```

Mejora típica:
- Cerrar puertos no usados.
- Restringir SSH por IP si es posible.

---

## 6) Seguridad base

- [ ] SSH con llave, sin password para root (ideal).
- [ ] `PermitRootLogin` y `PasswordAuthentication` auditados.
- [ ] 2FA en WHM habilitado.
- [ ] Revisar usuarios con shell y sudo.
- [ ] Verificar intentos de login sospechosos.

```bash
grep -E '^(PermitRootLogin|PasswordAuthentication|PubkeyAuthentication)' /etc/ssh/sshd_config
getent group wheel
awk -F: '$7 ~ /(bash|sh)$/ {print $1 ":" $7}' /etc/passwd
last -a | head -n 20
journalctl -u sshd --since "7 days ago" | tail -n 100
```

---

## 7) Actualizaciones y parches

- [ ] Ver actualizaciones pendientes del sistema.
- [ ] Confirmar política de updates en cPanel.
- [ ] Revisar paquetes obsoletos o en conflicto.

```bash
dnf check-update
dnf updateinfo summary
/usr/local/cpanel/cpanel -V
```

Mejora típica:
- Programar parcheo mensual con ventana fija y rollback plan.

---

## 8) Base de datos

- [ ] Versión y estado del motor.
- [ ] Tamaño de BDs y crecimiento.
- [ ] Config básica (buffers, conexiones) acorde a RAM.
- [ ] Consultas lentas habilitadas y revisadas.

```bash
mysql --version
mysql -e "SHOW DATABASES;"
mysql -e "SHOW GLOBAL STATUS LIKE 'Threads_connected';"
mysql -e "SHOW VARIABLES LIKE 'slow_query_log';"
```

---

## 9) SSL/TLS y dominios

- [ ] AutoSSL activo y renovaciones exitosas.
- [ ] Certificados sin vencimiento cercano.
- [ ] TLS moderno (evitar protocolos antiguos).

Revisión desde WHM:
- Home -> SSL/TLS -> Manage AutoSSL
- Home -> SSL/TLS Status

---

## 10) Backups y restauración

- [ ] Frecuencia y retención cumplen objetivo del negocio.
- [ ] Backups fuera del servidor (offsite).
- [ ] Última restauración de prueba documentada.
- [ ] Integridad del backup verificada.

Checklist mínimo:
- [ ] Evidencia de backup diario
- [ ] Evidencia de backup semanal
- [ ] Restore test en últimos 90 días

---

## 11) Logs y monitoreo

- [ ] Logs rotando correctamente.
- [ ] Errores críticos en Apache, cPanel, Exim.
- [ ] Monitoreo con alertas (CPU, RAM, disco, servicios).

```bash
du -sh /var/log
ls -lh /usr/local/apache/logs/
tail -n 100 /usr/local/apache/logs/error_log
tail -n 100 /usr/local/cpanel/logs/error_log
tail -n 100 /var/log/exim_mainlog
```

---

## 12) Rendimiento web/PHP

- [ ] Versiones PHP soportadas y en uso correcto por cuenta.
- [ ] OPcache habilitado.
- [ ] Límites de PHP coherentes (memory_limit, max_execution_time).
- [ ] Identificar cuentas con consumo desbalanceado.

Revisión sugerida:
- WHM -> MultiPHP Manager
- WHM -> PHP-FPM
- WHM -> Resource Usage (si CloudLinux)

---

## 13) Resultado ejecutivo (plantilla)

### Estado general
- Riesgo global: [Bajo | Medio | Alto]
- Disponibilidad: [OK | Con incidencias]
- Seguridad: [OK | Hallazgos]

### Hallazgos prioritarios
1. [Hallazgo #1] -> Impacto: [alto/medio/bajo] -> Acción: [...]
2. [Hallazgo #2] -> Impacto: [alto/medio/bajo] -> Acción: [...]
3. [Hallazgo #3] -> Impacto: [alto/medio/bajo] -> Acción: [...]

### Plan de mejora 30-60-90 días
- 30 días: [...]
- 60 días: [...]
- 90 días: [...]

---

## 14) Comando rápido (inventario inicial en un solo bloque)

> Ejecutar por SSH para sacar una foto técnica rápida del servidor.

```bash
echo "=== HOST ===" && hostnamectl && echo
echo "=== UPTIME ===" && uptime && echo
echo "=== CPU/RAM ===" && top -b -n1 | head -n 10 && free -h && echo
echo "=== DISCO ===" && df -hT && echo
echo "=== SERVICIOS FALLIDOS ===" && systemctl --failed && echo
echo "=== PUERTOS ===" && ss -tulpen && echo
echo "=== FIREWALL ===" && firewall-cmd --list-all && echo
echo "=== SSH HARDENING ===" && grep -E '^(PermitRootLogin|PasswordAuthentication|PubkeyAuthentication)' /etc/ssh/sshd_config && echo
echo "=== ACTUALIZACIONES ===" && dnf check-update | head -n 40
```

