Přeskočit obsah

Instalace agenta pro Linux

Agenta pro Linux používá CyberElements k omezení možného síťového přístupu ze serverů SSH, ke kterým uživatelé přistupují (definovaných v zásadách přístupu / smlouvách).

Předpoklady

Aby agent správně fungoval, je nutné splnit několik předpokladů:

  • Kompatibilní operační systémy: Red Hat 9 a Debian 12
  • Přítomnost brány firewall iptables
  • Přihlášení jiným účtem než root

Informace

Agent pro Linux nepůsobí na uživatele root, protože tento uživatel má vždy dostatečná práva k odebrání jakýchkoli omezení, která by na něj byla uplatněna.

Protože některé služby využívají práva root, mohlo by navíc přidání síťových omezení způsobit nestabilitu těchto služeb.

Princip fungování

Agent pro Linux se skládá z několika částí:

  • služba systemd s názvem cleanroom-filter
  • modul PAM s názvem pam_clr_filter
  • zásada SELinux pro Red Hat, která serveru SSH umožňuje komunikovat se službou cleanroom-filter

Celkový průběh je následující:

Kontext SaaS

Na níže uvedeném diagramu představuje „Mediation Controller“ cloudovou službu CyberElements spravovanou společností CyberElements. Tok filtrování SSH je v režimu SaaS architektonicky shodný.

sequenceDiagram
    autonumber
    participant MED as Mediation Controller
    participant GW_SSH as Edge Gateway<br/>Nahrávání SSH
    participant SSH as Cíl SSH<br/>Server SSH
    participant PAM as Cíl SSH<br/>Modul PAM pam_clr_filter
    participant svc as Cíl SSH<br/>Služba cleanroom-filter

    MED->>GW_SSH: Požadavek na otevření<br/>aplikace SSH
    GW_SSH->>+MED: Načtení informací o filtrování<br/>pro relaci
    MED->>-GW_SSH: Odeslání informací<br/>o filtrování sítě
    GW_SSH->>+SSH: Připojení SSH
    SSH-->-PAM: Vytvoření relace SSH
    PAM->>+svc: Odeslání uživatelského jména
    Note right of svc: Vytvoření řetězce <br/>iptables pro uživatele s názvem clr-LOGIN
    svc->>-PAM: Odeslání jedinečného tokenu
    Note over PAM: Přidání proměnné prostředí<br/> CLR-ID s jedinečným tokenem<br/> do relace uživatele
    GW_SSH->>svc: Odeslání seznamu sítí, které se mají povolit
    Note over svc: Vytvoření pravidla iptables OUTPUT<br/> pro přesměrování provozu uživatele do<br/> dříve vytvořeného řetězce iptables
    Note over svc: Přidání autorizací do řetězce<br/> iptables vytvořeného pro uživatele
    break Konec relace SSH
        SSH->>+GW_SSH: Oznámení o konci relace
        SSH-->svc: Zjištění konce relace SSH
        Note over svc: Odstranění pravidla iptables<br/> OUTPUT vytvořeného pro uživatele
        Note over svc: Odstranění řetězce iptables<br/> vytvořeného pro uživatele
        GW_SSH->>-MED: Oznámení o konci<br/> relace SSH uživatele
    end
Hold "Ctrl" to enable pan & zoom
  1. Server Mediation Controller odešle komponentě Edge Gateway informace k otevření nové relace SSH.
  2. Služba nahrávání SSH požádá server Mediation Controller o informace o síťovém filtrování, které se mají použít na relaci SSH.
  3. Mediation Controller odpoví seznamem autorizovaných sítí.
  4. Služba nahrávání SSH poté naváže připojení k cílovému serveru SSH.
  5. Připojení k serveru SSH spustí sekvenci vytváření relace, a tedy průchod moduly PAM přiřazenými k sshd.
  6. Modul PAM pam_clr_filter agenta pro Linux odešle uživatelské jméno službě cleanroom-filter, která poté vytvoří nový řetězec iptables s názvem clr-LOGIN, kde se LOGIN nahradí přijatým uživatelským jménem.
  7. Po vytvoření řetězce iptables služba cleanroom-filter vytvoří náhodný token a odešle jej modulu PAM pam_clr_filter. Ten tento token přidá do proměnné prostředí CLR-ID uživatele.
  8. Služba nahrávání SSH odešle prostřednictvím spustitelného souboru /usr/local/ipdiva/bin/cleanroom-netfiltersession.py službě cleanroom-filter seznam sítí, které mají být autorizovány. Služba poté vytvoří pravidlo iptables OUTPUT, které přesměruje veškerý provoz uživatele, identifikovaného jeho UID, do řetězce iptables vytvořeného v kroku 6. Všechny toky, které mají být pro uživatele autorizovány, se přidají do řetězce iptables.
  9. Když je vyvoláno ukončení relace SSH, informace se odešle službě nahrávání SSH komponenty Edge Gateway.
  10. Služba cleanroom-filter zjistí ukončení relace uživatele a vyčistí přidaná pravidla iptables: odstraní direktivu OUTPUT, která přesměrovává provoz uživatele do řetězce iptables, a odstraní samotný řetězec.
  11. Jakmile komponenta Edge Gateway přijme informaci o ukončení relace SSH, předá ji službě Mediation Controller.

Instalace

Požadovaná oprávnění root

K instalaci agenta jsou nutná privilegia root.

Balíček .deb nebo .rpm lze stáhnout z konzoly pro správu:

  1. Otevřete pracovní prostor „Configurations“ pomocí tlačítka vlevo nahoře:
  2. Otevřete dlaždici „Toolbox“
  3. Na první kartě „Integration Tools“ vyberte instalační program odpovídající požadovanému operačnímu systému

Po získání balíčku jej odešlete na server Linux do adresáře /tmp/. Poté postupujte podle pokynů k instalaci pro váš operační systém:

Spusťte následující příkazy s příslušnými oprávněními root:

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

Druhý příkaz automatizuje přidání dvou řádků do souboru /etc/pam.d/sshd, tuto operaci však lze provést i ručně:

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

Spusťte následující příkazy s oprávněními root:

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

Druhý příkaz automatizuje přidání dvou řádků do souboru /etc/pam.d/sshd, tuto operaci však lze provést i ručně:

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