Gå til innhold

Installasjon av Linux-agenten

Linux-agenten brukes av CyberElements Bastion for å begrense mulige nettverkstilganger fra SSH-serverne som brukerne får tilgang til (definert i tilgangspolicyene/-kontraktene).

Forutsetninger

Noen forutsetninger er nødvendige for at agenten skal fungere som den skal:

  • Kompatible operativsystemer: Red Hat 9 og Debian 12
  • Brannmuren iptables må være installert
  • Pålogging med en annen konto enn root

Informasjon

Linux-agenten virker ikke på brukeren root, siden denne brukeren alltid har tilstrekkelige rettigheter til å oppheve enhver begrensning som legges på ham.

Siden noen tjenester dessuten kjører med root-rettigheter, kan ytterligere nettverksbegrensninger gjøre disse tjenestene ustabile.

Virkemåte

Linux-agenten består av flere deler:

  • En systemd-tjeneste med navnet cleanroom-filter
  • En PAM-modul med navnet pam_clr_filter
  • En SELinux-policy for Red Hat som lar SSH-serveren kommunisere med tjenesten cleanroom-filter

Den generelle virkemåten følger denne rekkefølgen:

sequenceDiagram
    autonumber
    participant MED as Mediation Controller
    participant GW_SSH as Edge Gateway<br/>SSH-opptaker
    participant SSH as SSH-mål<br/>SSH-server
    participant PAM as SSH-mål<br/>PAM-modul pam_clr_filter
    participant svc as SSH-mål<br/>Tjenesten cleanroom-filter

    MED->>GW_SSH: Forespørsel om å åpne et<br/>SSH-program
    GW_SSH->>+MED: Henting av filtreringsinformasjonen<br/>for økten
    MED->>-GW_SSH: Sending av nettverks-<br/>filtreringsinformasjonen
    GW_SSH->>+SSH: SSH-tilkobling
    SSH-->-PAM: Oppretting av en SSH-økt
    PAM->>+svc: Sending av brukernavnet
    Note right of svc: Oppretting av en iptables-kjede <br/>for brukeren med navnet clr-LOGIN
    svc->>-PAM: Sending av et unikt token
    Note over PAM: Tillegg av miljøvariabelen<br/> CLR-ID som inneholder det unike tokenet<br/> til brukerens økt
    GW_SSH->>svc: Sending av listen over nettverk som skal autoriseres
    Note over svc: Oppretting av en iptables OUTPUT-regel<br/> for å omdirigere brukerens trafikk til den<br/> tidligere opprettede iptables-kjeden
    Note over svc: Tillegg av autorisasjonene i den<br/> iptables-kjeden som er opprettet for brukeren
    break Slutten på SSH-økten
        SSH->>+GW_SSH: Varsel om slutten på økten
        SSH-->svc: Registrering av slutten på SSH-økten
        Note over svc: Sletting av den iptables OUTPUT-<br/>regelen som er opprettet for brukeren
        Note over svc: Sletting av den iptables-kjeden<br/> som er opprettet for brukeren
        GW_SSH->>-MED: Varsel om slutten på<br/> brukerens SSH-økt
    end
Hold "Ctrl" to enable pan & zoom
  1. Mediation Controller-serveren sender informasjonen til Edge Gateway for å åpne en ny SSH-økt.
  2. SSH-opptakstjenesten spør Mediation Controller-serveren om informasjonen om nettverksfiltrering som skal brukes på SSH-økten.
  3. Mediation Controller svarer med en liste over autoriserte nettverk.
  4. SSH-opptakstjenesten oppretter deretter forbindelsen til mål-SSH-serveren.
  5. Tilkoblingen til SSH-serveren utløser sekvensen for oppretting av økten, og dermed gjennomgangen av PAM-modulene som er tilordnet sshd.
  6. PAM-modulen pam_clr_filter i Linux-agenten sender brukernavnet til tjenesten cleanroom-filter, som deretter oppretter en ny iptables-kjede med navnet clr-LOGIN, der LOGIN erstattes av det mottatte brukernavnet.
  7. Etter å ha opprettet iptables-kjeden oppretter tjenesten cleanroom-filter et tilfeldig token og sender det til PAM-modulen pam_clr_filter. Denne legger tokenet til i brukerens miljøvariabel CLR-ID.
  8. SSH-opptakstjenesten sender, via den kjørbare filen /usr/local/ipdiva/bin/cleanroom-netfiltersession.py, listen over nettverk som skal autoriseres, til tjenesten cleanroom-filter. Tjenesten oppretter deretter en iptables-regel OUTPUT for å omdirigere all trafikk fra brukeren, identifisert ved sin UID, til iptables-kjeden som ble opprettet i trinn 6. Alle flyter som skal autoriseres for brukeren, legges til i iptables-kjeden.
  9. Når slutten på SSH-økten utløses, sendes informasjonen til SSH-opptakstjenesten på Edge Gateway.
  10. Tjenesten cleanroom-filter oppdager slutten på brukerens økt og rydder opp i iptables-reglene som ble lagt til: den sletter direktivet OUTPUT som omdirigerer brukerens trafikk til en iptables-kjede, og sletter selve kjeden.
  11. Når Edge Gateway har mottatt slutten på SSH-økten, videresender den denne informasjonen til Mediation Controller.

Installasjon

Nødvendige root-tillatelser

Det kreves root-privilegier for å installere agenten.

Pakken .deb eller .rpm kan lastes ned fra administrasjonskonsollet:

  1. Gå til arbeidsområdet ”Configurations” med knappen øverst til venstre:
  2. Åpne flisen ”Toolbox”
  3. Velg installasjonsprogrammet som passer for det ønskede operativsystemet, i den første fanen, ”Integration Tools”

Når du har hentet pakken, overfører du den til Linux-serveren i katalogen /tmp/. Følg deretter installasjonsanvisningene for operativsystemet ditt:

Kjør følgende kommandoer med de nødvendige root-tillatelsene:

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

Den andre kommandoen legger automatisk to linjer til i filen /etc/pam.d/sshd, men denne operasjonen kan også utføres manuelt:

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

Kjør følgende kommandoer med root-tillatelser:

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

Den andre kommandoen legger automatisk to linjer til i filen /etc/pam.d/sshd, men denne operasjonen kan også utføres manuelt:

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