Zum Inhalt

Installation des Linux-Agenten

Der Linux-Agent wird von CyberElements verwendet, um die möglichen Netzwerkzugriffe von den SSH-Servern aus einzuschränken, auf die die Benutzer zugreifen (festgelegt in den Zugriffsrichtlinien bzw. -verträgen).

Voraussetzungen

Damit der Agent ordnungsgemäß funktioniert, sind einige Voraussetzungen erforderlich:

  • Kompatible Betriebssysteme: Red Hat 9 und Debian 12
  • Vorhandensein der Firewall iptables
  • Anmeldung mit einem anderen Konto als root

Hinweis

Der Linux-Agent wirkt nicht auf den Benutzer root, da dieser stets über ausreichende Rechte verfügt, um jede auf ihn angewendete Einschränkung wieder aufzuheben.

Da einige Dienste zudem mit root-Rechten arbeiten, könnten zusätzliche Netzwerkeinschränkungen diese Dienste instabil machen.

Funktionsweise

Der Linux-Agent gliedert sich in mehrere Bestandteile:

  • Einen systemd-Dienst namens cleanroom-filter
  • Ein PAM-Modul namens pam_clr_filter
  • Eine SELinux-Richtlinie für Red Hat, die dem SSH-Server die Kommunikation mit dem Dienst cleanroom-filter erlaubt

Der allgemeine Ablauf ist folgender:

SaaS-Kontext

Im nachstehenden Diagramm steht „Mediation Controller“ für den von Systancia betriebenen Cloud-Dienst CyberElements. Der Ablauf der SSH-Filterung ist im SaaS-Modus architektonisch identisch.

sequenceDiagram
    autonumber
    participant MED as Mediation Controller
    participant GW_SSH as Edge Gateway<br/>SSH-Aufzeichnung
    participant SSH as SSH-Ziel<br/>SSH-Server
    participant PAM as SSH-Ziel<br/>PAM-Modul pam_clr_filter
    participant svc as SSH-Ziel<br/>Dienst cleanroom-filter

    MED->>GW_SSH: Anfrage zum Öffnen einer<br/>SSH-Anwendung
    GW_SSH->>+MED: Abrufen der Filterinformationen<br/>für die Sitzung
    MED->>-GW_SSH: Senden der Netzwerk-<br/>Filterinformationen
    GW_SSH->>+SSH: SSH-Verbindung
    SSH-->-PAM: Erstellung einer SSH-Sitzung
    PAM->>+svc: Senden des Benutzernamens
    Note right of svc: Erstellen einer iptables-Kette <br/>für den Benutzer mit dem Namen clr-LOGIN
    svc->>-PAM: Senden eines eindeutigen Tokens
    Note over PAM: Hinzufügen der Umgebungsvariablen<br/> CLR-ID mit dem eindeutigen Token<br/> zur Sitzung des Benutzers
    GW_SSH->>svc: Senden der Liste der zu autorisierenden Netzwerke
    Note over svc: Erstellen einer iptables-OUTPUT-Regel,<br/> um den Verkehr des Benutzers in die zuvor<br/> erstellte iptables-Kette umzuleiten
    Note over svc: Hinzufügen der Autorisierungen zur<br/> iptables-Kette des Benutzers
    break Ende der SSH-Sitzung
        SSH->>+GW_SSH: Benachrichtigung über das Sitzungsende
        SSH-->svc: Erkennung des Endes der SSH-Sitzung
        Note over svc: Löschen der iptables-OUTPUT-<br/>Regel des Benutzers
        Note over svc: Löschen der iptables-Kette,<br/> die für den Benutzer erstellt wurde
        GW_SSH->>-MED: Benachrichtigung über das Ende<br/> der SSH-Sitzung des Benutzers
    end
Hold "Ctrl" to enable pan & zoom
  1. Der Server Mediation Controller sendet dem Edge Gateway die Informationen zum Öffnen einer neuen SSH-Sitzung.
  2. Der SSH-Aufzeichnungsdienst fragt beim Server Mediation Controller die Informationen zur Netzwerkfilterung ab, die auf die SSH-Sitzung anzuwenden sind.
  3. Der Mediation Controller antwortet mit einer Liste der zugelassenen Netzwerke.
  4. Der SSH-Aufzeichnungsdienst baut daraufhin die Verbindung zum SSH-Zielserver auf.
  5. Die Verbindung zum SSH-Server löst die Folge der Sitzungserstellung aus und damit den Durchlauf durch die sshd zugewiesenen PAM-Module.
  6. Das PAM-Modul pam_clr_filter des Linux-Agenten sendet den Benutzernamen an den Dienst cleanroom-filter, der daraufhin eine neue iptables-Kette namens clr-LOGIN anlegt, wobei LOGIN durch den empfangenen Benutzernamen ersetzt wird.
  7. Nach dem Anlegen der iptables-Kette erzeugt der Dienst cleanroom-filter ein zufälliges Token und sendet es an das PAM-Modul pam_clr_filter. Dieses fügt das Token der Umgebungsvariablen CLR-ID des Benutzers hinzu.
  8. Der SSH-Aufzeichnungsdienst sendet über die ausführbare Datei /usr/local/ipdiva/bin/cleanroom-netfiltersession.py die Liste der zuzulassenden Netzwerke an den Dienst cleanroom-filter. Dieser legt daraufhin eine iptables-Regel OUTPUT an, um den gesamten Verkehr des über seine UID identifizierten Benutzers in die in Schritt 6 angelegte iptables-Kette umzuleiten. Alle für den Benutzer zuzulassenden Flüsse werden der iptables-Kette hinzugefügt.
  9. Wird das Ende der SSH-Sitzung ausgelöst, wird die Information an den SSH-Aufzeichnungsdienst des Edge Gateway gesendet.
  10. Der Dienst cleanroom-filter erkennt das Ende der Benutzersitzung und räumt die hinzugefügten iptables-Regeln auf: Er löscht die Direktive OUTPUT, die den Verkehr des Benutzers in eine iptables-Kette umleitet, und löscht die Kette selbst.
  11. Sobald das Edge Gateway das Ende der SSH-Sitzung empfangen hat, leitet es diese Information an den Mediation Controller weiter.

Installation

Erforderliche root-Rechte

Für die Installation des Agenten sind root-Rechte erforderlich.

Das Paket .deb oder .rpm kann aus der Administrationskonsole heruntergeladen werden:

  1. Rufen Sie über die Schaltfläche oben links den Arbeitsbereich „Configurations“ auf:
  2. Öffnen Sie die Kachel „Toolbox“
  3. Wählen Sie in der ersten Registerkarte „Integration Tools“ das für das gewünschte Betriebssystem passende Installationsprogramm aus

Übertragen Sie das Paket nach dem Herunterladen in das Verzeichnis /tmp/ des Linux-Servers. Folgen Sie anschließend den Installationsanweisungen für Ihr Betriebssystem:

Führen Sie die folgenden Befehle mit den entsprechenden root-Rechten aus:

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

Der zweite Befehl fügt der Datei /etc/pam.d/sshd automatisch zwei Zeilen hinzu; dieser Vorgang kann aber auch manuell durchgeführt werden:

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

Führen Sie die folgenden Befehle mit root-Rechten aus:

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

Der zweite Befehl fügt der Datei /etc/pam.d/sshd automatisch zwei Zeilen hinzu; dieser Vorgang kann aber auch manuell durchgeführt werden:

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