← Linux para seguridad defensiva

Lección 02

Procesos y privilegios

Evalúa identidad, señales, consumo y exposición de procesos.

17 min 4 retos

Antes de practicar

Un proceso no es sólo un nombre en una lista. Es una instancia en ejecución con un identificador, un programa de origen, una identidad efectiva, un proceso padre, archivos abiertos, conexiones, límites, variables y un momento de inicio. Una revisión defensiva relaciona esas piezas con una función conocida. Ver un nombre desconocido no demuestra una intrusión, del mismo modo que reconocer un nombre no demuestra legitimidad. La pregunta útil es si la combinación de procedencia, identidad, ruta, tiempo y comportamiento concuerda con el inventario y con los cambios autorizados. Sólo entonces se decide si observar, corregir una configuración o escalar una señal.

Identidad y alcance. Cada proceso opera con identificadores de usuario y grupos que el núcleo usa al evaluar permisos. Algunos programas cambian de identidad durante el arranque; otros conservan la cuenta definida por el gestor. Por eso conviene observar la identidad efectiva del proceso vivo y compararla con la definición del servicio. Ejecutar como root concede autoridad administrativa muy amplia: un error de programación, una dependencia defectuosa o una entrada inesperada puede afectar más recursos de los que la función necesita. El nombre del proceso, su popularidad o el hecho de estar dentro de un contenedor no reducen por sí solos esa autoridad.

De la función a los permisos. Para diseñar una cuenta de servicio, inventaría operaciones concretas: qué rutas lee, dónde escribe, a qué destinos se conecta, qué puerto utiliza y qué acciones privilegiadas requiere de verdad. Un servidor de reportes que lee sus propios datos y escucha en un puerto alto suele poder operar con una cuenta dedicada, propiedad acotada y sin autoridad administrativa general. Si aparece una necesidad excepcional, no se resuelve dando todo el conjunto de privilegios; se estudia si puede expresarse como permiso de archivo, grupo, capacidad estrecha o componente separado. El diseño se prueba con la identidad real, no desde una sesión más poderosa.

Por qué una cuenta dedicada. Reutilizar la cuenta de otra aplicación une sus zonas de confianza. Todo archivo que uno de los procesos pueda leer o modificar queda potencialmente al alcance del otro, y los registros dejan de atribuir con claridad cuál actuó. Una cuenta por función permite conceder grupos y rutas con precisión, aplicar límites distintos y revocar un servicio sin romper al vecino. Dedicada no significa humana ni interactiva: normalmente no necesita iniciar sesión ni poseer un directorio lleno de herramientas. La meta es una identidad estable y reconocible cuya autoridad corresponda al trabajo del proceso.

El proceso padre aporta contexto. Un servicio iniciado por el gestor, una tarea programada y una herramienta abierta por una persona pueden ejecutar el mismo binario con significados distintos. La relación padre-hijo ayuda a reconstruir cómo nació, pero no basta aislada: los procesos terminan, los identificadores se reutilizan y algunos programas crean trabajadores. Combina el padre con hora de inicio, línea de ejecución, ruta del binario y unidad asociada. Si conservas una instantánea para diagnóstico, fecha la observación; presentarla después como estado actual sería confundir una fotografía con un sistema vivo.

Ruta y procedencia. El texto mostrado como nombre puede abreviarse o ser elegido por el propio programa. Busca la ruta ejecutable observada y relaciónala con el paquete o artefacto que debía instalarla. Una ruta bajo /usr/bin no convierte automáticamente al archivo en confiable, pero ofrece una afirmación comprobable: qué paquete declara esa ruta, qué versión está instalada y cuándo cambió. Evita borrar un binario sólo porque es nuevo. Primero establece si una instalación o mantenimiento registrado explica su aparición y verifica integridad con las fuentes de la organización. Si la procedencia no cuadra, conserva evidencia y escala según el procedimiento.

Línea base útil. Una línea base no es una lista eterna de nombres permitidos. Describe lo que una función suele ejecutar, con qué identidad, desde qué ruta, bajo qué gestor y dentro de qué rango de recursos. Debe actualizarse mediante cambios aprobados y conservar historia suficiente para explicar novedades. Si el nombre cambia después de un despliegue, correlaciona la hora, el paquete, la versión y la identidad. Una coincidencia temporal es evidencia a favor de una explicación, no confirmación final. Una ausencia en la lista también puede indicar que el inventario envejeció. El veredicto responsable expresa ese grado de certeza.

Razonar una correlación. Supón que el registro de cambios muestra un paquete autorizado a las 08:30, el gestor de paquetes registra su instalación correcta dos minutos después y enseguida aparece un proceso con el mismo paquete, versión, ruta prevista e identidad del servicio. La conclusión provisional puede decir que la novedad queda explicada por ese mantenimiento, pendiente de verificar firma, origen y definición. No hay base para eliminarla sólo por ser nueva, pero tampoco para declarar legítimo todo lo que comparta un nombre. Si la ruta, la versión o el padre no coinciden, la hipótesis pierde fuerza y la revisión se amplía.

Consumo de recursos como señal. CPU, memoria, disco y descriptores elevados pueden indicar carga legítima, fuga, configuración equivocada o actividad no prevista. Compara con la función y con una ventana equivalente; un valor aislado rara vez identifica causa. Antes de detener, determina el impacto actual, los trabajos en curso y si el gestor volverá a iniciarlo. Limitar recursos puede proteger la disponibilidad mientras se diagnostica, pero un límite mal elegido también puede provocar ciclos de fallo. Registra la medición, el periodo y la identidad observada para que otra persona pueda interpretar el mismo dato.

