Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Procesos, usuarios y capacidades

5 tareas · 40 min · Principiante

Un ejecutor de CI es un conjunto de procesos que corren bajo cuentas de usuario, y la pregunta de auditoría es siempre la misma: con qué poder corre cada uno y quién se lo dio. En esta sala lees, sobre el ejecutor 03 de Molinos Zarzuela, la lista de procesos, el archivo de cuentas, las reglas de sudo y las capacidades de Linux, que dividen el poder de root en piezas. Todo es lectura de salidas ficticias.

0 de 5 · 0%

Objetivo de la sala

Un ejecutor de CI es un conjunto de procesos que corren bajo cuentas de usuario, y la pregunta de auditoría es siempre la misma: con qué poder corre cada uno y quién se lo dio. En esta sala lees, sobre el ejecutor 03 de Molinos Zarzuela, la lista de procesos, el archivo de cuentas, las reglas de sudo y las capacidades de Linux, que dividen el poder de root en piezas. Todo es lectura de salidas ficticias.

Tradicionalmente, un proceso era «root» (todo permitido) o no lo era. Las capacidades de Linux dividen ese poder en piezas que se conceden por separado: CAP_NET_BIND_SERVICE permite abrir puertos por debajo de 1024, CAP_NET_RAW permite usar conexiones en bruto y CAP_SYS_ADMIN es una pieza enorme que agrupa muchas operaciones de administración, tanto que se la conoce como «el nuevo root».

Una capacidad se puede asignar a un programa concreto (se lista con getcap), de modo que no hace falta ejecutarlo como root ni darle setuid. Para un auditor, cada capacidad es una pregunta: ¿necesita realmente esa pieza este programa?

Responde para continuar

¿Qué es una capacidad de Linux?

Ver pista de ayuda

Piensa en dividir un poder grande en trozos que se reparten.

La columna de usuario de ps es la primera fuente de un auditor: el ejecutor corre sus trabajos como svc-ejecutor, una cuenta sin privilegios. Un trabajo que aparece con otro usuario merece una explicación. Ejecuta ps y compara los procesos ejecutor-trabajo.

Responde para continuar

Escribe el PID del proceso ejecutor-trabajo que corre como root.

Ver pista de ayuda

Ejecuta ps y mira la columna USUARIO de cada ejecutor-trabajo.

Las reglas de sudo se guardan en /etc/sudoers.d, un archivo por regla. Una buena regla nombra el comando exacto: svc-ejecutor puede reiniciar un servicio, y nada más. Una regla ALL en la columna del comando equivale a darle root a esa cuenta, y los parches «temporales» se olvidan.

Lee los archivos de la carpeta y compara lo que permite cada uno.

Responde para continuar

Escribe el nombre del archivo de /etc/sudoers.d que permite a svc-ejecutor ejecutar cualquier comando como root.

Ver pista de ayuda

Haz cat de cada archivo de /etc/sudoers.d y busca una regla sin lista de comandos.

getcap -r /usr/local/bin lista los programas con capacidades asignadas. Cada línea trae el programa y las capacidades (=ep significa que están efectivas y permitidas). Lee el archivo con la revisión del 5 de octubre y pregúntate para cada una si el nombre del programa justifica la capacidad.

Responde para continuar

Escribe el nombre del programa al que se le asignó la capacidad más amplia, la de administración.

Ver pista de ayuda

Busca en /etc/capacidades.txt la que empieza por cap_sys_.

Un paso del pipeline necesita que su servidor de pruebas escuche en el puerto 443, algo que Linux reserva por defecto a procesos con privilegio. Hay tres maneras de resolverlo en la revisión, y solo una respeta el mínimo privilegio.

Responde para continuar

¿Cuál es la forma correcta de permitir que ese servidor use el puerto 443?

Ver pista de ayuda

Busca la opción que da el trozo mínimo y no toda la llave.

Inicia sesión para registrar tus puntos y progreso en el ranking.

Whoami-Labs Pro

Whoami-Labs Pro utiliza cookies

Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad