ciberseguridad_D
Seguridad servidor Linux

Detectar si un servidor Linux tiene problemas de seguridad no depende de una sola herramienta. Requiere revisar actualizaciones, accesos, logs, servicios expuestos, usuarios, tareas programadas, archivos críticos, cambios inesperados y señales de comportamiento anormal.

Un servidor puede estar en riesgo aunque siga funcionando aparentemente bien. De hecho, muchas intrusiones no buscan “romper” el sistema de inmediato, sino mantener acceso, ocultar actividad, robar información, usar recursos del servidor o preparar movimientos posteriores.

Por eso, todo administrador debe tener una rutina básica de revisión. No se trata de entrar en pánico ante cualquier error del sistema, sino de aprender a distinguir entre fallos normales, malas configuraciones, intentos de ataque y señales reales de compromiso.

Idea clave: un servidor Linux seguro no es el que nunca recibe ataques, sino el que se mantiene actualizado, registra eventos, alerta cambios importantes y permite detectar actividad sospechosa a tiempo.

1. Revisa si el servidor está actualizado

Un servidor desactualizado es una de las causas más comunes de exposición. Las actualizaciones corrigen vulnerabilidades en el kernel, OpenSSH, OpenSSL, Apache, Nginx, PHP, bases de datos, librerías y herramientas del sistema.

En Debian, Ubuntu y derivados:

Terminal Linux
sudo apt update
apt list --upgradable

En Fedora, AlmaLinux, Rocky Linux o RHEL:

Terminal Linux
sudo dnf check-update

Consejo: si hay actualizaciones de seguridad pendientes, kernel antiguo, servicios expuestos o software fuera de soporte, el servidor ya tiene un problema de seguridad que debe atenderse.

2. Revisa intentos fallidos de acceso SSH

SSH suele ser uno de los servicios más atacados en servidores Linux. No todo intento fallido significa compromiso, pero miles de intentos, usuarios inexistentes, accesos desde países inesperados o inicios exitosos fuera de horario deben investigarse.

En Ubuntu, Debian y Linux Mint:

Terminal Linux
sudo grep "Failed password" /var/log/auth.log | tail -50
sudo grep "Accepted" /var/log/auth.log | tail -50

En RHEL, Rocky Linux, AlmaLinux y CentOS:

Terminal Linux
sudo grep "Failed password" /var/log/secure | tail -50
sudo grep "Accepted" /var/log/secure | tail -50

Para ver últimos accesos:

Terminal Linux
last -a | head -30
sudo lastb -a | head -30

Señales de alerta en SSH

  • Accesos exitosos desde IP desconocidas.
  • Intentos con usuarios como admin, test, oracle, postgres, user o soporte.
  • Accesos fuera del horario habitual.
  • Intentos repetidos contra root.
  • Usuarios que no deberían tener acceso remoto.

3. Revisa logs del sistema con journalctl

Los logs permiten detectar fallos, reinicios inesperados, errores de servicios, intentos de autenticación, problemas de permisos, bloqueos del kernel y actividad anormal.

Terminal Linux
sudo journalctl -p warning..alert -S today
sudo journalctl -p err -S "24 hours ago"
sudo journalctl -u ssh -S today
sudo journalctl -u sshd -S today

En servidores críticos, los logs deben estar protegidos contra eliminación o manipulación. Además, deben conservarse de acuerdo con las políticas de seguridad de la organización.

4. Identifica puertos y servicios expuestos

Todo servicio abierto aumenta la superficie de ataque. Un servidor web puede necesitar 80 y 443; un servidor administrado por SSH puede requerir 22 o un puerto controlado; pero bases de datos, paneles, Redis, Elasticsearch, Docker API o servicios internos no deberían estar expuestos sin control.

Terminal Linux
sudo ss -tulpen
sudo systemctl --type=service --state=running

Preguntas que debes responder

  • ¿Reconozco todos los servicios activos?
  • ¿Cada puerto abierto tiene una justificación?
  • ¿Hay bases de datos escuchando en interfaces públicas?
  • ¿El firewall permite solo lo necesario?
  • ¿Hay servicios antiguos que ya no se usan?

5. Revisa el firewall y reglas de acceso

El firewall no reemplaza una buena configuración, pero ayuda a reducir exposición. Si el servidor no tiene reglas claras, servicios internos podrían quedar accesibles desde Internet.

Con UFW:

Terminal Linux
sudo ufw status verbose

Con firewalld:

