← Linux para seguridad defensiva

Lección 01

Orientarse sin causar cambios

Distingue rutas, inspección y comandos de sólo lectura antes de administrar.

16 min 4 retos

Antes de practicar

Orientarse es una medida de seguridad. En una terminal, muchas órdenes dependen del lugar desde el que se ejecutan, de la identidad efectiva y de cómo el intérprete resuelve nombres. Dos sesiones con el mismo texto pueden observar archivos distintos o recibir permisos distintos. Por eso una investigación responsable comienza con contexto, no con cambios. La secuencia útil es: confirmar dónde estás, confirmar quién eres, identificar el objeto sin seguir supuestos y capturar su estado antes de editar. Estas consultas parecen básicas, pero evitan que una hipótesis sobre «la configuración» termine aplicada a una copia, a otro entorno o a una ruta relativa inesperada.

Directorio de trabajo. Cada proceso tiene una ubicación actual que sirve como punto de partida para resolver rutas relativas. El comando pwd la imprime como ruta absoluta y no modifica el sistema. Conviene ejecutarlo antes de una inspección que use nombres como config/app.ini o ../datos. Una ruta absoluta empieza desde la raíz y nombra el destino sin depender de la ubicación actual; una relativa se interpreta desde el directorio de trabajo. Esto no vuelve malas a las rutas relativas, pero sí exige registrar el punto desde el que se usaron. Si un procedimiento sólo dice «abre settings», otra persona puede repetir el texto y observar un objeto distinto.

Ruta lógica y ruta física. El directorio mostrado por el intérprete puede incluir enlaces simbólicos, mientras la ubicación física resuelta puede estar en otro árbol. En una revisión esto importa porque permisos, propietario y política de montaje pertenecen al destino real. Antes de concluir que dos nombres representan dos copias, revisa si alguno es un enlace; antes de reemplazar un enlace, averigua qué consumidores dependen de él. Herramientas de consulta de metadatos y resolución de ruta permiten distinguir el nombre presentado del objeto alcanzado. El objetivo no es eliminar enlaces, sino evitar atribuir un hallazgo al archivo equivocado.

Listar no es leer contenido. ls muestra entradas de un directorio y admite opciones para incluir metadatos, ordenar o mostrar nombres que la vista básica omite. La forma ls -a incluye las entradas que comienzan con punto. En Unix, ese punto es una convención de interfaz, no una barrera: no cifra el archivo, no cambia su propietario y no concede ni retira permisos. Una auditoría que usa sólo el listado básico puede omitir archivos de entorno, configuración o control de herramientas. A la vez, incluirlos en el inventario no autoriza a divulgar su contenido; primero se evalúa si la identidad revisora necesita leerlo.

Los nombres engañan. Un archivo llamado copia_segura puede ser antiguo; otro llamado .env puede no contener secretos; un ejecutable con nombre familiar puede venir de una ruta distinta. Trata el nombre como una pista, no como evidencia suficiente. Observa tipo, propietario, modo, tamaño y tiempos; relaciona esos datos con el despliegue y la función esperada. Si necesitas contenido, empieza por una lectura que no lo transforme y evita herramientas que reescriben al salir. No toda consulta es inocua: algunas aplicaciones crean respaldos, cambian tiempos o normalizan saltos de línea incluso cuando se abren «sólo para mirar».

Identidad efectiva. whoami ofrece el nombre del usuario efectivo de la sesión, e id permite ver también identificadores y grupos. Para un fallo de acceso, el dato decisivo no es quién instaló la aplicación ni quién abrió originalmente el archivo, sino la identidad efectiva del proceso que intenta usarlo. Una terminal humana y un servicio suelen operar con cuentas y grupos diferentes. Probar como administrador demuestra que el objeto existe y que esa cuenta puede abrirlo; no reproduce la autorización del servicio. Compara explícitamente ambos contextos antes de ensanchar permisos.

Identidad declarada frente a identidad observada. La definición de un servicio puede decir con qué cuenta debería ejecutarse, pero el proceso vivo muestra con cuál se está ejecutando. Ambas fuentes responden preguntas distintas. La definición sirve para conocer la intención y hacer duradero un arreglo; el estado vivo sirve para diagnosticar este momento. Un arranque manual, una unidad antigua o una sobreescritura local pueden separarlas. Registra la discrepancia antes de corregirla y verifica después que el siguiente inicio use la identidad esperada. Cambiar sólo el proceso actual no corrige la fuente; cambiar sólo el archivo de definición no explica el estado que encontraste.

Observar antes de editar. Ante una configuración sospechosa, captura primero contenido relevante y metadatos: ruta resuelta, propietario, grupo, modo, tamaño y tiempos. Si el caso requiere integridad, calcula además una huella y registra de qué archivo exacto proviene. Esta línea base permite comparar, revertir y atribuir el efecto de una intervención. Editar de inmediato borra la posibilidad de saber si el problema ya estaba presente y mezcla evidencia con la acción del equipo. Cuando el servicio aún funciona parcialmente y no hay respaldo reciente, la necesidad de preservar el estado es mayor, no menor.

