Saltar a contenido

Instalación del agente Linux

El agente Linux es utilizado por cyberelements.io / cyberelements Cleanroom para limitar el posible acceso a la red desde los servidores SSH a los que acceden los usuarios (definidos en las políticas / contratos de acceso).

Requisitos previos

Para que el agente funcione correctamente, se requieren algunos requisitos previos:

  • Sistema operativo compatible: Red Hat 9 y Debian 12
  • Presencia del iptables cortafuegos
  • Iniciar sesión con una cuenta diferente a root

Info

El agente Linux no actúa sobre el root El usuario siempre tiene los derechos suficientes para eliminar las restricciones que se le aplican.

Además, dado que algunos servicios utilizan root En el caso de los servicios de telecomunicaciones, la introducción de restricciones de red podría hacer que estos servicios se volvieran inestables.

Operación

El agente Linux se divide en varias partes:

  • Un servicio de sistema llamado cleanroom-filter
  • Un módulo PAM llamado pam_clr_filter
  • Una política SELinux para Red Hat para permitir que el servidor SSH se comunique con el servicio cleanroom-filter

La operación general sigue esta secuencia:

sequenceDiagram
    autonumber
    participant MED as Mediation Controller
    participant GW_SSH as Edge Gateway<br/>SSH Recorder
    participant SSH as SSH Target<br/>SSH Server
    participant PAM as SSH Target<br/>pam_clr_filter PAM Module
    participant svc as SSH Target<br/>cleanroom-filter Service

    MED->>GW_SSH: Request to open an<br/>SSH application
    GW_SSH->>+MED: Retrieve filtering information<br/>for the session
    MED->>-GW_SSH: Send network<br/>filtering information
    GW_SSH->>+SSH: SSH Connection
    SSH-->-PAM: Creating an SSH session
    PAM->>+svc: Sending the username
    Note right of svc: Creating an iptables <br/>chain for the user named clr-LOGIN
    svc->>-PAM: Sending a unique token
    Note over PAM: Adding the CLR-ID environment<br/> variable containing the unique token<br/> to the user's session
    GW_SSH->>svc: Sending the list of networks to be authorized
    Note over svc: Creating an iptables OUTPUT rule<br/> to redirect the user's traffic to the iptables<br/> chain created previously
    Note over svc: Adding authorizations to the iptables<br/> chain created for the user
    break End of SSH session
        SSH->>+GW_SSH: End of session notification
        SSH-->svc: Detection of end of SSH session
        Note over svc: Deletion of iptables OUTPUT<br/> rule created for user 
        Note over svc: Deletion of iptables chain<br/> created for user
        GW_SSH->>-MED: End of SSH session<br/> notification for user
    end
Hold "Ctrl" to enable pan & zoom
  1. El Mediation Controller El servidor envía información al Edge Gateway para abrir una nueva sesión SSH.
  2. El servicio de grabación SSH pide al Mediation Controller servidor para la información de filtrado de red que se aplique 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 activa la secuencia de creación de sesión y, por lo tanto, el paso a través de los módulos PAM asignados a sshd.
  6. El agente de Linux pam_clr_filter El módulo PAM envía el nombre de usuario al cleanroom-filter servicio, que luego crea una nueva cadena iptables llamada clr-LOGIN donde LOGIN se sustituye por el nombre de usuario recibido.
  7. Después de crear la cadena iptables, el cleanroom-filter El servicio crea y envía un token al azar al pam_clr_filter El módulo PAM agrega este token a la información de acceso del usuario. CLR-ID variable de entorno.
  8. El servicio de grabación SSH envía, a través de la /usr/local/ipdiva/bin/cleanroom-netfiltersession.py En el caso de las redes de transporte de carga, la lista de redes que se autorizarán a la cleanroom-filter El servicio crea entonces un OUTPUT reglas iptables para redirigir todo el tráfico del usuario, identificado por su UID, a la cadena iptables creada en el paso 6. Todos los flujos que se autorizarán para el usuario se agregarán a la cadena iptables.
  9. Cuando se activa el final de la sesión SSH, la información se envía al servicio de grabación SSH del Edge Gateway.
  10. El cleanroom-filter servicio detecta el final de la sesión del usuario y limpia las reglas iptables añadidas: elimina el OUTPUT directiva que redirige el tráfico del usuario a una cadena iptables y elimina la cadena misma.
  11. Una vez que el Edge Gateway ha recibido el final de la sesión SSH, transmite esta información al Mediation Controller.

Instalación

Permisos root requeridos

Se requieren privilegios root para instalar el agente.

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

  1. Acceda al área de trabajo Configuraciones utilizando el botón situado en la parte superior izquierda:
  2. Abrir el caja de herramientas mosaico
  3. Seleccione la configuración adecuada para el sistema operativo deseado en la primera pestaña, Herramientas de integración
  1. Acceda al área de trabajo Configuraciones utilizando el botón situado en la parte superior izquierda:
  2. Abrir el caja de herramientas mosaico
  3. Seleccione la configuración adecuada para el sistema operativo deseado en la primera pestaña, Herramientas de integración

Una vez que haya recuperado el paquete, envíelo al servidor Linux en el directorio /tmp/. Luego siga las instrucciones de instalación para su sistema operativo:

Ejecutar los siguientes comandos con los permisos root apropiados:

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 se puede realizar 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

Ejecutar los siguientes comandos 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 se puede realizar 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