0% encontró este documento útil (0 votos)
353 vistas25 páginas

Introduction Rundeck Secure Script Executions 37162.en - Es

Seguridad en Rundekc Spanish hardering LDAP HTTPS TLS ACL

Cargado por

Carlos Arce
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
353 vistas25 páginas

Introduction Rundeck Secure Script Executions 37162.en - Es

Seguridad en Rundekc Spanish hardering LDAP HTTPS TLS ACL

Cargado por

Carlos Arce
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Instituto SANS

Sala de lectura de seguridad de la información

Introducción a Rundeck para


ejecuciones de script seguras
______________________________

John Becker

Copyright SANS Institute 2020. El autor retiene todos los derechos.

Este documento es del sitio de la Sala de Lectura del Instituto SANS. No se permite volver a colocar sin permiso expreso por escrito.
Introducción a Rundeck para Secure Script
Ejecuciones

Certificación de oro GIAC (GSEC)

Autor: John Becker, [email protected]


Asesor: Stephen Northcutt
Aceptado: 10 agosto 2016

Resumen

En la actualidad, muchas organizaciones admiten sistemas físicos, virtuales y basados ​en la nube en una amplia gama de sistemas operativos.
Proporcionar acceso de privilegios mínimos a los sistemas puede ser una compleja malla de archivos sudoers, perfiles, políticas y reglas de firewall. Si
bien las herramientas de administración de la configuración, como Puppet o Chef, ayudan a garantizar la coherencia, no simplifican inherentemente el
proceso para los usuarios o administradores. Además, los equipos actuales de DevOps están impulsando cambios más rápido que nunca. Mantenerse al
día con los nuevos servicios y aplicaciones a menudo obligan a los administradores de sistemas a usar reglas de acceso más generales y, por lo tanto,
exponen un acceso más amplio de lo necesario. Rundeck es una plataforma de orquestación basada en web con potentes ACL y conectividad basada en
ssh para una amplia gama de sistemas operativos y dispositivos. La interfaz de usuario simple para Rundeck se combina con API REST compatibles con
DevOps y archivos de configuración YAML o XML. El uso de Rundeck para el acceso al servidor mejora la seguridad mientras se mantiene al ritmo de los
entornos que cambian rápidamente.

© 201 6 6 El instituto SANS El autor retiene todos los derechos.


Introducción a Rundeck para Secure Script Executions 2

1. Introducción
La simplicidad y el acceso con privilegios mínimos son dos pilares de la seguridad de la información. Un sistema complejo

introduce más defectos y es difícil de probar (Schneier, 1999). Las pautas del NIST establecen "... las organizaciones deben

basar la política de control de acceso en el principio del mínimo privilegio ..." (Swanson y Guttman, 1996). Sin embargo, la

simplicidad y el mínimo privilegio pueden estar reñidos entre sí en una organización que respalda una colección dispareja de

sistemas operativos , dispositivos de red y entornos de nube híbrida. Cada sistema operativo para estos dispositivos tiene una

implementación de control de acceso diferente. Unix y Linux tienen sudo y SELinux, Windows tiene Políticas de grupo y los

dispositivos de red tienen varias opciones. Esta complejidad del sistema se combina con entornos de nube elásticos y DevOps

cambian los resultados de velocidad en conflicto con las políticas de seguridad y los controles de acceso (Lawler,

2015).

Los controles de acceso con privilegios mínimos a menudo se implementan con los controles de acceso basados ​en roles

(RBAC), pero "a menudo son difíciles o costosos de lograr porque es difícil adaptar el acceso en función de diversos atributos o

restricciones" (Hu, Ferraiolo y Kuhn, 2006). Es difícil para un solo sistema mantenerse al día con la gestión de configuración

automatizada y los entornos virtuales dinámicos. Todavía hay momentos en que un usuario necesita una sesión interactiva (por

ejemplo, SSH) para completar una tarea. Sin embargo, la mayoría de los comandos se pueden procesar de forma centralizada.

interactivamente o programado, y las solicitudes atípicas se pueden marcar y otorgar acceso temporal. Aunque muchas

herramientas permiten la administración de la configuración y el acceso remoto, Rundeck se destaca como una solución robusta

para controlar el acceso mediante la combinación de una interfaz fácil de usar y controles de acceso granulares.

Rundeck es una plataforma de orquestación de código abierto, planificador de trabajos y automatización de runbook escrita en

Java (rundeck.org, 2016). Las mismas herramientas y scripts que los equipos de DevOps, SysAdmin y Security usan hoy en día se

pueden implementar con controles de acceso granulares en Rundeck. A su vez, estos scripts y herramientas pueden delegarse de

manera segura a diferentes grupos de manera controlada. Esta delegación de acceso puede ser controlada por la versión y

programada para mantener el ritmo de los equipos de DevOps. Estas ejecuciones con script se registran centralmente en la base de

datos Rundeck. Los equipos de operaciones y desarrollo mantienen su lanzamiento

John Becker,• [email protected]

© 201 6 6 El instituto SANS El autor retiene todos los derechos.


Introducción a Rundeck para Secure Script Executions 3

velocidad, mientras que los equipos de seguridad ven el acceso con menos privilegios, registro mejorado y una herramienta

compartida para la respuesta a incidentes.

2. Conceptos básicos de Rundeck

Algunos se refieren a Rundeck como "la navaja suiza para operaciones" (rundeck.org, 2016). La función principal de la aplicación

es ejecutar trabajos (scripts o comandos) en los nodos de destino. La interfaz de usuario web, la línea de comandos, la API y el

planificador son todos desencadenantes de trabajos. Los trabajos se pueden agrupar para tareas como runbooks automatizados,

