Ga naar inhoud

Installatie van de Linux-agent

De Linux-agent wordt door CyberElements Bastion gebruikt om de mogelijke netwerktoegang vanaf de SSH-servers waartoe de gebruikers toegang hebben te beperken (vastgelegd in het toegangsbeleid of de toegangscontracten).

Voorwaarden

Voor een correcte werking van de agent zijn er enkele voorwaarden nodig:

  • Compatibele besturingssystemen: Red Hat 9 en Debian 12
  • Aanwezigheid van de firewall iptables
  • Aanmelding met een ander account dan root

Informatie

De Linux-agent werkt niet in op de gebruiker root, aangezien deze altijd voldoende rechten heeft om elke op hem toegepaste beperking op te heffen.

Omdat sommige services root-rechten gebruiken, kan het toevoegen van netwerkbeperkingen deze services bovendien instabiel maken.

Werking

De Linux-agent bestaat uit meerdere onderdelen:

  • Een systemd-service met de naam cleanroom-filter
  • Een PAM-module met de naam pam_clr_filter
  • Een SELinux-beleid voor Red Hat waarmee de SSH-server kan communiceren met de service cleanroom-filter

De algemene werking verloopt in de volgende stappen:

sequenceDiagram
    autonumber
    participant MED as Mediation Controller
    participant GW_SSH as Edge Gateway<br/>SSH-recorder
    participant SSH as SSH-doel<br/>SSH-server
    participant PAM as SSH-doel<br/>PAM-module pam_clr_filter
    participant svc as SSH-doel<br/>Dienst cleanroom-filter

    MED->>GW_SSH: Verzoek om een<br/>SSH-toepassing te openen
    GW_SSH->>+MED: Ophalen van de filterinformatie<br/>voor de sessie
    MED->>-GW_SSH: Verzenden van de netwerk-<br/>filterinformatie
    GW_SSH->>+SSH: SSH-verbinding
    SSH-->-PAM: Aanmaken van een SSH-sessie
    PAM->>+svc: Verzenden van de gebruikersnaam
    Note right of svc: Aanmaken van een iptables-keten <br/>voor de gebruiker met de naam clr-LOGIN
    svc->>-PAM: Verzenden van een uniek token
    Note over PAM: Toevoegen van de omgevingsvariabele<br/> CLR-ID met het unieke token<br/> aan de sessie van de gebruiker
    GW_SSH->>svc: Verzenden van de lijst met te autoriseren netwerken
    Note over svc: Aanmaken van een iptables-OUTPUT-regel<br/> om het verkeer van de gebruiker om te leiden naar de<br/> eerder aangemaakte iptables-keten
    Note over svc: Toevoegen van de autorisaties aan de<br/> iptables-keten van de gebruiker
    break Einde van de SSH-sessie
        SSH->>+GW_SSH: Melding van het einde van de sessie
        SSH-->svc: Detectie van het einde van de SSH-sessie
        Note over svc: Verwijderen van de iptables-OUTPUT-<br/>regel van de gebruiker
        Note over svc: Verwijderen van de iptables-keten<br/> die voor de gebruiker is aangemaakt
        GW_SSH->>-MED: Melding van het einde van de<br/> SSH-sessie van de gebruiker
    end
Hold "Ctrl" to enable pan & zoom
  1. De Mediation Controller-server stuurt de Edge Gateway de informatie om een nieuwe SSH-sessie te openen.
  2. De SSH-opnameservice vraagt de Mediation Controller-server de informatie over de netwerkfiltering op die op de SSH-sessie moet worden toegepast.
  3. De Mediation Controller antwoordt met een lijst van toegestane netwerken.
  4. De SSH-opnameservice maakt vervolgens de verbinding met de SSH-doelserver.
  5. De verbinding met de SSH-server start de reeks voor het aanmaken van de sessie en dus de doorgang door de PAM-modules die aan sshd zijn toegewezen.
  6. De PAM-module pam_clr_filter van de Linux-agent stuurt de gebruikersnaam naar de service cleanroom-filter, die vervolgens een nieuwe iptables-keten met de naam clr-LOGIN aanmaakt, waarbij LOGIN wordt vervangen door de ontvangen gebruikersnaam.
  7. Na het aanmaken van de iptables-keten genereert de service cleanroom-filter een willekeurig token en stuurt dit naar de PAM-module pam_clr_filter. Deze voegt het token toe aan de omgevingsvariabele CLR-ID van de gebruiker.
  8. De SSH-opnameservice stuurt via het uitvoerbare bestand /usr/local/ipdiva/bin/cleanroom-netfiltersession.py de lijst van toe te stane netwerken naar de service cleanroom-filter. Deze maakt vervolgens een iptables-regel OUTPUT aan om al het verkeer van de gebruiker, die aan zijn UID wordt herkend, naar de in stap 6 aangemaakte iptables-keten om te leiden. Alle voor de gebruiker toe te stane stromen worden aan de iptables-keten toegevoegd.
  9. Wanneer het einde van de SSH-sessie wordt geactiveerd, wordt de informatie naar de SSH-opnameservice van de Edge Gateway gestuurd.
  10. De service cleanroom-filter detecteert het einde van de sessie van de gebruiker en ruimt de toegevoegde iptables-regels op: hij verwijdert de directive OUTPUT die het verkeer van de gebruiker naar een iptables-keten omleidt, en verwijdert de keten zelf.
  11. Zodra de Edge Gateway het einde van de SSH-sessie heeft ontvangen, geeft hij deze informatie door aan de Mediation Controller.

Installatie

Vereiste root-rechten

Voor de installatie van de agent zijn root-rechten vereist.

Het .deb- of .rpm-pakket kan worden gedownload vanuit de beheerconsole:

  1. Ga naar het werkgebied ”Configurations” via de knop linksboven:
  2. Open de tegel ”Toolbox”
  3. Selecteer in het eerste tabblad, ”Integration Tools”, het installatieprogramma dat bij het gewenste besturingssysteem hoort

Breng het pakket na het ophalen over naar de Linux-server in de map /tmp/. Volg daarna de installatie-instructies voor uw besturingssysteem:

Voer de volgende opdrachten uit met de juiste root-rechten:

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

De tweede opdracht voegt automatisch twee regels toe aan het bestand /etc/pam.d/sshd, maar deze bewerking kan ook handmatig worden uitgevoerd:

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

Voer de volgende opdrachten uit met root-rechten:

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

De tweede opdracht voegt automatisch twee regels toe aan het bestand /etc/pam.d/sshd, maar deze bewerking kan ook handmatig worden uitgevoerd:

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