Skip to content
SecForge
RECURSO · CHULETA

Comandos de Linux para una revisión de seguridad.

Cuando te sientas frente a una máquina Linux y quieres saber «¿hay algo raro aquí?», estos son los comandos que te lo responden. Agrupados por la pregunta a la que contestan.

16 de junio de 20267 min de lectura

Esta es la referencia complementaria de Fundamentos de Linux: una chuleta de triaje para observar un sistema Linux y hacerte rápidamente una idea de quién está en él, qué está haciendo en la red, qué ha cambiado hace poco y dónde están los permisos peligrosos. Todo lo que hay aquí está orientado a la lectura y es seguro de ejecutar en una máquina que administres tú.

Quién está aquí y quién ha estado

Empieza por las cuentas y las sesiones:

ComandoQué te dice
who / wQuién tiene la sesión iniciada ahora mismo y qué está haciendo.
lastHistorial de inicios de sesión recientes, incluidos los reinicios: detecta accesos a horas raras.
lastbIntentos de inicio de sesión fallidos. Una lista larga es la firma de un ataque de fuerza bruta.
cat /etc/passwdTodas las cuentas del sistema. Busca usuarios inesperados con UID 0 (equivalentes a root).

Qué está hablando en la red

Los sockets abiertos de una máquina te dicen qué expone y con qué se está conectando:

ComandoQué te dice
ss -tulpnPuertos TCP/UDP a la escucha y el proceso detrás de cada uno. El sustituto moderno de netstat.
ss -tpConexiones establecidas con el proceso que las posee: detecta una shell «llamando a casa».
ip aInterfaces y direcciones. Confirma que estás en la red que crees.

Contrasta lo que muestra ss -tulpn con la chuleta de puertos comunes: un proceso a la escucha en un puerto que no reconoces es el hilo del que tirar.

Qué ha cambiado y cuándo

ComandoQué te dice
journalctl -p err -bErrores desde el último arranque según el journal de systemd: una lectura rápida del estado de salud.
journalctl _COMM=sshdTodo lo que registró sshd: el rastro de autenticación del acceso remoto.
find / -mtime -1 -type f 2>/dev/nullArchivos modificados en el último día. Ruidoso, pero revela la actividad reciente.
systemctl list-units --state=runningServicios en ejecución. Busca cualquier cosa que no esperabas que estuviera activa.

Dónde están los permisos peligrosos

Los permisos mal configurados son una de las debilidades más comunes en el mundo real. Dos comprobaciones cazan muchas:

ComandoQué encuentra
find / -perm -4000 -type f 2>/dev/nullBinarios SUID: programas que se ejecutan con los permisos de su propietario (a menudo root). Una lista corta y conocida está bien; las sorpresas merecen investigarse.
find / -perm -0002 -type f 2>/dev/nullArchivos escribibles por todos: cualquiera puede modificarlos. Rara vez es lo que se pretende para algo sensible.
sudo -lLo que el usuario actual puede ejecutar mediante sudo. Unos permisos de sudo demasiado amplios son una vía de escalada de privilegios.

Poniéndolo todo junto

Una pasada rápida de triaje, en orden: comprueba quién está en la máquina (w, last), luego qué expone (ss -tulpn), luego qué ha cambiado (journalctl, find -mtime), y por último dónde podrían abusar de los privilegios (SUID, sudo). Ninguno de estos cambia nada: te permiten hacerte una idea antes de tocar nada.

Por qué importa el orden de solo lectura

Todos los comandos anteriores solo leen el estado; ninguno cambia el sistema. Eso es deliberado, y es una disciplina que merece la pena mantener incluso cuando estás seguro de saber qué falla. Si una máquina está genuinamente comprometida, lo primero que quieres es una imagen fiel, capturada antes de alterar nada. Saltar directamente a «mata ese proceso» o «borra ese archivo» destruye las pruebas que te dirían cómo llegó ahí y, a menudo, si también está en otro sitio.

Es la misma lógica que el paso de contención de una checklist de respuesta a incidentes: aislar y observar antes de erradicar. Una pasada de triaje es la forma de construir esa observación rápidamente. Si algo resulta ser un incidente real, las notas que tomaste mientras ejecutabas estos comandos se convierten en el comienzo de tu cronología.

Una advertencia al interpretar la salida

Dos matices honestos. Primero, un binario SUID o un archivo escribible por todos no es automáticamente malicioso: muchos son legítimos. La habilidad no consiste en «encontrar salida que asuste», sino en conocer la línea base normal de tus sistemas lo bastante bien como para que lo anormal destaque. Esa línea base solo se consigue ejecutando estos comandos en máquinas sanas para saber cómo es lo aburrido.

Segundo, un host realmente comprometido puede mentirte: si un atacante ha reemplazado los binarios del sistema, ss o who podrían haber sido manipulados para ocultar su rastro. Es un caso avanzado, pero es la razón por la que las investigaciones serias también extraen pruebas desde fuera del sistema en ejecución. Para el triaje del día a día en máquinas que administras tú, estos comandos son exactamente el primer vistazo correcto.

Cómo usar esto. Practica toda esta pasada en tus propias VMs de laboratorio, idealmente justo después de generar algo de actividad, para que la salida signifique algo. Ejecuta estos comandos solo en sistemas que administres tú: leer otro sistema sin autorización no es triaje, es allanamiento.

Ninguno de estos comandos es exótico; son el vocabulario cotidiano de cualquiera que se ocupe de Linux. Tenerlos todos en un mismo sitio convierte «debería echarle un ojo a esta máquina» de una intención vaga en una rutina de cinco minutos que puedes ejecutar de verdad.