Zum Inhalt

Installation des Linux-Agenten

Der Linux-Agent wird von cyberelements.io / cyberelements Cleanroom verwendet, um den möglichen Netzwerkzugriff von SSH-Servern zu begrenzen, auf die Benutzer zugreifen (definiert in Zugriffsrichtlinien / -verträgen).

Voraussetzungen

Für die ordnungsgemäße Funktion des Wirkstoffs sind einige Voraussetzungen erforderlich:

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

Info

Der Linux-Agent wirkt nicht auf die root Der Benutzer hat immer genügend Rechte, um alle ihm auferlegten Beschränkungen zu entfernen.

Da einige Dienste root-Rechte nutzen, könnte das Hinzufügen von Netzwerkbeschränkungen dazu führen, dass diese Dienste instabil werden.

Betrieb

Der Linux-Agent ist in mehrere Teile unterteilt:

  • Ein Systemd-Dienst mit dem Namen cleanroom-filter
  • Ein PAM-Modul mit der Bezeichnung pam_clr_filter
  • Eine SELinux-Richtlinie für Red Hat, die es dem SSH-Server ermöglicht, mit dem cleanroom-filter-Dienst zu kommunizieren

Die allgemeine Operation folgt dieser Reihenfolge:

sequenceDiagram
    autonumber
    participant MED as Mediation Controller
    participant GW_SSH as Edge Gateway<br/>SSH Recorder
    participant SSH as SSH Target<br/>SSH Server
    participant PAM as SSH Target<br/>pam_clr_filter PAM Module
    participant svc as SSH Target<br/>cleanroom-filter Service

    MED->>GW_SSH: Request to open an<br/>SSH application
    GW_SSH->>+MED: Retrieve filtering information<br/>for the session
    MED->>-GW_SSH: Send network<br/>filtering information
    GW_SSH->>+SSH: SSH Connection
    SSH-->-PAM: Creating an SSH session
    PAM->>+svc: Sending the username
    Note right of svc: Creating an iptables <br/>chain for the user named clr-LOGIN
    svc->>-PAM: Sending a unique token
    Note over PAM: Adding the CLR-ID environment<br/> variable containing the unique token<br/> to the user's session
    GW_SSH->>svc: Sending the list of networks to be authorized
    Note over svc: Creating an iptables OUTPUT rule<br/> to redirect the user's traffic to the iptables<br/> chain created previously
    Note over svc: Adding authorizations to the iptables<br/> chain created for the user
    break End of SSH session
        SSH->>+GW_SSH: End of session notification
        SSH-->svc: Detection of end of SSH session
        Note over svc: Deletion of iptables OUTPUT<br/> rule created for user 
        Note over svc: Deletion of iptables chain<br/> created for user
        GW_SSH->>-MED: End of SSH session<br/> notification for user
    end
Hold "Ctrl" to enable pan & zoom
  1. Die Mediation Controller Server sendet Informationen an die Edge Gateway eine neue SSH-Session zu eröffnen.
  2. Der SSH-Aufzeichnungsdienst bittet den Mediation Controller-Server um die Netzwerkfilterinformationen, die auf die SSH-Sitzung angewendet werden sollen.
  3. Die Mediation Controller antwortet mit einer Liste der autorisierten Netzwerke.
  4. Der SSH-Aufzeichnungsdienst stellt dann die Verbindung zum Ziel-SSH-Server her.
  5. Die Verbindung zum SSH-Server löst die Sequenz zur Erstellung der Sitzung aus und führt somit zum Durchgang durch die PAM-Module, die sshd zugeordnet sind.
  6. Der Linux-Agent pam_clr_filter Das PAM-Modul sendet den Benutzernamen an den cleanroom-filter Service, der dann eine neue iptables-Kette namens erstellt clr-LOGIN wo LOGIN durch den empfangenen Benutzernamen ersetzt wird.
  7. Nach der Erstellung der iptables-Kette erstellt und sendet der cleanroom-filter-Dienst ein zufälliges Token an das pam_clr_filter-PAM-Modul. Letzteres fügt dieses Token der Umgebungsvariable CLR-ID des Benutzers hinzu.
  8. Der SSH-Aufzeichnungsdienst sendet über die /usr/local/ipdiva/bin/cleanroom-netfiltersession.py Die Kommission hat die Kommission mit der Erstellung der Liste der Netze, die der cleanroom-filter Der Dienst erzeugt dann eine OUTPUT iptables-Regel, um den gesamten Datenverkehr des Benutzers, der durch seine UID identifiziert wird, auf die in Schritt 6 erstellte iptables-Kette umzuleiten. Alle für den Benutzer zu autorisierenden Ströme werden der iptables-Kette hinzugefügt.
  9. Wenn das Ende der SSH-Session ausgelöst wird, werden die Informationen an den SSH-Aufzeichnungsdienst des Edge Gateway gesendet.
  10. Die cleanroom-filter Der Dienst erkennt das Ende der Benutzersitzung und bereinigt die hinzugefügten iptables-Regeln: er löscht die OUTPUT Richtlinie, die den Benutzerverkehr auf eine iptables-Kette umleitet und die Kette selbst löscht.
  11. Sobald der Edge Gateway das Ende der SSH-Session erhalten hat, leitet er diese Information an den Mediation Controller weiter.

Einrichtung

Erforderliche rootBerechtigungen

root-Rechte sind erforderlich, um den Agent zu installieren.

Das .deb oder .rpm Paket kann von der Verwaltungskonsole heruntergeladen werden:

  1. Zugriff auf den Arbeitsbereich "Konfigurationen" über die oben links liegende Taste:
  2. Öffnen Sie die "Toolbox"-Fliese
  3. Wählen Sie die für das gewünschte Betriebssystem geeignete Einrichtung im ersten Tab, Integrationswerkzeuge
  1. Zugriff auf den Arbeitsbereich "Konfigurationen" über die oben links liegende Taste:
  2. Öffnen Sie die "Toolbox"-Fliese
  3. Wählen Sie die für das gewünschte Betriebssystem geeignete Einrichtung im ersten Tab, Integrationswerkzeuge

Wenn Sie das Paket abgerufen haben, senden Sie es an den Linux-Server im /tmp/-Verzeichnis. Folgen Sie dann den Installationsanweisungen für Ihr Betriebssystem:

Führen Sie die folgenden Befehle mit den entsprechenden root Berechtigungen 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 automatisiert das Hinzufügen von zwei Zeilen zur /etc/pam.d/sshd Datei, kann aber auch manuell ausgefü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-Berechtigungen 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 automatisiert das Hinzufügen von zwei Zeilen zur /etc/pam.d/sshd Datei, kann aber auch manuell ausgefü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