Saltar a contenido

Instalación del agente Linux

CyberElements utiliza el agente Linux para limitar los accesos de red posibles desde los servidores SSH a los que acceden los usuarios (definidos en las políticas o contratos de acceso).

Requisitos previos

Para que el agente funcione correctamente son necesarios algunos requisitos previos:

  • Sistemas operativos compatibles: Red Hat 9 y Debian 12
  • Presencia del cortafuegos iptables
  • Conexión con una cuenta distinta de root

Información

El agente Linux no actúa sobre el usuario root, ya que este siempre dispone de derechos suficientes para eliminar cualquier restricción que se le aplique.

Además, como algunos servicios utilizan derechos root, añadir restricciones de red podría desestabilizarlos.

Funcionamiento

El agente Linux se divide en varias partes:

  • Un servicio systemd llamado cleanroom-filter
  • Un módulo PAM llamado pam_clr_filter
  • Una política SELinux para Red Hat, que permite al servidor SSH comunicarse con el servicio cleanroom-filter

El funcionamiento general sigue esta secuencia:

Contexto SaaS

En el diagrama siguiente, « Mediation Controller » representa el servicio en la nube de CyberElements gestionado por Systancia. El flujo de filtrado SSH es arquitectónicamente idéntico en modo SaaS.

sequenceDiagram
    autonumber
    participant MED as Mediation Controller
    participant GW_SSH as Edge Gateway<br/>Grabador SSH
    participant SSH as Destino SSH<br/>Servidor SSH
    participant PAM as Destino SSH<br/>Módulo PAM pam_clr_filter
    participant svc as Destino SSH<br/>Servicio cleanroom-filter

    MED->>GW_SSH: Solicitud de apertura de una<br/>aplicación SSH
    GW_SSH->>+MED: Recuperación de la información de filtrado<br/>de la sesión
    MED->>-GW_SSH: Envío de la información de<br/>filtrado de red
    GW_SSH->>+SSH: Conexión SSH
    SSH-->-PAM: Creación de una sesión SSH
    PAM->>+svc: Envío del nombre de usuario
    Note right of svc: Creación de una cadena iptables <br/>para el usuario, llamada clr-LOGIN
    svc->>-PAM: Envío de un token único
    Note over PAM: Adición de la variable de entorno CLR-ID,<br/> que contiene el token único,<br/> a la sesión del usuario
    GW_SSH->>svc: Envío de la lista de redes que deben autorizarse
    Note over svc: Creación de una regla iptables OUTPUT<br/> para redirigir el tráfico del usuario a la cadena<br/> iptables creada anteriormente
    Note over svc: Adición de las autorizaciones a la cadena<br/> iptables creada para el usuario
    break Fin de la sesión SSH
        SSH->>+GW_SSH: Notificación de fin de sesión
        SSH-->svc: Detección del fin de la sesión SSH
        Note over svc: Eliminación de la regla iptables OUTPUT<br/> creada para el usuario 
        Note over svc: Eliminación de la cadena iptables<br/> creada para el usuario
        GW_SSH->>-MED: Notificación de fin de la sesión SSH<br/> del usuario
    end
Hold "Ctrl" to enable pan & zoom
  1. El servidor Mediation Controller envía a la Edge Gateway la información necesaria para abrir una nueva sesión SSH.
  2. El servicio de grabación SSH solicita al servidor Mediation Controller la información de filtrado de red que debe aplicarse a la sesión SSH.
  3. El Mediation Controller responde con una lista de redes autorizadas.
  4. El servicio de grabación SSH establece entonces la conexión con el servidor SSH de destino.
  5. La conexión al servidor SSH desencadena la secuencia de creación de la sesión y, por tanto, el paso por los módulos PAM asignados a sshd.
  6. El módulo PAM pam_clr_filter del agente Linux envía el nombre de usuario al servicio cleanroom-filter, que crea entonces una nueva cadena iptables llamada clr-LOGIN, donde LOGIN se sustituye por el nombre de usuario recibido.
  7. Tras crear la cadena iptables, el servicio cleanroom-filter genera y envía un token aleatorio al módulo PAM pam_clr_filter, que lo añade a la variable de entorno CLR-ID del usuario.
  8. El servicio de grabación SSH envía, mediante el ejecutable /usr/local/ipdiva/bin/cleanroom-netfiltersession.py, la lista de redes que deben autorizarse al servicio cleanroom-filter. Este crea entonces una regla iptables OUTPUT para redirigir todo el tráfico del usuario, identificado por su UID, hacia la cadena iptables creada en el paso 6. Todos los flujos que deben autorizarse al usuario se añaden a la cadena iptables.
  9. Cuando se produce el fin de la sesión SSH, la información se envía al servicio de grabación SSH de la Edge Gateway.
  10. El servicio cleanroom-filter detecta el fin de la sesión del usuario y limpia las reglas iptables añadidas: elimina la directiva OUTPUT que redirige el tráfico del usuario hacia una cadena iptables y elimina la propia cadena.
  11. Una vez que la Edge Gateway ha recibido el fin de la sesión SSH, transmite esta información al Mediation Controller.

Instalación

Se requieren permisos root

Se requieren privilegios root para instalar el agente.

El paquete .deb o .rpm puede descargarse desde la consola de administración:

  1. Acceda al espacio de trabajo « Configurations » mediante el botón situado en la parte superior izquierda:
  2. Abra el mosaico « Toolbox »
  3. Seleccione el instalador correspondiente al sistema operativo deseado en la primera pestaña, « Integration Tools »

Una vez obtenido el paquete, envíelo al servidor Linux en el directorio /tmp/. A continuación, siga las instrucciones de instalación correspondientes a su sistema operativo:

Ejecute los comandos siguientes con los permisos root adecuados:

1
2
dpkg -i /tmp/cleanroom-netfilter_*_amd64.deb
sed -i "s/@include common-session/@include common-session\n\n\# Use the Cleanroom agent to limit network bounces\nsession    optional\tpam_clr_filter.so/g" /etc/pam.d/sshd

El segundo comando automatiza la adición de dos líneas al archivo /etc/pam.d/sshd, pero esta operación también puede realizarse manualmente:

27
28
29
30
31
32
33
34
35
36
37
# Standard Un*x session setup and teardown.
@include common-session

# Use the Cleanroom agent to limit network bounces
session    optional     pam_clr_filter.so

# Print the message of the day upon successful login.
# This includes a dynamically generated part from /run/motd.dynamic
# and a static (admin-editable) part from /etc/motd.
session    optional     pam_motd.so  motd=/run/motd.dynamic
session    optional     pam_motd.so noupdate

Ejecute los comandos siguientes con permisos root:

1
2
dnf install /tmp/CleanroomFilter-*-Linux.rpm
sed -i "s/revoke$/revoke\n# Use the Cleanroom agent to limit network bounces\nsession    optional\tpam_clr_filter.so/g" /etc/pam.d/sshd

El segundo comando automatiza la adición de dos líneas al archivo /etc/pam.d/sshd, pero esta operación también puede realizarse manualmente:

11
12
13
14
15
16
17
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open env_params
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
# Use the Cleanroom agent to limit network bounces
session    optional     pam_clr_filter.so
session    optional     pam_motd.so