implementaciones de software y respuesta a incidentes.

2.1. Preparar
Rundeck está disponible como una instalación de "lanzador" basada en jar Java, paquete Debian o Ubuntu, o un

paquete RPM. Los ejemplos en este documento usarán Ubuntu 16.04. Comience con la instalación de Java:

sudo apt-get install openjdk-7-jdk

Luego descargue el último paquete Rundeck Debian y verifique el hash SHA de

http://rundeck.org/downloads.html .

wget http://dl.bintray.com/rundeck/rundeck-deb/rundeck-2.6.8-1-GA.deb shasum rundeck-2.6.8-1-GA.deb

865c669c8694a9b6fa595363c9906cf771818337 rundeck-2.6.8-1-GA.deb

Verifique que el hash SHA coincida con lo publicado en rundeck.org, luego instale el paquete e inicie el servicio

rundeckd.

sudo dpkg -i rundeck-2.6.8-1-GA.deb sudo service rundeckd start

De forma predeterminada, Rundeck se ejecuta como un usuario sin privilegios "rundeck" en 0.0.0.0 (todas las interfaces) en el

puerto TCP 4440. Los usuarios pueden iniciar sesión como "admin" para el nombre de usuario y contraseña predeterminados en

http: // <hostname>: 4440 . La base de datos HSQLDB incorporada es suficiente para instancias pequeñas, pero la mayoría de los

casos de uso de producción necesitan una base de datos relacional dedicada (Rundeck

John Becker,• [email protected]

© 201 6 6 El instituto SANS El autor retiene todos los derechos.


Introducción a Rundeck para Secure Script Executions 4

Guía del administrador, 2016). MySQL es la base de datos preferida con soporte para MS-SQL también (Schueler, 2015).

Scaling Rundeck está fuera del alcance de este documento.

2.2. Autenticacion de usuario

Rundeck admite tres tipos de autenticación: PropertyFileLoginModule (/etc/rundeck/realm.properties), LDAP y PAM.

Muchas organizaciones prefieren LDAP para acceso centralizado. El módulo PAM funciona bien en configuraciones

donde los usuarios se administran localmente con la administración de la configuración (por ejemplo, Puppet).

PropertyFileLoginModule es el valor predeterminado y suficiente para las instancias de prueba de Rundeck.

PropertyFileLoginModule admite tres tipos de hash u ofuscación de contraseñas: OBF, MD5 y CRYPT. Estos están

integrados en el proyecto Jetty utilizado por Rundeck.

De los tipos compatibles, OBF es el menos seguro, ya que es un método de ofuscación reversible (Jetty, 2016).

MD5 ha sido inseguro para el hash de contraseñas durante casi 20 años ( Dobbertin 1996). CRYPT es la clase Java de

UnixCrypt (código fuente Jetty, 2016) que se limita a un algoritmo DES de 56 bits (clase UnixCrypt, 2016). Existen

numerosas herramientas superiores para cifrar, auditar y administrar LDAP y PAMPropertyFileLoginModule. Por lo

tanto, LDAP y PAM son los métodos de autenticación de producción recomendados.

2.3. Endurecimiento

Una herramienta como Rundeck tiene claves para acceder a una amplia gama de sistemas críticos en una organización. Los

servidores Rundeck deben colocarse en un enclave protegido debido a la necesidad de confidencialidad e integridad (Rome, sf). Las

conexiones entrantes están limitadas a HTTPS para los usuarios y SSH para la administración de Rundeck. Las conexiones salientes

dependen de los complementos de nodo utilizados, pero generalmente requieren SSH en el puerto 22 como mínimo. Después de

asegurar el acceso de red al Rundeck, se debe tener cuidado para configurar y monitorear el propio host.

2.3.1. Sistema de archivos

Rundeck se instala con permisos de archivo para el directorio / etc / rundeck establecido en 655 y propiedad de root. Los

archivos dentro de / etc / rundeck tienen la propiedad de "rundeck" y el grupo "rundeck" con 640 permisos de archivo. Estos

elementos son confidenciales, ya que comprenden listas de control de acceso (* .aclpolicy), cuentas de usuario (realm.properties) y

archivos de configuración principales que incluyen contraseñas (* .properties). Desde la perspectiva del sistema operativo, esto

puede ser

John Becker,• [email protected]

© 201 6 6 El instituto SANS El autor retiene todos los derechos.


Introducción a Rundeck para Secure Script Executions 5

aceptable como el usuario "rundeck" no tiene acceso de shell. Sin embargo, la aplicación Rundeck tiene un vacío en el que los

usuarios pueden ejecutar trabajos localmente como el usuario "rundeck" en Linux. Este acceso permite que los usuarios de

Rundeck no privilegiados lean y modifiquen elementos críticos en / etc / rundeck al ejecutar trabajos o comandos ad-hoc contra el

nodo "localhost". Restringir los objetivos "localhost" a los administradores de Rundeck evita el acceso involuntario a configuraciones

críticas. Una capa adicional de protección es cambiar la propiedad del archivo dentro de / etc / rundeck a "root: rundeck". Los

permisos de 640 archivos permitirán el acceso de lectura del usuario "rundeck", pero limitarán las escrituras al usuario raíz.

Finalmente, los archivos en / etc / rundeck deben ser monitoreados de cerca para detectar cualquier cambio con un programa Host

IDS como Tripwire u OSSEC.

root @ galactica : / etc / rundeck # chown root: rundeck *• root @


galactica : / etc / rundeck # ls -al total 56•

drwxr-xr-x 3 root root 4096 17 de julio 21:00. drwxr-xr-x 102


