Sari la conținut

Instalarea agentului Linux

Agentul Linux este utilizat de CyberElements Bastion pentru a limita accesele de rețea posibile de la serverele SSH accesate de utilizatori (definite în politicile sau contractele de acces).

Cerințe preliminare

Pentru ca agentul să funcționeze corect sunt necesare câteva cerințe preliminare:

  • Sisteme de operare compatibile: Red Hat 9 și Debian 12
  • Prezența firewallului iptables
  • Conectarea cu un cont diferit de root

Informație

Agentul Linux nu acționează asupra utilizatorului root, deoarece acest utilizator dispune întotdeauna de drepturi suficiente pentru a elimina orice restricție care i-ar fi aplicată.

În plus, deoarece unele servicii utilizează drepturi root, adăugarea de restricții de rețea ar putea destabiliza aceste servicii.

Funcționare

Agentul Linux este împărțit în mai multe părți:

  • Un serviciu systemd numit cleanroom-filter
  • Un modul PAM numit pam_clr_filter
  • O politică SELinux pentru Red Hat, care permite serverului SSH să comunice cu serviciul cleanroom-filter

Funcționarea generală urmează această secvență:

sequenceDiagram
    autonumber
    participant MED as Mediation Controller
    participant GW_SSH as Edge Gateway<br/>Înregistrator SSH
    participant SSH as Țintă SSH<br/>Server SSH
    participant PAM as Țintă SSH<br/>Modul PAM pam_clr_filter
    participant svc as Țintă SSH<br/>Serviciul cleanroom-filter

    MED->>GW_SSH: Cerere de deschidere a unei<br/>aplicații SSH
    GW_SSH->>+MED: Preluarea informațiilor de<br/>filtrare pentru sesiune
    MED->>-GW_SSH: Trimiterea informațiilor de<br/>filtrare a rețelei
    GW_SSH->>+SSH: Conexiune SSH
    SSH-->-PAM: Crearea unei sesiuni SSH
    PAM->>+svc: Trimiterea numelui de utilizator
    Note right of svc: Crearea unui lanț <br/>iptables pentru utilizatorul cu numele clr-LOGIN
    svc->>-PAM: Trimiterea unui token unic
    Note over PAM: Adăugarea la sesiunea utilizatorului<br/> a variabilei de mediu CLR-ID<br/> care conține tokenul unic
    GW_SSH->>svc: Trimiterea listei rețelelor care trebuie autorizate
    Note over svc: Crearea unei reguli iptables OUTPUT<br/> pentru a redirecționa traficul utilizatorului către<br/> lanțul iptables creat anterior
    Note over svc: Adăugarea autorizațiilor în lanțul<br/> iptables creat pentru utilizator
    break Încheierea sesiunii SSH
        SSH->>+GW_SSH: Notificarea încheierii sesiunii
        SSH-->svc: Detectarea încheierii sesiunii SSH
        Note over svc: Ștergerea regulii iptables<br/> OUTPUT creată pentru utilizator
        Note over svc: Ștergerea lanțului iptables<br/> creat pentru utilizator
        GW_SSH->>-MED: Notificarea încheierii<br/> sesiunii SSH a utilizatorului
    end
Hold "Ctrl" to enable pan & zoom
  1. Serverul Mediation Controller trimite către Edge Gateway informațiile necesare pentru deschiderea unei noi sesiuni SSH.
  2. Serviciul de înregistrare SSH solicită serverului Mediation Controller informațiile de filtrare a rețelei care trebuie aplicate sesiunii SSH.
  3. Mediation Controller răspunde cu o listă de rețele autorizate.
  4. Serviciul de înregistrare SSH stabilește apoi conexiunea către serverul SSH de destinație.
  5. Conectarea la serverul SSH declanșează secvența de creare a sesiunii și, prin urmare, trecerea prin modulele PAM atribuite lui sshd.
  6. Modulul PAM pam_clr_filter al agentului Linux trimite numele de utilizator serviciului cleanroom-filter, care creează apoi un nou lanț iptables numit clr-LOGIN, unde LOGIN este înlocuit cu numele de utilizator primit.
  7. După crearea lanțului iptables, serviciul cleanroom-filter generează și trimite un token aleatoriu către modulul PAM pam_clr_filter. Acesta din urmă adaugă tokenul respectiv în variabila de mediu CLR-ID a utilizatorului.
  8. Serviciul de înregistrare SSH trimite, prin executabilul /usr/local/ipdiva/bin/cleanroom-netfiltersession.py, lista rețelelor care trebuie autorizate către serviciul cleanroom-filter. Acesta creează apoi o regulă iptables OUTPUT pentru a redirecționa tot traficul utilizatorului, identificat prin UID-ul său, către lanțul iptables creat la pasul 6. Toate fluxurile care trebuie autorizate pentru utilizator sunt adăugate în lanțul iptables.
  9. Când se declanșează încheierea sesiunii SSH, informația este trimisă serviciului de înregistrare SSH de pe Edge Gateway.
  10. Serviciul cleanroom-filter detectează încheierea sesiunii utilizatorului și curăță regulile iptables adăugate: șterge directiva OUTPUT care redirecționează traficul utilizatorului către un lanț iptables și șterge lanțul însuși.
  11. După ce Edge Gateway a primit încheierea sesiunii SSH, transmite această informație către Mediation Controller.

Instalare

Permisiuni root necesare

Pentru instalarea agentului sunt necesare privilegii root.

Pachetul .deb sau .rpm poate fi descărcat din consola de administrare:

  1. Accesați spațiul de lucru „Configurations” cu butonul situat în partea din stânga sus:
  2. Deschideți cardul „Toolbox”
  3. Selectați programul de instalare corespunzător sistemului de operare dorit în primul tab, „Integration Tools”

După ce ați obținut pachetul, trimiteți-l pe serverul Linux, în directorul /tmp/. Urmați apoi instrucțiunile de instalare corespunzătoare sistemului dumneavoastră de operare:

Executați comenzile următoare cu permisiunile root corespunzătoare:

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

A doua comandă automatizează adăugarea a două linii în fișierul /etc/pam.d/sshd, dar această operațiune poate fi efectuată și manual:

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

Executați comenzile următoare cu permisiuni 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

A doua comandă automatizează adăugarea a două linii în fișierul /etc/pam.d/sshd, dar această operațiune poate fi efectuată și manual:

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