Hyppää sisältöön

Linux-agentin asennus

CyberElements Bastion käyttää Linux-agenttia rajoittaakseen mahdollisia verkkokäyttöjä niiltä SSH-palvelimilta, joita käyttäjät käyttävät (määritetty pääsykäytännöissä / sopimuksissa).

Edellytykset

Agentin asianmukainen toiminta edellyttää muutamia edellytyksiä:

  • Yhteensopivat käyttöjärjestelmät: Red Hat 9 ja Debian 12
  • Palomuurin iptables olemassaolo
  • Kirjautuminen muulla tilillä kuin root

Tietoa

Linux-agentti ei vaikuta käyttäjään root, sillä tällä käyttäjällä on aina riittävät oikeudet poistaa kaikki häneen sovelletut rajoitukset.

Lisäksi, koska jotkin palvelut käyttävät root-oikeuksia, verkkorajoitusten lisääminen voi tehdä näistä palveluista epävakaita.

Toiminta

Linux-agentti jakautuu useaan osaan:

  • systemd-palvelu nimeltä cleanroom-filter
  • PAM-moduuli nimeltä pam_clr_filter
  • SELinux-käytäntö Red Hatille, joka sallii SSH-palvelimen viestinnän cleanroom-filter-palvelun kanssa

Yleinen toiminta noudattaa seuraavaa järjestystä:

sequenceDiagram
    autonumber
    participant MED as Mediation Controller
    participant GW_SSH as Edge Gateway<br/>SSH-tallennin
    participant SSH as SSH-kohde<br/>SSH-palvelin
    participant PAM as SSH-kohde<br/>PAM-moduuli pam_clr_filter
    participant svc as SSH-kohde<br/>Palvelu cleanroom-filter

    MED->>GW_SSH: Pyyntö avata<br/>SSH-sovellus
    GW_SSH->>+MED: Istunnon suodatustietojen<br/>haku
    MED->>-GW_SSH: Verkkosuodatus-<br/>tietojen lähetys
    GW_SSH->>+SSH: SSH-yhteys
    SSH-->-PAM: SSH-istunnon luonti
    PAM->>+svc: Käyttäjätunnuksen lähetys
    Note right of svc: iptables-ketjun luonti <br/>käyttäjälle nimellä clr-LOGIN
    svc->>-PAM: Yksilöivän tokenin lähetys
    Note over PAM: Yksilöivän tokenin sisältävän<br/> CLR-ID-ympäristömuuttujan lisäys<br/> käyttäjän istuntoon
    GW_SSH->>svc: Valtuutettavien verkkojen luettelon lähetys
    Note over svc: iptables OUTPUT -säännön luonti<br/> käyttäjän liikenteen ohjaamiseksi aiemmin<br/> luotuun iptables-ketjuun
    Note over svc: Valtuutusten lisäys käyttäjälle<br/> luotuun iptables-ketjuun
    break SSH-istunnon päättyminen
        SSH->>+GW_SSH: Ilmoitus istunnon päättymisestä
        SSH-->svc: SSH-istunnon päättymisen havaitseminen
        Note over svc: Käyttäjälle luodun iptables<br/> OUTPUT -säännön poisto
        Note over svc: Käyttäjälle luodun iptables-<br/>ketjun poisto
        GW_SSH->>-MED: Ilmoitus käyttäjän<br/> SSH-istunnon päättymisestä
    end
Hold "Ctrl" to enable pan & zoom
  1. Mediation Controller -palvelin lähettää Edge Gateway -palvelimelle tiedot uuden SSH-istunnon avaamiseksi.
  2. SSH-tallennuspalvelu pyytää Mediation Controller -palvelimelta tiedot verkkosuodatuksesta, jota SSH-istuntoon on sovellettava.
  3. Mediation Controller vastaa luettelolla sallituista verkoista.
  4. SSH-tallennuspalvelu muodostaa tämän jälkeen yhteyden kohteena olevaan SSH-palvelimeen.
  5. Yhteyden muodostaminen SSH-palvelimeen käynnistää istunnon luontijakson ja siten läpikäynnin sshd-palvelulle määritetyissä PAM-moduuleissa.
  6. Linux-agentin PAM-moduuli pam_clr_filter lähettää käyttäjätunnuksen cleanroom-filter-palvelulle, joka luo uuden iptables-ketjun nimeltä clr-LOGIN, jossa LOGIN korvataan vastaanotetulla käyttäjätunnuksella.
  7. Iptables-ketjun luomisen jälkeen cleanroom-filter-palvelu luo satunnaisen tokenin ja lähettää sen PAM-moduulille pam_clr_filter. Tämä lisää tokenin käyttäjän ympäristömuuttujaan CLR-ID.
  8. SSH-tallennuspalvelu lähettää suoritettavan tiedoston /usr/local/ipdiva/bin/cleanroom-netfiltersession.py välityksellä luettelon sallittavista verkoista cleanroom-filter-palvelulle. Palvelu luo tämän jälkeen OUTPUT-iptables-säännön, joka ohjaa kaiken UID-tunnuksellaan tunnistetun käyttäjän liikenteen vaiheessa 6 luotuun iptables-ketjuun. Kaikki käyttäjälle sallittavat liikennevirrat lisätään iptables-ketjuun.
  9. Kun SSH-istunnon päättyminen käynnistyy, tieto lähetetään Edge Gateway -palvelimen SSH-tallennuspalvelulle.
  10. cleanroom-filter-palvelu havaitsee käyttäjän istunnon päättymisen ja siivoaa lisätyt iptables-säännöt: se poistaa OUTPUT-direktiivin, joka ohjaa käyttäjän liikenteen iptables-ketjuun, ja poistaa itse ketjun.
  11. Kun Edge Gateway on vastaanottanut SSH-istunnon päättymisen, se välittää tämän tiedon edelleen Mediation Controller -palvelimelle.

Asennus

Tarvittavat root-oikeudet

Agentin asentaminen vaatii root-oikeudet.

.deb- tai .rpm-paketti voidaan ladata hallintakonsolista:

  1. Avaa työtila ”Configurations” vasemmassa yläkulmassa olevalla painikkeella:
  2. Avaa ruutu ”Toolbox”
  3. Valitse ensimmäisellä välilehdellä ”Integration Tools” haluamallesi käyttöjärjestelmälle sopiva asennusohjelma

Kun olet noutanut paketin, siirrä se Linux-palvelimen hakemistoon /tmp/. Noudata sen jälkeen käyttöjärjestelmäsi asennusohjeita:

Suorita seuraavat komennot asianmukaisin root-oikeuksin:

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

Toinen komento lisää automaattisesti kaksi riviä tiedostoon /etc/pam.d/sshd, mutta tämä toimenpide voidaan tehdä myös käsin:

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

Suorita seuraavat komennot root-oikeuksin:

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

Toinen komento lisää automaattisesti kaksi riviä tiedostoon /etc/pam.d/sshd, mutta tämä toimenpide voidaan tehdä myös käsin:

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