root root 4096 17 de julio 21:17 ..
- rw-r ----- 1 rootdeck raíz 738 10 de junio 13:37 admin.aclpolicy
- rw-r ----- 1 rootdeck raíz 1104 10 de junio 13:37 apitoken.aclpolicy
- rw-r ----- 1 rootdeck raíz 511 10 de junio 13:37 cli-log4j.properties
- rw-r ----- 1 rootdeck raíz 1284 10 de junio 13:37 framework.properties
- rw-r ----- 1 raíz rundeck 141 10 de junio 13:37 jaas-loginmodule.conf
- rw-r ----- 1 raíz rundeck 7661 10 de junio 13:37 log4j.properties
- rw-r ----- 1 rundeck raíz 1788 10 de junio 13:37 perfil
- rw-r ----- 1 rundeck raíz 549 10 de junio 13:37 project.properties
- rw-r ----- 1 rundeck raíz 986 10 de junio 13:37 realm.properties
- rw-r ----- 1 raíz rundeck 416 10 de junio 13:37 rundeck-config.properties drwxr-xr-x 2 root
rundeck 4096 17 de julio 21:00 ssl

2.3.2. Eliminar acceso predeterminado

El primer paso para una configuración de instancia de Rundeck de producción debe ser reemplazar el inicio de sesión del

usuario administrador según CSC 5.3 (Critical Security Controls, 2015). La cuenta predeterminada reside en la última sección de

/etc/rundeck/realm.properties. Elimine o comente la sección a continuación si usa LDAP o PAM. Si se ve obligado a usar la

autenticación PropertyFileLoginModule, cambie el nombre de usuario y la contraseña 'admin' y almacénelos en formato MD5

según las instrucciones en http://rundeck.org/docs/administration/authenticating-users.html .

John Becker,• [email protected]

© 201 6 6 El instituto SANS El autor retiene todos los derechos.


Introducción a Rundeck para Secure Script Executions 6

# #Esto establece las cuentas de usuario predeterminadas para la aplicación Rundeck


##
admin: admin, usuario, administrador, arquitecto, implementar, construir

2.3.3. Habilitar el transporte de seguridad

Rundeck escucha en texto claro en http: // <hostname>: 4440. El transporte HTTP de texto en claro es una mala práctica

para la administración del sistema. CSC 3.4 establece que se debe utilizar un cifrado seguro (TLS) (Critical Security Controls,

2015). Hay dos opciones para proporcionar seguridad de transporte HTTPS. La primera opción es habilitar SSL según las

instrucciones en

http://rundeck.org/docs/administration/configuring-ssl.html . Esta configuración funciona y da como resultado que el servicio

Rundeck escuche en https: // <hostname>: 4443. Sin embargo, hay otra opción para usar un proxy web para la terminación

SSL frente a Rundeck. Apache tiene los beneficios adicionales de escuchar en el puerto HTTPS estándar de 443, lo que

permite el soporte para la autenticación multifactor, así como también proporciona opciones para registros adicionales y

firewalls de aplicaciones web.

El siguiente ejemplo se centrará en Apache para la terminación SSL, proxy inverso y Google

Authenticator. El primer paso es instalar Apache y habilitar los módulos proxy y SSL necesarios:

sudo apt-get install apache2 sudo a2enmod


proxy sudo a2enmod proxy_http sudo a2enmod
reescribir sudo a2enmod deflate sudo a2enmod
encabezados sudo a2enmod proxy_connect sudo
a2enmod proxy_html sudo a2enmod ssl

Luego, configure el certificado SSL y la clave privada utilizada por Apache en / etc / ssl / certs y / etc / ssl / private.

Un certificado estándar SSL x.509 y una clave están disponibles de proveedores como Verisign o Microsoft Certificate

Services. Para este documento, se utilizará un certificado privado:

John Becker,• [email protected]

© 201 6 6 El instituto SANS El autor retiene todos los derechos.


Introducción a Rundeck para ejecuciones de script seguras 7

sudo openssl req -x509 -nodes -days 365 -newkey rsa: 2048 -keyout
/etc/ssl/private/rundeck-apache.key -out /etc/ssl/certs/rundeck-apache.crt

Una vez que el certificado y la clave estén listos, aplique las configuraciones a continuación para que Apache redirija

(mod_proxy) y finalice las conexiones SSL (mod_ssl). Esta configuración obligará a las solicitudes HTTP a usar HTTPS,

finalizar las conexiones HTTPS con TLS y cifrados seguros, y conectarse a Rundeck en 127.0.0.1 en lugar de la interfaz

pública.

/etc/apache2/sites-available/rundeck-redirect-port80.conf

<VirtualHost _default_: 80>


ServerName rundeck-prod.galactica.test: 80 Redirect permanente / https:
//rundeck-prod.galactica.test/ </VirtualHost>

John Becker,• [email protected]

© 201 6 6 El instituto SANS El autor retiene todos los derechos.


Introducción a Rundeck para Secure Script Executions 8

/etc/apache2/sites-available/rundeck-ssl.conf

<VirtualHost _default_: 443>

ServerName rundeck-prod.galactica.test: 443 ServerAlias ​*

.galactica.test SSLProxyEngine On SSLEngine On

ProxyPreserveHost On SetEnv
proxy-sendchunked ProxyVia On
ProxyRequests Off

ErrorLog $ {APACHE_LOG_DIR} / ssl_error_log TransferLog $

{APACHE_LOG_DIR} / ssl_transfer_log LogLevel advierte

SSLProtocol TLSv1

SSLCipherSuite HIGH:! ANULL:! MD5


SSLHonorCipherOrder On

SSLCertificateFile /etc/ssl/certs/rundeck-apache.crt SSLCertificateKeyFile


