Pereiti prie turinio

Linux agento įdiegimas

Linux agentą CyberElements naudoja, kad apribotų galimą tinklo prieigą iš SSH serverių, prie kurių jungiasi vartotojai (apibrėžtų prieigos politikose / sutartyse).

Būtinosios sąlygos

Kad agentas veiktų tinkamai, reikia kelių būtinųjų sąlygų:

  • Suderinamos OS: Red Hat 9 ir Debian 12
  • Įdiegta užkarda iptables
  • Prisijungimas kita paskyra nei root

Informacija

Linux agentas nedaro poveikio vartotojui root, nes šis vartotojas visada turi pakankamai teisių pašalinti bet kokius jam taikomus apribojimus.

Be to, kadangi kai kurios paslaugos naudoja root teises, papildomi tinklo apribojimai galėtų padaryti šias paslaugas nestabilias.

Veikimas

Linux agentą sudaro kelios dalys:

  • systemd paslauga, pavadinta cleanroom-filter
  • PAM modulis, pavadintas pam_clr_filter
  • Red Hat skirta SELinux politika, leidžianti SSH serveriui bendrauti su paslauga cleanroom-filter

Bendra veikimo seka yra tokia:

SaaS kontekstas

Toliau pateiktoje diagramoje „Mediation Controller“ reiškia CyberElements debesies paslaugą, kurią valdo CyberElements. SSH filtravimo eiga SaaS režimu architektūriškai yra tokia pati.

sequenceDiagram
    autonumber
    participant MED as Mediation Controller
    participant GW_SSH as Edge Gateway<br/>SSH įrašymo įrenginys
    participant SSH as SSH tikslinė sistema<br/>SSH serveris
    participant PAM as SSH tikslinė sistema<br/>PAM modulis pam_clr_filter
    participant svc as SSH tikslinė sistema<br/>tarnyba cleanroom-filter

    MED->>GW_SSH: Užklausa atidaryti<br/>SSH taikomąją programą
    GW_SSH->>+MED: Filtravimo informacijos gavimas<br/>seansui
    MED->>-GW_SSH: Tinklo filtravimo<br/>informacijos siuntimas
    GW_SSH->>+SSH: SSH ryšys
    SSH-->-PAM: SSH seanso sukūrimas
    PAM->>+svc: Vartotojo vardo siuntimas
    Note right of svc: iptables grandinės clr-LOGIN <br/>sukūrimas vartotojui
    svc->>-PAM: Unikalaus tokeno siuntimas
    Note over PAM: Aplinkos kintamojo CLR-ID<br/> su unikaliu tokenu pridėjimas<br/> prie vartotojo seanso
    GW_SSH->>svc: Leistinų tinklų sąrašo siuntimas
    Note over svc: iptables OUTPUT taisyklės sukūrimas<br/> vartotojo srautui nukreipti į anksčiau sukurtą<br/> iptables grandinę
    Note over svc: Leidimų pridėjimas į vartotojui<br/> sukurtą iptables grandinę
    break SSH seanso pabaiga
        SSH->>+GW_SSH: Pranešimas apie seanso pabaigą
        SSH-->svc: SSH seanso pabaigos aptikimas
        Note over svc: Vartotojui sukurtos<br/> iptables OUTPUT taisyklės panaikinimas
        Note over svc: Vartotojui sukurtos<br/> iptables grandinės panaikinimas
        GW_SSH->>-MED: Pranešimas apie vartotojo<br/> SSH seanso pabaigą
    end
Hold "Ctrl" to enable pan & zoom
  1. Mediation Controller serveris siunčia komponentui Edge Gateway informaciją naujam SSH seansui atidaryti.
  2. SSH įrašymo paslauga paprašo Mediation Controller serverio tinklo filtravimo informacijos, taikytinos SSH seansui.
  3. Mediation Controller atsako autorizuotų tinklų sąrašu.
  4. Tada SSH įrašymo paslauga užmezga ryšį su tiksliniu SSH serveriu.
  5. Prisijungimas prie SSH serverio paleidžia seanso kūrimo seką, taigi ir perėjimą per sshd priskirtus PAM modulius.
  6. Linux agento PAM modulis pam_clr_filter siunčia vartotojo vardą paslaugai cleanroom-filter, kuri sukuria naują iptables grandinę, pavadintą clr-LOGIN, kur LOGIN pakeičiamas gautu vartotojo vardu.
  7. Sukūrusi iptables grandinę, paslauga cleanroom-filter sugeneruoja atsitiktinį tokeną ir nusiunčia jį PAM moduliui pam_clr_filter. Šis modulis įrašo tokeną į vartotojo aplinkos kintamąjį CLR-ID.
  8. SSH įrašymo paslauga per vykdomąjį failą /usr/local/ipdiva/bin/cleanroom-netfiltersession.py nusiunčia paslaugai cleanroom-filter autorizuotinų tinklų sąrašą. Tada paslauga sukuria iptables taisyklę OUTPUT, kuri visą vartotojo, identifikuojamo pagal jo UID, duomenų srautą nukreipia į 6 veiksme sukurtą iptables grandinę. Visi vartotojui autorizuotini srautai įtraukiami į iptables grandinę.
  9. Inicijavus SSH seanso pabaigą, informacija siunčiama komponento Edge Gateway SSH įrašymo paslaugai.
  10. Paslauga cleanroom-filter aptinka vartotojo seanso pabaigą ir išvalo pridėtas iptables taisykles: panaikina direktyvą OUTPUT, nukreipiančią vartotojo duomenų srautą į iptables grandinę, ir panaikina pačią grandinę.
  11. Kai Edge Gateway gauna SSH seanso pabaigą, jis persiunčia šią informaciją į Mediation Controller.

Įdiegimas

Būtini root leidimai

Agentui įdiegti reikia root privilegijų.

Paketą .deb arba .rpm galima atsisiųsti iš administravimo konsolės:

  1. Atidarykite darbo sritį „Configurations“ viršuje kairėje esančiu mygtuku:
  2. Atidarykite plytelę „Toolbox“
  3. Pirmajame skirtuke „Integration Tools“ pasirinkite norimai OS tinkamą diegimo programą

Gavę paketą, nusiųskite jį į Linux serverio katalogą /tmp/. Tada vykdykite savo operacinės sistemos diegimo instrukcijas:

Vykdykite šias komandas su atitinkamais root leidimais:

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

Antroji komanda automatiškai įtraukia dvi eilutes į failą /etc/pam.d/sshd, tačiau šią operaciją galima atlikti ir rankiniu būdu:

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

Vykdykite šias komandas su root leidimais:

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

Antroji komanda automatiškai įtraukia dvi eilutes į failą /etc/pam.d/sshd, tačiau šią operaciją galima atlikti ir rankiniu būdu:

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