Gå till innehållet

Installation av Linux-agenten

Linux-agenten används av CyberElements Bastion för att begränsa möjlig nätverksåtkomst från de SSH-servrar som användarna kommer åt (definierade i åtkomstpolicyer/åtkomstkontrakt).

Förutsättningar

För att agenten ska fungera korrekt krävs några förutsättningar:

  • Kompatibla operativsystem: Red Hat 9 och Debian 12
  • Förekomst av brandväggen iptables
  • Inloggning med ett annat konto än root

Information

Linux-agenten verkar inte på användaren root, eftersom denna användare alltid har tillräckliga rättigheter för att ta bort varje begränsning som tillämpas på den.

Eftersom vissa tjänster dessutom använder root-rättigheter kan ytterligare nätverksbegränsningar göra dessa tjänster instabila.

Funktionssätt

Linux-agenten är uppdelad i flera delar:

  • En systemd-tjänst med namnet cleanroom-filter
  • En PAM-modul med namnet pam_clr_filter
  • En SELinux-policy för Red Hat som låter SSH-servern kommunicera med tjänsten cleanroom-filter

Det allmänna förloppet är följande:

sequenceDiagram
    autonumber
    participant MED as Mediation Controller
    participant GW_SSH as Edge Gateway<br/>SSH-inspelare
    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/>Tjänsten cleanroom-filter

    MED->>GW_SSH: Begäran om att öppna ett<br/>SSH-program
    GW_SSH->>+MED: Hämtning av filtreringsinformationen<br/>för sessionen
    MED->>-GW_SSH: Sändning av nätverks-<br/>filtreringsinformationen
    GW_SSH->>+SSH: SSH-anslutning
    SSH-->-PAM: Skapande av en SSH-session
    PAM->>+svc: Sändning av användarnamnet
    Note right of svc: Skapande av en iptables-kedja <br/>för användaren med namnet clr-LOGIN
    svc->>-PAM: Sändning av en unik token
    Note over PAM: Tillägg av miljövariabeln<br/> CLR-ID som innehåller den unika token<br/> till användarens session
    GW_SSH->>svc: Sändning av listan över nätverk som ska godkännas
    Note over svc: Skapande av en iptables OUTPUT-regel<br/> för att omdirigera användarens trafik till den<br/> tidigare skapade iptables-kedjan
    Note over svc: Tillägg av behörigheterna till den<br/> iptables-kedja som skapats för användaren
    break Slutet på SSH-sessionen
        SSH->>+GW_SSH: Meddelande om sessionens slut
        SSH-->svc: Identifiering av slutet på SSH-sessionen
        Note over svc: Borttagning av den iptables OUTPUT-<br/>regel som skapats för användaren
        Note over svc: Borttagning av den iptables-kedja<br/> som skapats för användaren
        GW_SSH->>-MED: Meddelande om slutet på<br/> användarens SSH-session
    end
Hold "Ctrl" to enable pan & zoom
  1. Servern Mediation Controller skickar informationen för att öppna en ny SSH-session till Edge Gateway.
  2. SSH-inspelningstjänsten frågar servern Mediation Controller efter den information om nätverksfiltrering som ska tillämpas på SSH-sessionen.
  3. Mediation Controller svarar med en lista över tillåtna nätverk.
  4. SSH-inspelningstjänsten upprättar därefter anslutningen till mål-SSH-servern.
  5. Anslutningen till SSH-servern utlöser förloppet för skapande av sessionen och därmed genomgången av de PAM-moduler som är tilldelade sshd.
  6. PAM-modulen pam_clr_filter i Linux-agenten skickar användarnamnet till tjänsten cleanroom-filter, som därefter skapar en ny iptables-kedja med namnet clr-LOGIN, där LOGIN ersätts av det mottagna användarnamnet.
  7. Efter att ha skapat iptables-kedjan skapar tjänsten cleanroom-filter en slumpmässig token och skickar den till PAM-modulen pam_clr_filter. Denna lägger till tokenen i användarens miljövariabel CLR-ID.
  8. SSH-inspelningstjänsten skickar, via den körbara filen /usr/local/ipdiva/bin/cleanroom-netfiltersession.py, listan över de nätverk som ska tillåtas till tjänsten cleanroom-filter. Tjänsten skapar därefter en iptables-regel OUTPUT för att omdirigera all trafik från användaren, som identifieras via sitt UID, till den iptables-kedja som skapades i steg 6. Alla flöden som ska tillåtas för användaren läggs till i iptables-kedjan.
  9. När slutet på SSH-sessionen utlöses skickas informationen till SSH-inspelningstjänsten på Edge Gateway.
  10. Tjänsten cleanroom-filter upptäcker slutet på användarens session och rensar de tillagda iptables-reglerna: den tar bort direktivet OUTPUT som omdirigerar användarens trafik till en iptables-kedja och tar bort själva kedjan.
  11. När Edge Gateway har tagit emot slutet på SSH-sessionen vidarebefordrar den informationen till Mediation Controller.

Installation

Nödvändiga root-rättigheter

root-rättigheter krävs för att installera agenten.

Paketet .deb eller .rpm kan laddas ner från administrationskonsolen:

  1. Öppna arbetsytan ”Configurations” med knappen längst upp till vänster:
  2. Öppna panelen ”Toolbox”
  3. Välj det installationsprogram som passar det önskade operativsystemet på den första fliken, ”Integration Tools”

När du har hämtat paketet skickar du det till Linux-servern i katalogen /tmp/. Följ därefter installationsanvisningarna för ditt operativsystem:

Kör följande kommandon med lämpliga root-rättigheter:

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

Det andra kommandot lägger automatiskt till två rader i filen /etc/pam.d/sshd, men denna åtgärd kan även utföras manuellt:

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öljande kommandon med root-rättigheter:

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

Det andra kommandot lägger automatiskt till två rader i filen /etc/pam.d/sshd, men denna åtgärd kan även utföras manuellt:

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