/etc/ssl/private/rundeck-apache.key RequestHeader set Front-End-Https
"On" RequestHeader set X-Fordered-Proto "https" RequestHeader set X-
Puerto reenviado 443

Encabezado agregar Strict-Transport-Security "max-age = 631138519; includeSubdomains; preload"

Encabezado agregar X-Frame-Options SAMEORIGIN Encabezado

agregar X-Content-Type-Options nosniff Encabezado agregar

X-XSS-Protection "1; mode = block" ProxyPass / http://127.0.0.1:4440/

keepalive = On ProxyPassReverse / http : //127.0.0.1: 4440 /

</VirtualHost>

John Becker,• [email protected]

© 201 6 6 El instituto SANS El autor retiene todos los derechos.


Introducción a Rundeck para ejecuciones de script seguras 9

Con los archivos de configuración en / etc / apache2 / sites-available, elimine los valores predeterminados de / etc / apache2 /

sites-enabled y copie las nuevas configuraciones de rundeck. Reinicie Apache para cargar nuevas configuraciones.

cd / etc / apache2 / sites-enabled sudo rm


000-default.conf
sudo ln -s / etc / apache2 / sites-available / rundeck- *.

Configure el valor "grails.serverURL" en /etc/rundeck/rundeck-config.properties para aceptar solicitudes de la URL

HTTPS. Reinicie Rundeck para cargar la configuración.

# #cambiar el nombre de host aquí


grails.serverURL = https: //rundeck-prod.galactica.test

Finalmente, establezca “-Drundeck.jetty.connector.forwards = true” en / etc / rundeck / profile para retener la información del