Terminal Linux
sudo firewall-cmd --state
sudo firewall-cmd --list-all

Con nftables:

Terminal Linux
sudo nft list ruleset

Precaución: si administras un servidor remoto, no cambies reglas de firewall sin confirmar que mantendrás acceso por SSH o consola de recuperación.

6. Detecta usuarios sospechosos o privilegios excesivos

Una revisión básica de usuarios puede revelar cuentas antiguas, accesos de proveedores que ya no trabajan contigo, usuarios con UID 0, cuentas sin contraseña o miembros inesperados en grupos administrativos.

Terminal Linux
getent passwd
awk -F: '$3 == 0 {print}' /etc/passwd
getent group sudo
getent group wheel

Para revisar llaves SSH autorizadas:

Terminal Linux
sudo find /root /home -name authorized_keys -type f -exec ls -l {} \;

Alerta si encuentras:

  • Usuarios que no reconoces.
  • Más de una cuenta con UID 0.
  • Llaves SSH agregadas sin autorización.
  • Cuentas de proveedores o exempleados activas.
  • Usuarios normales con privilegios sudo sin justificación.

7. Revisa procesos con consumo anormal

Procesos desconocidos, alto consumo de CPU, uso inusual de red o binarios ejecutándose desde rutas temporales pueden indicar abuso de recursos, malware, criptominería, fuga de datos o servicios mal configurados.

Terminal Linux
top
ps aux --sort=-%cpu | head -20
ps aux --sort=-%mem | head -20

También revisa servicios fallidos:

Terminal Linux
systemctl --failed

8. Revisa tareas programadas sospechosas

Los atacantes y también algunas malas configuraciones pueden usar cron o timers de systemd para ejecutar scripts de forma recurrente. Por eso conviene revisar tareas programadas de usuarios y del sistema.

Terminal Linux
crontab -l
sudo ls -la /etc/cron.d /etc/cron.daily /etc/cron.hourly /etc/cron.weekly
systemctl list-timers --all

Busca scripts desconocidos, rutas extrañas, descargas automáticas, tareas que ejecutan archivos desde /tmp, /var/tmp o directorios de usuarios sin justificación.

9. Comprueba la integridad de archivos críticos

Una buena práctica es monitorear cambios en archivos sensibles. AIDE crea una base de datos de archivos del sistema y luego la usa para verificar integridad y detectar modificaciones.

En Debian, Ubuntu y derivados:

Terminal Linux
sudo apt install aide
sudo aideinit
sudo aide --check

En Fedora, RHEL, AlmaLinux o Rocky Linux:

Terminal Linux
sudo dnf install aide
sudo aide --init
sudo aide --check

Tip: AIDE es más útil cuando se configura antes de un incidente. Si creas la base de datos cuando el servidor ya está comprometido, podrías estar registrando como “normal” un estado inseguro.

10. Usa Lynis para una auditoría rápida de seguridad

Lynis es una herramienta open source de auditoría y hardening para sistemas Linux, macOS y Unix. Realiza un escaneo amplio del sistema y entrega recomendaciones de mejora. Es útil para administradores, auditores y equipos que necesitan una primera visión del estado de seguridad.

Terminal Linux
sudo lynis audit system

Lynis puede ayudarte a revisar:

  • Configuración del sistema.
  • Servicios activos.
  • Permisos inseguros.
  • Paquetes vulnerables o desactualizados.
  • Configuraciones de hardening pendientes.
  • Recomendaciones de seguridad priorizadas.

No debes tomar el resultado de Lynis como una sentencia absoluta. Úsalo como una guía inicial para mejorar la postura de seguridad y documentar hallazgos.

11. Implementa monitoreo de integridad y alertas

Si el servidor es importante para una empresa, no basta con revisar manualmente. Debe existir monitoreo continuo, alertas y retención de logs.

Herramientas como Wazuh pueden ayudar con monitoreo de integridad de archivos, detección de cambios, alertas y visibilidad centralizada.

Qué deberías monitorear

  • Archivos de configuración de SSH.
  • Usuarios, grupos y sudoers.
  • Servicios web y virtual hosts.
  • Cambios en cron y timers.
  • Directorios de aplicaciones críticas.
  • Logs de autenticación y privilegios.
  • Uso anormal de CPU, memoria, disco y red.

12. Señales claras de que hay un problema de seguridad

