Gå til indholdet

Installation af Linux-agenten

Linux-agenten bruges af CyberElements Bastion til at begrænse de mulige netværksadgange fra de SSH-servere, som brugerne får adgang til (defineret i adgangspolitikker/adgangskontrakter).

Forudsætninger

Der er nogle få forudsætninger, som er nødvendige, for at agenten fungerer korrekt:

  • Kompatible OS: Red Hat 9 og Debian 12
  • Tilstedeværelse af firewallen iptables
  • Login med en anden konto end root

Information

Linux-agenten virker ikke på brugeren root, da denne bruger altid har tilstrækkelige rettigheder til at fjerne enhver begrænsning, der anvendes på den.

Da nogle tjenester desuden anvender root-rettigheder, kan yderligere netværksbegrænsninger gøre disse tjenester ustabile.

Funktionsmåde

Linux-agenten er opdelt i flere dele:

  • En systemd-tjeneste med navnet cleanroom-filter
  • Et PAM-modul med navnet pam_clr_filter
  • En SELinux-politik til Red Hat, der giver SSH-serveren mulighed for at kommunikere med tjenesten cleanroom-filter

Den generelle funktionsmåde følger denne rækkefølge:

sequenceDiagram
    autonumber
    participant MED as Mediation Controller
    participant GW_SSH as Edge Gateway<br/>SSH-optager
    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: Anmodning om at åbne et<br/>SSH-program
    GW_SSH->>+MED: Hentning af filtreringsoplysningerne<br/>for sessionen
    MED->>-GW_SSH: Afsendelse af netværks-<br/>filtreringsoplysningerne
    GW_SSH->>+SSH: SSH-forbindelse
    SSH-->-PAM: Oprettelse af en SSH-session
    PAM->>+svc: Afsendelse af brugernavnet
    Note right of svc: Oprettelse af en iptables-kæde <br/>for brugeren med navnet clr-LOGIN
    svc->>-PAM: Afsendelse af et unikt token
    Note over PAM: Tilføjelse af miljøvariablen<br/> CLR-ID, der indeholder det unikke token,<br/> til brugerens session
    GW_SSH->>svc: Afsendelse af listen over netværk, der skal godkendes
    Note over svc: Oprettelse af en iptables OUTPUT-regel<br/> for at omdirigere brugerens trafik til den<br/> tidligere oprettede iptables-kæde
    Note over svc: Tilføjelse af godkendelserne til den<br/> iptables-kæde, der er oprettet for brugeren
    break Afslutning af SSH-sessionen
        SSH->>+GW_SSH: Meddelelse om sessionens afslutning
        SSH-->svc: Registrering af afslutningen på SSH-sessionen
        Note over svc: Sletning af den iptables OUTPUT-<br/>regel, der er oprettet for brugeren
        Note over svc: Sletning af den iptables-kæde,<br/> der er oprettet for brugeren
        GW_SSH->>-MED: Meddelelse om afslutningen af<br/> brugerens SSH-session
    end
Hold "Ctrl" to enable pan & zoom
  1. Mediation Controller-serveren sender oplysninger til Edge Gateway for at åbne en ny SSH-session.
  2. SSH-optagelsestjenesten beder Mediation Controller-serveren om de oplysninger om netværksfiltrering, der skal anvendes på SSH-sessionen.
  3. Mediation Controller svarer med en liste over autoriserede netværk.
  4. SSH-optagelsestjenesten opretter derefter forbindelsen til SSH-målserveren.
  5. Forbindelsen til SSH-serveren udløser sekvensen for oprettelse af sessionen og dermed gennemløbet af de PAM-moduler, der er tilknyttet sshd.
  6. Linux-agentens PAM-modul pam_clr_filter sender brugernavnet til tjenesten cleanroom-filter, som derefter opretter en ny iptables-kæde med navnet clr-LOGIN, hvor LOGIN erstattes af det modtagne brugernavn.
  7. Efter oprettelsen af iptables-kæden opretter tjenesten cleanroom-filter et tilfældigt token og sender det til PAM-modulet pam_clr_filter. Sidstnævnte tilføjer dette token til brugerens miljøvariabel CLR-ID.
  8. SSH-optagelsestjenesten sender via den kørbare fil /usr/local/ipdiva/bin/cleanroom-netfiltersession.py listen over de netværk, der skal autoriseres, til tjenesten cleanroom-filter. Tjenesten opretter derefter en iptables-regel OUTPUT for at omdirigere al trafik fra brugeren, identificeret ved dennes UID, til den iptables-kæde, der blev oprettet i trin 6. Alle flows, der skal autoriseres for brugeren, tilføjes til iptables-kæden.
  9. Når afslutningen af SSH-sessionen udløses, sendes oplysningen til SSH-optagelsestjenesten på Edge Gateway.
  10. Tjenesten cleanroom-filter registrerer afslutningen af brugerens session og rydder de tilføjede iptables-regler op: den sletter direktivet OUTPUT, der omdirigerer brugerens trafik til en iptables-kæde, og sletter selve kæden.
  11. Når Edge Gateway har modtaget afslutningen af SSH-sessionen, videresender den denne oplysning til Mediation Controller.

Installation

Påkrævede root-tilladelser

root-privilegier er påkrævet for at installere agenten.

Pakken .deb eller .rpm kan hentes fra administrationskonsollen:

  1. Gå til arbejdsområdet ”Configurations” via knappen øverst til venstre:
  2. Åbn flisen ”Toolbox”
  3. Vælg på den første fane, ”Integration Tools”, det installationsprogram, der passer til det ønskede OS

Når du har hentet pakken, skal du sende den til Linux-serveren i mappen /tmp/. Følg derefter installationsvejledningen for dit operativsystem:

Kør følgende kommandoer med de nødvendige root-tilladelser:

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 anden kommando tilføjer automatisk to linjer til filen /etc/pam.d/sshd, men denne handling kan også udfø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

Kør følgende kommandoer med root-tilladelser:

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 anden kommando tilføjer automatisk to linjer til filen /etc/pam.d/sshd, men denne handling kan også udfø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