encabezado XFF (consulte

http://rundeck.org/docs/administration/configuring-ssl.html#using-an-ssl-terminatedproxy para más información).

Rundeck ahora tiene TLS, terminación de cifrado fuerte en Apache. Hay módulos adicionales disponibles para la

autenticación multifactor (por ejemplo, Google Authenticator) y la protección de firewall de aplicaciones web (por

ejemplo, ModSecurity).

2.4. Definiciones de nodos

Los nodos son servidores, máquinas virtuales, instancias o dispositivos a los que Rundeck puede acceder a través de SSH o

complementos de conexión. La opción predeterminada para las definiciones de nodo es utilizar el proveedor integrado que se administra

mediante archivos XML. Los entornos pequeños y relativamente estáticos funcionan bien con el proveedor predeterminado. Las redes

dinámicas más grandes se benefician de los complementos del proveedor de nodos, como los complementos AWS EC2 o PuppetDB.

Una de las características más convincentes de Rundeck es cómo maneja los metadatos. Los nodos Rundeck tienen

atributos que describen la instancia (por ejemplo, nombre, dirección IP, sistema operativo, etc.). El proveedor de nodos gestiona

los atributos en un formato de valor clave (por ejemplo, el complemento EC2 completará el atributo AWS EC2 "instanceId =

i-389f2cdk" para un nodo Rundeck correspondiente). Las etiquetas son un tipo de atributo utilizado para clasificaciones o

categorías (Rundeck User Guide, 2016). La combinación de etiquetas y atributos permite la orientación dinámica de hosts para

trabajos y comandos ad-hoc.

John Becker,• [email protected]

© 201 6 6 El instituto SANS El autor retiene todos los derechos.


Introducción a Rundeck para Secure Script Executions 10

2.5. Conectividad
Rundeck dispone de una amplia gama de complementos para ampliar el acceso más allá de la conectividad SSH

predeterminada (Rundeck.org, nd). El complemento WinRM (Windows Remote Management) está disponible para comandos

nativos de Windows. Una alternativa es usar SSH en Windows con el servidor OpenSSH o similar. En otros casos, Rundeck

funciona como un front-end para los comandos Puppet, Ansible o Chef. Se necesita una revisión cuidadosa para determinar qué

conectividad y acceso debería tener Rundeck en una organización. En un extremo del espectro, Rundeck podría tener privilegios

de root o equivalentes de administrador en todos los dispositivos y depender exclusivamente de ACL internas para los controles.

Otros equipos podrían usar múltiples instancias de Rundeck con cuentas de servicio restringidas para reducir el impacto de un

compromiso del servidor Rundeck.

2.6. Gestión de claves


El sistema de almacenamiento de claves de Rundeck almacena claves privadas como archivos locales o como BLOBS en la

base de datos adjunta. Ninguna de las soluciones está encriptada a menos que use un complemento de Storage Converter (Rundeck

Administrator Guide, 2016). El almacenamiento de claves en una base de datos externa como MySQL las hace disponibles para

múltiples instancias de Rundeck, pero también tiene una mayor superficie de ataque. Use el complemento Storage Converter para cifrar

las claves guardadas en la base de datos.

Es posible usar el almacenamiento del sistema de archivos para Rundeck Key Storage con Storage Converter para el

cifrado, pero la compensación entre seguridad y disponibilidad puede no valer la pena. Los reinicios de Rundeck requerirían leer la

contraseña del convertidor de almacenamiento de una fuente local (archivo, dongle, etc.) o escribir manualmente al inicio. De

cualquier manera, los inicios de servicio son más complicados y la clave de cifrado es potencialmente accesible en la memoria o

en el disco. Un equilibrio razonable con la confidencialidad y la disponibilidad es cifrar el sistema de archivos local dentro del

sistema operativo o la máquina virtual y mantener el almacenamiento de claves Rundeck en texto sin cifrar.

John Becker,• [email protected]

© 201 6 6 El instituto SANS El autor retiene todos los derechos.


Introducción a Rundeck para ejecuciones de script seguras 11

2.7. Empleos y comandos


Rundeck proporciona una interfaz de usuario y API para ejecutar y programar comandos o trabajos. Si algo funciona a través

de SSH, lo más probable es que funcione como un comando o trabajo Rundeck. Los comandos ad-hoc son ejecuciones singulares

de comandos de shell contra nodos de destino. Pueden ser tan simples como 'tiempo de actividad' o una cadena compleja de

comandos canalizados. Los trabajos son un conjunto ordenado de pasos compuesto por comandos CLI, scripts de shell y otros

trabajos Rundeck. Cuando se secuencia en un trabajo, estos pasos pueden realizar orquestaciones complejas, como failovers de

equilibrador de carga, parcheo del sistema operativo y ejecuciones de scripts de prueba.

Los trabajos pueden tomar entradas variables con "opciones" que se ingresan a través de la interfaz de usuario o de

proveedores de opciones externas (por ejemplo, Jenkins). Del mismo modo, un script de paso de trabajo puede ser un archivo remoto

al que se accede a través de una ruta de archivo o URL. Las opciones remotas y los scripts mejoran la flexibilidad con el control de

versiones, pero también introducen una complejidad adicional para asegurar el contenido. En lugar de simplemente asegurar Rundeck,

los proveedores de opciones remotas y scripts también están en condiciones de endurecimiento y auditoría.

2.7.1. Planificación

Muchos usuarios de Rundeck se centran en la función de programación (Edwards, 2014). Los trabajos programados se

ejecutan en horarios establecidos similares a los servicios cron en Linux o las tareas en Windows. El uso de Rundeck para programar

centraliza la visibilidad de las tareas y salidas que se ejecutan en una red. Los respondedores de incidentes buscarán tareas

programadas en los hosts como posibles bombas lógicas u otros signos de intrusión (Kral, 2011). Mover tareas programadas a

Rundeck permite deshabilitar los servicios cron y schtasks. A su vez, esto hace que la detección de tareas programadas no

autorizadas sea más fácil en los hosts.

2.7.2. Nombramiento de trabajos

Nombrar trabajos puede parecer sencillo al principio hasta que exista una amplia colección de trabajos y roles en Rundeck. A

medida que crecen los trabajos y los archivos de políticas de ACL, el administrador de Rundeck se convierte en un cuello de botella

para alinear los controles de acceso con los trabajos. Este cuello de botella conduce a la disputa por los nombres de los grupos y las

reglas rígidas para la creación de empleo. Un método alternativo es incluir los nombres de los roles dentro del nombre del trabajo.

Un trabajo llamado "Cambiar contraseña" se convertiría en "Cambiar contraseña (basic_user, power_user”).

John Becker,• [email protected]

© 201 6 6 El instituto SANS El autor retiene todos los derechos.


Introducción a Rundeck para ejecuciones de script seguras 12

basic_user y power_user están en patrones de expresiones regulares dentro de las ACL. Cada vez que se agrega o cambia un

trabajo, solo necesita incluir la palabra clave de rol correcta para ser utilizable. Este diseño reduce significativamente la sobrecarga

para administrar las políticas de ACL.

A continuación se muestran capturas de pantalla del mismo conjunto de trabajos pero con ACL que limitan el acceso de

"lectura" para el rol basic_user. En esta situación, la función power_user puede ejecutar ambos trabajos directamente, pero la función

basic_user solo puede ver "Cambiar contraseña (basic_user, power_user)".

Vista power_user

Vista de usuario básico

2.7.3. Grupos de trabajo

Un buen punto de partida para agrupar trabajos es separar los trabajos por función. Gestión de usuarios, lanzamiento, parches

son ejemplos de buenos grupos de alto nivel. Un grupo de trabajos de "Biblioteca" puede ser referenciado por muchos otros trabajos

mientras se mantiene oculto el contenido de los scripts. Por ejemplo, se puede crear un trabajo genérico de "Cambiar contraseña"

como trabajo principal que ejecutan los usuarios. Este trabajo apuntará a un nodo y pasará una opción de "nombre de usuario" a un

trabajo de Biblioteca que los usuarios no suelen ver directamente. El trabajo de la Biblioteca contiene los scripts reales para ejecutar

los comandos. Las ACL básicas de los usuarios hacen referencia al grupo de la Biblioteca para el acceso de "ejecución" pero no de

"lectura". Este enfoque permite la ejecución al tiempo que evita que la mayoría de los usuarios vean información confidencial.

John Becker,• [email protected]

© 201 6 6 El instituto SANS El autor retiene todos los derechos.


Introducción a Rundeck para ejecuciones de script seguras 13

2.8. Listas de control de acceso

Las listas de control de acceso (ACL) en Rundeck permiten el acceso basado en roles con un alto grado de granularidad. Los

recursos en Rundeck son denegados por defecto hasta que las ACL lo permitan explícitamente. Las políticas de ACL administran los

privilegios en muchos niveles dentro de Rundeck, incluidos proyectos, trabajos, nodos, comandos ad-hoc, almacenamiento de claves

y la API de Rundeck. Los archivos de políticas se escriben en YAML y residen en el directorio / etc / rundeck, pero también se

pueden crear utilizando la API de ACL del sistema y la API de ACL del proyecto.

Para obtener un conjunto de ACL directo y fácil de auditar, comience con archivos .aclpolicy estándar en el directorio / etc /

rundeck. Cree un archivo .aclpolicy por grupo o rol y asigne un nombre al archivo para que coincida (por ejemplo, un archivo de

política ACL para el grupo "operaciones" debería llamarse "operations.aclpolicy”). Pruebe las ACL resultantes después de cualquier

cambio.

Roles, por ejemplo, ACL

Papel Nombre de archivo ACL Proyecto de Acceso a Acceso laboral

acceso nodos

Usuario de poder power_user.aclpolicy Todos Todos Crear, actualizar, ejecutar

Administración admin.aclpolicy Todos Todos Todos

Usuario Básico basic_user.aclpolicy Red de Producción Trabajos "básicos"

soporte

John Becker,• [email protected]

© 201 6 6 El instituto SANS El autor retiene todos los derechos.


Introducción a Rundeck para ejecuciones de script seguras 14

2.8.1 Desglose de ACL

Este es el administrador predeterminado.aclpolicy de / etc / rundeck permite el acceso completo a todo para

cualquier miembro del grupo "admin".

descripción: Admin, todos los accesos.


contexto:
proyecto: '. *' # todos los proyectos
para:
recurso:
- allow: '*' # permitir leer / crear todo tipo adhoc:

- allow: '*' # permitir trabajo de lectura / ejecución / eliminación de trabajos adhoc:

- permitir: '*' # permitir lectura / escritura / eliminación / ejecución / eliminación de todos los
nodos de trabajos:
- allow: '*' # permitir lectura / ejecución para todos los nodos por:

administrador del grupo

---

descripción: Admin, todos los accesos.


contexto:
aplicación: 'rundeck' para:

recurso:
- allow: '*' # allow create of projects project:

- allow: '*' # allow view / admin of all projects


project_acl:
- allow: '*' # permitir administrador de todas las políticas de ACL de nivel de proyecto de
almacenamiento:
- permitir: '*' # permite leer / crear / actualizar / eliminar todo el contenido de almacenamiento / claves / * por:

administrador del grupo

Los archivos de políticas de Rundeck ACL definen qué acciones (leer, crear, actualizar, eliminar, admin, enable_executions,

disable_executions, configure, import, export) se aplican a los recursos (proyecto, sistema, system_acl, usuario, trabajo,

almacenamiento, trabajo, nodo, anuncio- hoc o evento). El lleno

John Becker,• [email protected]

© 201 6 6 El instituto SANS El autor retiene todos los derechos.


Introducción a Rundeck para ejecuciones de script seguras 15

Las opciones de recursos y acciones están disponibles en

http://rundeck.org/docs/administration/access-control-policy.html . Las opciones disponibles dentro de las ACL crean conjuntos de

reglas precisos, si no complicados. La estructuración de los archivos de políticas de ACL para la flexibilidad puede evitar la

frustración en la gestión del trabajo. El enfoque recomendado en este documento es el siguiente:

Denegar el acceso al servidor Rundeck. De forma predeterminada, esto es "localhost" y se puede hacer referencia en la ACL con la

propiedad de recurso de nodo "nodename".

nodo:
- partido:
nombre_nodo: 'localhost'
negar: '*'
- partido:
nombre_nodo: '. *'
permitir: '*'

Limite las funciones de administración de Rundeck a un solo rol (Administrador en el ejemplo a continuación). El acceso de

administrador incluye la capacidad de crear / modificar proyectos, modificar ACL de proyectos y modificar el almacenamiento de

claves. Los bloques de código "aplicación: 'rundeck'" son más restrictivos para roles que no son de administrador.

Acceso de administrador

descripción: Admin, todos los accesos.


contexto:
aplicación: 'rundeck' para:

recurso:
- allow: '*' # allow create of projects project:

- allow: '*' # allow view / admin of all projects


project_acl:
- allow: '*' # permitir administrador de todas las políticas de ACL de nivel de proyecto de
almacenamiento:
- permitir: '*' # permite leer / crear / actualizar / eliminar todo el contenido de almacenamiento / claves / * por:

administrador del grupo

John Becker,• [email protected]

© 201 6 6 El instituto SANS El autor retiene todos los derechos.


Introducción a Rundeck para ejecuciones de script seguras 16

Acceso Básico de Usuario

descripción: Usuario básico, acceso restringido. contexto:

aplicación: 'rundeck' para:

recurso:
- igual: tipo:
sistema
permitir: [leer] # permitir la lectura del proyecto de recursos:

- partido:
nombre: ['Soporte', 'Red']
permitir: [leer] # Permitir acceso de lectura al almacenamiento de proyectos
específicos:
- permitir: [leer] # Permitir permitir acceso de lectura para usar claves ssh de la siguiente
manera:

grupo: usuario_básico

Use expresiones regulares para orientar el acceso específico a palabras clave en los nombres de los trabajos. Negar el acceso de

lectura para evitar que los usuarios vean trabajos y proyectos a los que no deberían acceder. Su interfaz de usuario será más

limpia y hay menos posibilidades de escalada accidental de privilegios. El siguiente ejemplo permitirá que el rol basic_user ejecute

cualquier trabajo con la palabra clave "basic_user" en el nombre, así como evitará la visualización de trabajos en el grupo

Biblioteca.

John Becker,• [email protected]

© 201 6 6 El instituto SANS El autor retiene todos los derechos.


Introducción a Rundeck para ejecuciones de script seguras 17

Basic_user ACL

descripción: Usuario básico, acceso restringido. contexto:

proyecto: '. *' # todos los proyectos


para:
recurso:
- allow: '*' # permitir leer / crear todo tipo adhoc:

- allow: '*' # permitir trabajo de lectura / ejecución / eliminación de trabajos adhoc:

- partido:
nombre: '. * basic_user. *'
permitir: [leer, ejecutar, matar] # permitir leer / ejecutar / matar trabajos
- partido:
grupo: 'Biblioteca. *'
permitir: [ejecutar, matar] # permitir leer / ejecutar / matar de todos los nodos
de trabajos:
- allow: '*' # permitir lectura / ejecución para todos los nodos por:

grupo: 'basic_user'

2.9. Historial de registro y ejecución


Rundeck tiene un historial excelente y características de registro de salida completa (Oyster.com Tech Blog, 2016). La salida

estándar de los comandos está disponible como "actividad" junto con la hora, la fecha y el usuario que ejecutó el trabajo o el comando

ad-hoc. El historial de actividades reside en la base de datos y se puede buscar a través de la interfaz de usuario Rundeck.

Rundeck usa log.4j y los registros escriben en / var / log / rundeck en la distribución del paquete. Los registros clave para la

revisión de seguridad son rundeck.audit.log (decisiones de ACL), rundeck.jobs.log (cambios en los trabajos), rundeck.log (los mensajes

generales de la aplicación incluyen actividad de ejecución). Los detalles completos sobre el registro y el formato de Rundeck están

disponibles en http://rundeck.org/docs/administration/logging.html.

3. Ejemplo de caso de uso para respuesta a incidentes

Si bien Rundeck admite muchos casos de uso diferentes, la respuesta a incidentes es un buen ejemplo para los equipos de

seguridad. El manejo de incidentes tiene 6 fases: preparación, identificación,

John Becker,• [email protected]

© 201 6 6 El instituto SANS El autor retiene todos los derechos.


Introducción a Rundeck para ejecuciones de script seguras 18

Contención, erradicación, recuperación y lecciones aprendidas (Kral, 2011). Rundeck se ajusta a las fases de preparación

(control de acceso y herramientas), identificación (recopilación de eventos) y contención (aislamiento a corto plazo, respaldo,

aislamiento a largo plazo). Rundeck también podría resultar útil en las fases de Erradicación y Recuperación como una

herramienta de Build / Deployment / Release. Para este ejemplo, Rundeck se utiliza para acceder, encontrar, contener y

eliminar intrusos.

3.1.1. Preparación

La fase de preparación se centra en la preparación del equipo para manejar un incidente con poco o ningún aviso (Kral, 2011).

Rundeck es una herramienta útil para acceder y revisar sistemas de forma remota. Los equipos de respuesta a incidentes pueden

crear trabajos regulares para recuperar registros, archivos críticos de hash, verificar permisos, así como realizar cambios como

actualizar las reglas del firewall o aplicar parches. Muchos scripts utilizados para la caza y las investigaciones funcionan bien como

trabajos de Rundeck.

3.1.2. Identificación

Un respondedor puede usar los trabajos Rundeck creados en la fase de preparación para determinar si ha ocurrido

un incidente. Estos trabajos son útiles para cualquier sistema o patrón no incluido en los sistemas IDS. Los comandos

ad-hoc son útiles para buscar patrones específicos en muchos dispositivos. Por ejemplo, el siguiente comando ad-hoc

devolverá el nombre de host, md5sum para /etc/init/ssh.conf y el número de archivos en / etc / init en formato CSV. Copie

y guarde la salida como un archivo CSV para su análisis.

3.1.3. Contención

El objetivo de la fase de contención es evitar más daños y preservar la evidencia (Kral, 2011). Los nodos comprometidos

etiquetados con un identificador único, como el ID de incidente "inc50298" en este ejemplo, son fáciles de agrupar en Rundeck.

Los trabajos de contención pueden entonces ser

John Becker,• [email protected]

© 201 6 6 El instituto SANS El autor retiene todos los derechos.


Introducción a Rundeck para ejecuciones de script seguras 19

dirigido a los nodos por ID de incidente cuando "etiquetas: $ {option.Incident_ID}" se establece para el objetivo del nodo. La

contención a corto plazo puede ser tan simple como actualizar firewalls o dispositivos de red para detener el tráfico a un host

determinado. La preservación puede tomar la forma de una instantánea o copia de seguridad de un host comprometido. Finalmente,

el paso de contención a largo plazo es eliminar cualquier puerta trasera o malware para devolver el dispositivo a la producción. A

continuación se muestra un ejemplo de trabajo de contención Rundeck:

1) El paso 1 es una referencia de trabajo de la biblioteca. La dirección IP del nodo de destino pasa a

Trabajo de biblioteca "Biblioteca / IR / Nodo aislado". El trabajo Aislar nodo actualizará las reglas del firewall para

bloquear el tráfico a la dirección IP.

2) El paso 2 realiza una instantánea del nodo desde el servidor de respaldo. El trabajo de la biblioteca

"Library / IR / Snapshot Node" ejecuta un script de instantánea para el nombre de host dado.

3) El paso 3 usa una ruta de script "file: /// ir / cleanup / $ {option.Incident_ID} .sh" para hacer referencia

