Vai al contenuto

Installazione dell'agente Linux

L'agente Linux è utilizzato da CyberElements per limitare i possibili accessi di rete a partire dai server SSH a cui accedono gli utenti (definiti nelle politiche o nei contratti di accesso).

Prerequisiti

Perché l'agente funzioni correttamente sono necessari alcuni prerequisiti:

  • S.O. compatibili: Red Hat 9 e Debian 12
  • Presenza del firewall iptables
  • Connessione con un account diverso da root

Informazioni

L'agente Linux non agisce sull'utente root, poiché questo utente dispone sempre di diritti sufficienti per rimuovere qualsiasi restrizione che gli venga applicata.

Inoltre, poiché alcuni servizi utilizzano i diritti root, l'aggiunta di restrizioni di rete potrebbe rendere instabili tali servizi.

Funzionamento

L'agente Linux è suddiviso in più parti:

  • Un servizio systemd denominato cleanroom-filter
  • Un modulo PAM denominato pam_clr_filter
  • Una policy SELinux per Red Hat, che consente al server SSH di comunicare con il servizio cleanroom-filter

Il funzionamento generale segue questa sequenza:

Contesto SaaS

Nello schema seguente, «Mediation Controller» rappresenta il servizio cloud CyberElements gestito da Systancia. Il flusso di filtraggio SSH è architetturalmente identico in modalità SaaS.

sequenceDiagram
    autonumber
    participant MED as Mediation Controller
    participant GW_SSH as Edge Gateway<br/>Registratore SSH
    participant SSH as Destinazione SSH<br/>Server SSH
    participant PAM as Destinazione SSH<br/>Modulo PAM pam_clr_filter
    participant svc as Destinazione SSH<br/>Servizio cleanroom-filter

    MED->>GW_SSH: Richiesta di apertura di un'<br/>applicazione SSH
    GW_SSH->>+MED: Recupero delle informazioni di<br/>filtraggio per la sessione
    MED->>-GW_SSH: Invio delle informazioni di<br/>filtraggio di rete
    GW_SSH->>+SSH: Connessione SSH
    SSH-->-PAM: Creazione di una sessione SSH
    PAM->>+svc: Invio del nome utente
    Note right of svc: Creazione di una catena <br/>iptables per l'utente denominata clr-LOGIN
    svc->>-PAM: Invio di un token univoco
    Note over PAM: Aggiunta alla sessione dell'utente<br/> della variabile d'ambiente CLR-ID<br/> contenente il token univoco
    GW_SSH->>svc: Invio dell'elenco delle reti da autorizzare
    Note over svc: Creazione di una regola iptables OUTPUT<br/> per reindirizzare il traffico dell'utente nella<br/> catena iptables creata in precedenza
    Note over svc: Aggiunta delle autorizzazioni nella catena<br/> iptables creata per l'utente
    break Fine della sessione SSH
        SSH->>+GW_SSH: Notifica di fine sessione
        SSH-->svc: Rilevamento della fine della sessione SSH
        Note over svc: Eliminazione della regola iptables<br/> OUTPUT creata per l'utente
        Note over svc: Eliminazione della catena iptables<br/> creata per l'utente
        GW_SSH->>-MED: Notifica di fine della sessione<br/> SSH per l'utente
    end
Hold "Ctrl" to enable pan & zoom
  1. Il server Mediation Controller invia all'Edge Gateway le informazioni necessarie per aprire una nuova sessione SSH.
  2. Il servizio di registrazione SSH richiede al server Mediation Controller le informazioni di filtraggio di rete da applicare alla sessione SSH.
  3. Il Mediation Controller risponde con un elenco di reti autorizzate.
  4. Il servizio di registrazione SSH stabilisce quindi la connessione al server SSH di destinazione.
  5. La connessione al server SSH avvia la sequenza di creazione della sessione e, di conseguenza, il passaggio attraverso i moduli PAM assegnati a sshd.
  6. Il modulo PAM pam_clr_filter dell'agente Linux invia il nome utente al servizio cleanroom-filter, che crea quindi una nuova catena iptables denominata clr-LOGIN, dove LOGIN viene sostituito dal nome utente ricevuto.
  7. Dopo aver creato la catena iptables, il servizio cleanroom-filter genera e invia un token casuale al modulo PAM pam_clr_filter, che aggiunge tale token alla variabile d'ambiente CLR-ID dell'utente.
  8. Il servizio di registrazione SSH invia, tramite l'eseguibile /usr/local/ipdiva/bin/cleanroom-netfiltersession.py, l'elenco delle reti da autorizzare al servizio cleanroom-filter. Il servizio crea quindi una regola iptables OUTPUT per reindirizzare tutto il traffico dell'utente, identificato dal suo UID, verso la catena iptables creata al passaggio 6. Tutti i flussi da autorizzare per l'utente vengono aggiunti alla catena iptables.
  9. Quando viene rilevata la fine della sessione SSH, l'informazione viene inviata al servizio di registrazione SSH dell'Edge Gateway.
  10. Il servizio cleanroom-filter rileva la fine della sessione dell'utente e ripulisce le regole iptables aggiunte: elimina la direttiva OUTPUT che reindirizza il traffico dell'utente verso una catena iptables ed elimina la catena stessa.
  11. Una volta che l'Edge Gateway ha ricevuto la fine della sessione SSH, trasmette questa informazione al Mediation Controller.

Installazione

Autorizzazioni root necessarie

Per installare l'agente sono necessari i privilegi root.

Il pacchetto .deb o .rpm può essere scaricato dalla console di amministrazione:

  1. Accedere allo spazio di lavoro «Configurations» tramite il pulsante situato in alto a sinistra:
  2. Aprire il riquadro «Toolbox»
  3. Selezionare il programma di installazione corrispondente al sistema operativo desiderato nella prima scheda, «Integration Tools»

Dopo aver ottenuto il pacchetto, inviarlo al server Linux nella directory /tmp/. Seguire quindi le istruzioni di installazione relative al proprio sistema operativo:

Eseguire i comandi seguenti con le autorizzazioni root adeguate:

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

Il secondo comando automatizza l'aggiunta di due righe al file /etc/pam.d/sshd, ma questa operazione può essere eseguita anche 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

Eseguire i comandi seguenti con le autorizzazioni 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

Il secondo comando automatizza l'aggiunta di due righe al file /etc/pam.d/sshd, ma questa operazione può essere eseguita anche 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