Separar consulta y cambio. Una sesión defensiva puede dividirse en dos fases con registro explícito. En la primera sólo se recopilan hechos y se formulan hipótesis: ubicación, identidad, archivos, permisos, procesos relacionados y mensajes de error. En la segunda se aprueba un cambio pequeño con un resultado esperado y una forma de volver atrás. Mezclar ambas fases hace difícil saber qué salida pertenecía al estado original. También aumenta la tentación de hacer varias modificaciones juntas; si el sistema mejora, no podrás identificar cuál era necesaria, y si empeora, no sabrás cuál revertir.

Lecturas con alcance controlado. Antes de una búsqueda recursiva, delimita el árbol y la pregunta. Recorrer todo el sistema puede producir ruido, errores de acceso y exposición innecesaria de datos. Si investigas la configuración de una aplicación ficticia, empieza por su directorio declarado y amplía sólo con una razón. Evita copiar resultados completos a tickets o chats: una salida de diagnóstico puede incluir usuarios, rutas internas o valores sensibles. Resume el hallazgo y conserva el detalle en un canal con controles adecuados. Observar con mínimo privilegio también implica minimizar lo que recolectas.

Leer mensajes literalmente. «No existe» y «permiso denegado» no son sinónimos. Un nombre mal resuelto, un directorio sin travesía, un enlace roto y un objeto ausente pueden conducir a síntomas parecidos, pero piden comprobaciones distintas. Copia el mensaje exacto, la orden de consulta y el contexto de identidad. No completes mentalmente lo que «seguro quiso decir» el sistema. Si otra herramienta envuelve el error, busca la fuente más cercana: gestor del servicio, registro de la aplicación o llamada de sistema observada mediante un procedimiento aprobado. El diagnóstico mejora cuando cada inferencia se separa del dato que la sostiene.

Cuidado con el intérprete. Espacios, comodines y variables pueden transformar una orden antes de que la reciba la herramienta. Durante una inspección, trata rutas inesperadas como datos que deben citarse de forma segura y evita construir órdenes destructivas a partir de resultados no revisados. Para aprender, usa árboles ficticios y operaciones de lectura. El propósito no es memorizar toda la sintaxis del shell, sino reconocer cuándo la expansión puede ampliar el alcance. Una orden que parece apuntar a un archivo puede terminar actuando sobre varios si el intérprete expande un patrón. Antes de administrar, imprime o enumera el conjunto objetivo.

Ejemplo de investigación. Una aplicación informa que no carga un archivo oculto. Primero se confirma la ruta actual del proceso o del procedimiento; luego se lista el directorio incluyendo nombres con punto, sin asumir que estar oculto equivale a estar protegido. Después se compara la identidad efectiva de la aplicación con propietario, grupo y permisos del archivo y de sus directorios. Por último se captura el estado antes de proponer cambios. Esta secuencia permite distinguir entre ruta equivocada, entrada omitida por la interfaz y autorización insuficiente. Dar acceso global al primer error habría ocultado el diagnóstico y creado exposición.

Cómo elegir una primera acción. Prefiere la consulta que reduzca más incertidumbre sin modificar el estado. Si no sabes dónde opera la terminal, obtén la ruta absoluta. Si falta una entrada cuyo nombre empieza con punto, amplía el listado. Si una acción funciona manualmente y falla como servicio, compara usuarios y grupos efectivos. Si una configuración puede estar dañada, registra contenido y metadatos antes de tocarla. Esas decisiones no dependen de acertar un comando por intuición: dependen de identificar qué hecho falta para separar hipótesis rivales.

Cuaderno reproducible. Para cada consulta anota hora, host o entorno, ruta absoluta, identidad efectiva, orden ejecutada y salida relevante sin secretos. Distingue hechos de hipótesis con frases separadas. Si luego amplías el alcance, registra por qué y qué directorio nuevo incluiste. Este hábito permite que otra persona repita la observación y detecte si el sistema cambió entre mediciones. También evita pegar una sesión completa en un ticket: seleccionas la evidencia que responde a la pregunta y proteges el resto. Una investigación pequeña, bien delimitada y fechada suele ser más útil que una captura enorme sin contexto.

Criterio de salida. Una inspección está lista para pasar a cambio cuando puedes nombrar la ruta exacta, la identidad que experimenta el problema, el estado original preservado, la diferencia entre lo esperado y lo observado y una modificación mínima con prueba y reversión. Si sólo sabes que «desde mi terminal funciona», todavía no conoces el contexto relevante. Si sólo tienes un listado sin entradas ocultas, el inventario está incompleto. Y si ya editaste antes de capturar, documenta esa limitación: una reconstrucción posterior no debe presentarse como evidencia del estado que existía antes.

Ponlo en práctica