un script único para esta limpieza de incidentes. La ruta se expandirá a la ubicación del sistema de archivos en Rundeck

como "/ir/cleanup/inc50298.sh". En este script hay comandos de contención únicos para este incidente. Ejecutar el

trabajo con un script vacío está bien si los pasos completos de limpieza no están listos.

John Becker,• [email protected]

© 201 6 6 El instituto SANS El autor retiene todos los derechos.


Introducción a Rundeck para ejecuciones de script seguras 20

4. Conclusión
Rundeck proporciona una interfaz fácil de usar para programar y ejecutar comandos en un inventario dinámico de dispositivos. El

acceso centralizado y sin agentes a dispositivos de red, servidores Windows, máquinas virtuales Linux e instancias en la nube es muy

poderoso para desarrolladores, administradores y equipos de seguridad por igual. Todos los equipos se benefician de una mayor

visibilidad del historial de ejecución, el registro y la programación centralizada de tareas. La coordinación entre los equipos de

seguridad y los equipos de DevOps ha mejorado la colaboración con el control de acceso y la gestión de claves.

Sin embargo, un único punto de acceso para los sistemas también es un objetivo clave para los intrusos. La protección de este

acceso comienza con el endurecimiento de Rundeck usando TLS y los cambios de permisos. Un enfoque común para el trabajo y el