Señales y cierre ordenado. Una solicitud normal de terminación da al programa oportunidad de dejar de aceptar trabajo, terminar operaciones, cerrar archivos y liberar recursos. El procedimiento defensivo suele pedir ese cierre, observar durante un plazo razonable y escalar sólo si no responde o si el riesgo exige una contención más rápida. Forzar la terminación impide la limpieza y puede dejar datos parciales, bloqueos o evidencia menos clara. No significa esperar indefinidamente: se define de antemano un plazo, qué señales muestran progreso y quién autoriza el siguiente nivel. Una acción gradual puede ser firme y controlada.

Antes de detener un servicio, mira al gestor. Matar una instancia sin entender su política puede hacer que reaparezca de inmediato y convertir una intervención en un bucle. El gestor conoce la unidad, la política de reinicio, las dependencias y el estado principal. Si la causa es una carga legítima, quizá se necesita capacidad; si es una configuración determinista, repetir arranques no la resuelve. Decide si buscas recuperar disponibilidad, preservar evidencia o impedir daño, porque cada objetivo cambia la urgencia y el orden. Documenta tanto la solicitud enviada como el resultado observado.

Entorno del proceso. Las variables permiten entregar parámetros al inicio, pero forman parte del estado que distintas herramientas pueden copiar. Dependiendo de permisos y plataforma, diagnósticos, volcados, trazas, informes de error o procesos con la misma identidad pueden exponer más de lo previsto. No asumas que un secreto queda protegido sólo porque no está en la línea de ejecución. Evalúa quién puede inspeccionar el proceso, qué sistemas capturan su estado, cuánto vive el valor y cómo se rota. Evita imprimir el entorno completo en registros o adjuntarlo sin enmascarar datos a un caso de soporte.

Entrega de secretos con criterio. El canal apropiado depende del modelo de amenaza y de las capacidades disponibles: un archivo con permisos estrechos, un mecanismo del gestor o un servicio de secretos pueden reducir algunas exposiciones y crear otras responsabilidades. Lo importante es seguir el valor durante todo su ciclo: almacenamiento, entrega, memoria, diagnóstico, renovación y revocación. Si una herramienta necesita privilegios para inspeccionar procesos, ese privilegio también entra en la revisión. La pregunta no es si el canal se llama «secreto», sino qué identidades pueden obtener el valor por cualquier superficie razonable.

Observabilidad sin sobreexposición. Para diagnosticar un proceso suelen bastar identificador, estado, consumo, ruta, identidad, padre y tiempos. Capturar argumentos y entorno puede añadir contexto, pero también datos sensibles. Recoge primero el conjunto mínimo y amplía con una razón. En informes, sustituye valores privados por marcadores y conserva el original sólo donde la investigación lo requiera y tenga acceso controlado. Una captura extensa no es automáticamente mejor evidencia: si nadie sabe qué pregunta responde, se convierte en ruido y en una nueva copia de información que hay que proteger.

No confundir proceso y servicio. Un servicio puede incluir un proceso principal, trabajadores, temporizadores y sockets administrados; buscar un nombre manualmente puede omitir relaciones que el gestor sí conoce. A la inversa, un proceso interactivo no debe atribuirse a una unidad sólo porque usa el mismo programa. Consulta ambas vistas: la del gestor para intención, dependencias y política, y la del sistema para la instancia viva. Si difieren, la discrepancia es un hallazgo que se explica, no un motivo para escoger la fuente que confirme la primera sospecha.

Decisiones que preparan la práctica. Si una función usa archivos propios y un puerto no privilegiado, una cuenta dedicada con permisos mínimos reduce el impacto frente a mantener autoridad total. Si el programa puede limpiar, se solicita el cierre normal y se observa antes de recurrir a fuerza. Si recibe secretos en el entorno, se revisan herramientas de diagnóstico, volcados, registros y procesos autorizados. Si aparece un nombre nuevo tras mantenimiento, se correlacionan cambio, paquete, versión, ruta, padre e identidad y se redacta una conclusión provisional, no una absolución.

Matriz rápida de decisión. Ante un proceso inesperado, pregunta primero si sigue activo y qué riesgo causa ahora; después identifica usuario, padre, ruta, paquete, versión y hora. Compara esos datos con unidad, inventario y mantenimiento. Si todo encaja, conserva una conclusión provisional y termina las verificaciones de procedencia. Si varios atributos difieren o el proceso tiene autoridad excesiva, preserva los datos observados y escala sin experimentar sobre él. Ante consumo alto, separa contención de causa. Ante cierre necesario, define plazo y criterio de escalada. Esta matriz evita que una sola señal —nombre nuevo, CPU alta o cuenta poderosa— se convierta por sí sola en veredicto.

Lista de cierre. Una revisión de proceso es defendible cuando distingue observación de inferencia, fecha la instantánea, relaciona identidad y privilegios con tareas reales, comprueba procedencia más allá del nombre y considera el efecto de cualquier señal o terminación. Si el arreglo propuesto es «ejecutarlo como administrador para evitar permisos», está trasladando el problema a una superficie mayor. Si la reacción a una novedad es borrarla sin correlación, puede destruir evidencia o romper un despliegue legítimo. El criterio defensivo reduce capacidad y aumenta trazabilidad al mismo tiempo.

Ponlo en práctica