Señal Qué puede indicar
Accesos SSH exitosos desconocidos Credenciales comprometidas o llave SSH no autorizada.
Procesos extraños con alto consumo Malware, criptominería, abuso de recursos o software defectuoso.
Puertos abiertos inesperados Servicios mal configurados o software instalado sin autorización.
Usuarios nuevos no reconocidos Creación de acceso persistente.
Tareas cron desconocidas Persistencia, scripts no autorizados o automatizaciones inseguras.
Logs borrados o incompletos Intento de ocultar actividad o mala configuración de logging.
Archivos críticos modificados Cambio no autorizado, mala administración o compromiso del sistema.

Qué hacer si sospechas que el servidor fue comprometido

Si encuentras señales fuertes de compromiso, evita actuar de forma improvisada. Un reinicio, limpieza rápida o eliminación de archivos puede destruir evidencias útiles para entender qué pasó.

Acciones iniciales recomendadas

  • Aísla el servidor de Internet o limita temporalmente accesos no esenciales.
  • Preserva logs, fechas, usuarios, procesos y evidencia relevante.
  • Cambia credenciales desde un equipo seguro, no desde el servidor sospechoso.
  • Revisa llaves SSH, usuarios y accesos administrativos.
  • Verifica respaldos antes de restaurar.
  • Documenta hallazgos y línea de tiempo.
  • Escala el caso a un especialista si el servidor maneja datos sensibles.

En servidores críticos, la respuesta correcta suele ser reconstruir desde una imagen limpia, restaurar datos verificados y corregir la causa raíz, no simplemente “limpiar” el sistema comprometido.

Checklist rápido de revisión

  • Verificar actualizaciones pendientes.
  • Revisar accesos SSH exitosos y fallidos.
  • Analizar logs recientes con journalctl.
  • Listar puertos y servicios expuestos.
  • Validar reglas de firewall.
  • Revisar usuarios, grupos sudo/wheel y llaves SSH.
  • Buscar procesos con consumo anormal.
  • Revisar cron y timers de systemd.
  • Comprobar integridad con AIDE o FIM.
  • Ejecutar auditoría con Lynis.
  • Centralizar logs y alertas si el servidor es crítico.

Preguntas clave sobre seguridad en servidores Linux


¿Un servidor Linux puede ser atacado?

Sí. Linux es robusto, pero no es invulnerable. Puede ser atacado por credenciales débiles, servicios expuestos, software desactualizado, malas configuraciones o vulnerabilidades conocidas.

¿Muchos intentos fallidos de SSH significan que ya fui hackeado?

No necesariamente. Los intentos fallidos son comunes en servidores expuestos a Internet. Lo grave es encontrar accesos exitosos desconocidos, usuarios inesperados o cambios no autorizados.

¿Lynis detecta si mi servidor está comprometido?

Lynis ayuda a auditar configuración y hardening, pero no reemplaza un análisis forense. Sirve para encontrar debilidades, no para confirmar por sí solo todos los compromisos.

¿AIDE evita ataques?

No evita ataques directamente. Su valor está en detectar cambios en archivos críticos comparando el estado actual con una base de integridad previamente creada.

¿Qué logs debo revisar primero?

Empieza por logs de autenticación, journalctl, logs de servicios expuestos, firewall y aplicaciones críticas como Apache, Nginx, bases de datos o paneles de administración.

¿Qué hago si encuentro una llave SSH desconocida?

Trátalo como una señal seria. Documenta el hallazgo, restringe accesos, revisa usuarios, cambia credenciales desde un equipo seguro y analiza si hubo actividad no autorizada.

Recomendamos

En resumen

Detectar problemas de seguridad en un servidor Linux exige revisar varias capas: actualizaciones, logs, SSH, usuarios, servicios, firewall, procesos, tareas programadas, integridad de archivos y alertas. Ningún comando aislado confirma todo, pero una revisión ordenada puede revelar señales tempranas de riesgo.

La prioridad debe ser construir visibilidad: logs completos, monitoreo, alertas, control de cambios, inventario de servicios y revisiones periódicas. Sin visibilidad, un servidor puede estar expuesto durante semanas sin que nadie lo note.

La seguridad real no termina cuando el servidor está instalado. Empieza después: actualizar, monitorear, auditar, corregir, documentar y responder a tiempo.

Conclusión editorial

Un servidor Linux puede ser muy seguro, pero solo si se administra con disciplina. La detección temprana depende de logs, monitoreo, auditorías y una cultura de revisión constante antes de que un incidente se convierta en crisis.

  

Fuente: somoslibres