diseño de ACL garantiza el acceso correcto, pero aún es ágil, para entornos modernos. Mantener roles claros y asignaciones de

ACL da como resultado un acceso de bajo privilegio con menos privilegios.

John Becker,• [email protected]

© 201 6 6 El instituto SANS El autor retiene todos los derechos.


Introducción a Rundeck para ejecuciones de script seguras 21

A medida que los equipos adoptan Rundeck para las tareas diarias, el historial de esas tareas se vuelve más valioso para los

auditores y los respondedores de incidentes. Además, las ejecuciones fuera de Rundeck se destacan para una posible

investigación. Rundeck en sí es útil durante la respuesta a incidentes para recopilar información y contención. Los equipos de

seguridad pueden etiquetar rápidamente los nodos comprometidos y ejecutar trabajos de detección y contención específicos. Este

enfoque funciona con otras herramientas y scripts. Sin embargo, las características integradas en Rundeck hacen una solución

simple sin requerir una personalización extensa.

John Becker,• [email protected]

© 201 6 6 El instituto SANS El autor retiene todos los derechos.


Introducción a Rundeck para ejecuciones de script seguras 22

Referencias

Blog tecnológico de Oyster.com. (2016, 7 de marzo). Rundeck vs. Crontab: ¿Por qué ganó Rundeck?

Recuperado el 29 de julio de 2016 de http://tech.oyster.com/rundeck-vs-crontab-whyrundeck-won/

Clase UnixCrypt. (2013, 7 de enero). Recuperado el 28 de julio de 2016 de

https://commons.apache.org/proper/commons-

códec / apidocs / org / apache / commons / codec / digest / UnixCrypt.html

Controles críticos de seguridad para una defensa cibernética efectiva. ( 2015, 15 de octubre). El Centro de Seguridad de Internet,

6.0. Recuperado el 12 de marzo de 2016 de

https://www.cisecurity.org/critical-controls/

Dobbertin, H. (1996). El estado de MD5 después de un ataque reciente. CryptoBytes, 2 (2), 1-6.

Recuperado de ftp://ftp.arnes.si/packages/cryptotools/rsa.com/cryptobytes/crypto2n2.pdf.gz

Edwards, D. (29 de agosto de 2014). Creciente popularidad de las funciones del planificador de trabajos de Rundeck.

Recuperado el 21 de julio de 2016 de http://rundeck.org/news/2014/08/29/Rundeck-jobscheduler.html

Hu, VC, Ferraiolo, DF y Kuhn, DR (2006, septiembre). Evaluación de acceso

Sistemas de control. Recuperado el 29 de julio de 2016 de

http://csrc.nist.gov/publications/nistir/7316/NISTIR-7316.pdf

Embarcadero, Ofuscación de contraseña segura. ( 2016, 27 de julio). Recuperado el 28 de julio de 2016 de

https://www.eclipse.org/jetty/documentation/9.3.x/configuring-security-securepasswords.html

Código fuente del embarcadero, Password.java. ( 2016, 9 de febrero). Recuperado el 28 de julio de 2016 de

https://github.com/eclipse/jetty.project/blob/c99c02e2f59cc4c65cc9b893710e48ee eb3bef0b / jetty-util / src /

main / java / org / eclipse / jetty / util / security / Password.java

Kral, P. (2011, 5 de diciembre). El manual de controladores de incidentes. Consultado el 14 de julio de 2016,

de https://www.sans.org/reading-room/whitepapers/incident/incident-handlershandbook-33901

Lawler, E. (2015, abril). ¿DevOps está rompiendo su empresa? Consultado el 15 de julio de 2016,

de https://www.rsaconference.com/writable/presentations/file_upload/asd-w02is-devops-breaking-your-company.pdf

John Becker,• [email protected]

© 201 6 6 El instituto SANS El autor retiene todos los derechos.


Introducción a Rundeck para ejecuciones de script seguras 23

Roma, J. (sf). Enclaves y dominios colaborativos. Recuperado el 29 de julio de 2016 de

http://web.ornl.gov/~webworks/cppr/y2001/pres/117259.pdf

Guía del administrador de Rundeck. (10 de junio de 2016). Recuperado el 28 de julio de 2016 de

http://rundeck.org/docs/administration/index.html

Guía del usuario de Rundeck. (3 de agosto de 2016). Recuperado el 8 de agosto de 2016 de

http://rundeck.org/docs/manual/index.html Rundeck.org. (Dakota del Norte). Recuperado el

11 de julio de 2016 de http://rundeck.org/

Schneier, B. (19 de noviembre de 1999). Una súplica por la simplicidad. Recuperado el 28 de julio de 2016 de

https://www.schneier.com/essays/archives/1999/11/a_plea_for_simplicit.html

Schueler, G. (2015, 16 de abril). Base de datos preferida para Rundeck. Julio recuperado

31, 2016, desde https://groups.google.com/forum/#!topic/rundeckdiscuss/zK4CYRYGTVA

Swanson, M. y Guttman, B. (1996, septiembre). Principios generalmente aceptados y

Prácticas para asegurar los sistemas de tecnología de la información. Recuperado el 12 de julio de 2016 de http://csrc.nist.gov/publications/nist

John Becker,• [email protected]

© 201 6 6 El instituto SANS El autor retiene todos los derechos.


Última actualización: 9 de abril de 2020

Próxima capacitación SANS


Haga clic aquí para ver una lista de todos los cursos de SANS

SANS OnDemand OnlineUS En cualquier momento Ritmo propio

Autoestudio SANS Solo libros y MP3US En cualquier momento Ritmo propio

También podría gustarte