Przejdź do treści

Instalacja agenta dla systemu Linux

Agent Linux jest używany przez CyberElements Bastion, aby ograniczyć możliwe dostępy sieciowe z serwerów SSH, do których użytkownicy uzyskują dostęp (zdefiniowane w politykach dostępu / kontraktach dostępu).

Wymagania wstępne

Aby agent działał prawidłowo, konieczne jest spełnienie kilku wymagań wstępnych:

  • Zgodne systemy operacyjne: Red Hat 9 i Debian 12
  • Obecność zapory iptables
  • Logowanie na konto inne niż root

Informacja

Agent dla systemu Linux nie działa na użytkownika root, ponieważ ten użytkownik zawsze ma wystarczające prawa, aby usunąć każde zastosowane wobec niego ograniczenie.

Ponadto, ponieważ niektóre usługi korzystają z uprawnień root, dodanie ograniczeń sieciowych mogłoby spowodować niestabilność tych usług.

Zasada działania

Agent dla systemu Linux składa się z kilku części:

  • usługa systemd o nazwie cleanroom-filter
  • moduł PAM o nazwie pam_clr_filter
  • zasada SELinux dla systemu Red Hat, pozwalająca serwerowi SSH komunikować się z usługą cleanroom-filter

Ogólny przebieg działania jest następujący:

sequenceDiagram
    autonumber
    participant MED as Mediation Controller
    participant GW_SSH as Edge Gateway<br/>Rejestrator SSH
    participant SSH as Cel SSH<br/>Serwer SSH
    participant PAM as Cel SSH<br/>Moduł PAM pam_clr_filter
    participant svc as Cel SSH<br/>Usługa cleanroom-filter

    MED->>GW_SSH: Żądanie otwarcia<br/>aplikacji SSH
    GW_SSH->>+MED: Pobranie informacji o filtrowaniu<br/>dla sesji
    MED->>-GW_SSH: Wysłanie informacji o<br/>filtrowaniu sieciowym
    GW_SSH->>+SSH: Połączenie SSH
    SSH-->-PAM: Utworzenie sesji SSH
    PAM->>+svc: Wysłanie nazwy użytkownika
    Note right of svc: Utworzenie łańcucha <br/>iptables dla użytkownika o nazwie clr-LOGIN
    svc->>-PAM: Wysłanie unikalnego tokena
    Note over PAM: Dodanie do sesji użytkownika<br/> zmiennej środowiskowej CLR-ID<br/> zawierającej unikalny token
    GW_SSH->>svc: Wysłanie listy sieci do autoryzacji
    Note over svc: Utworzenie reguły iptables OUTPUT<br/> w celu przekierowania ruchu użytkownika do<br/> wcześniej utworzonego łańcucha iptables
    Note over svc: Dodanie autoryzacji do łańcucha<br/> iptables utworzonego dla użytkownika
    break Zakończenie sesji SSH
        SSH->>+GW_SSH: Powiadomienie o zakończeniu sesji
        SSH-->svc: Wykrycie zakończenia sesji SSH
        Note over svc: Usunięcie reguły iptables<br/> OUTPUT utworzonej dla użytkownika
        Note over svc: Usunięcie łańcucha iptables<br/> utworzonego dla użytkownika
        GW_SSH->>-MED: Powiadomienie o zakończeniu<br/> sesji SSH użytkownika
    end
Hold "Ctrl" to enable pan & zoom
  1. Serwer Mediation Controller przesyła do Edge Gateway informacje potrzebne do otwarcia nowej sesji SSH.
  2. Usługa nagrywania SSH pyta serwer Mediation Controller o informacje o filtrowaniu sieciowym, które należy zastosować do sesji SSH.
  3. Mediation Controller odpowiada listą dozwolonych sieci.
  4. Usługa nagrywania SSH ustanawia następnie połączenie z docelowym serwerem SSH.
  5. Połączenie z serwerem SSH uruchamia sekwencję tworzenia sesji, a więc przejście przez moduły PAM przypisane do sshd.
  6. Moduł PAM pam_clr_filter agenta dla systemu Linux przesyła nazwę użytkownika do usługi cleanroom-filter, która tworzy następnie nowy łańcuch iptables o nazwie clr-LOGIN, gdzie LOGIN jest zastępowany otrzymaną nazwą użytkownika.
  7. Po utworzeniu łańcucha iptables usługa cleanroom-filter tworzy losowy token i przesyła go do modułu PAM pam_clr_filter. Ten ostatni dodaje token do zmiennej środowiskowej CLR-ID użytkownika.
  8. Usługa nagrywania SSH przesyła, za pośrednictwem pliku wykonywalnego /usr/local/ipdiva/bin/cleanroom-netfiltersession.py, listę sieci, które mają zostać dozwolone, do usługi cleanroom-filter. Usługa tworzy następnie regułę iptables OUTPUT, aby przekierować cały ruch użytkownika, zidentyfikowanego przez jego UID, do łańcucha iptables utworzonego w kroku 6. Wszystkie przepływy, które mają być dozwolone dla użytkownika, są dodawane do łańcucha iptables.
  9. Gdy zostaje wyzwolone zakończenie sesji SSH, informacja jest przesyłana do usługi nagrywania SSH serwera Edge Gateway.
  10. Usługa cleanroom-filter wykrywa zakończenie sesji użytkownika i porządkuje dodane reguły iptables: usuwa dyrektywę OUTPUT przekierowującą ruch użytkownika do łańcucha iptables oraz usuwa sam łańcuch.
  11. Gdy Edge Gateway otrzyma informację o zakończeniu sesji SSH, przekazuje ją do Mediation Controller.

Instalacja

Wymagane uprawnienia root

Do instalacji agenta wymagane są uprawnienia root.

Pakiet .deb lub .rpm można pobrać z konsoli administracyjnej:

  1. Wejdź do obszaru roboczego „Configurations” za pomocą przycisku znajdującego się w lewym górnym rogu:
  2. Otwórz kafelek „Toolbox”
  3. Na pierwszej karcie „Integration Tools” wybierz instalator odpowiedni dla wybranego systemu operacyjnego

Po pobraniu pakietu przenieś go na serwer z systemem Linux, do katalogu /tmp/. Następnie wykonaj instrukcje instalacji właściwe dla Twojego systemu operacyjnego:

Wykonaj poniższe polecenia z odpowiednimi uprawnieniami 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

Drugie polecenie automatycznie dodaje dwie linie do pliku /etc/pam.d/sshd, ale tę operację można również wykonać ręcznie:

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

Wykonaj poniższe polecenia z uprawnieniami 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

Drugie polecenie automatycznie dodaje dwie linie do pliku /etc/pam.d/sshd, ale tę operację można również wykonać ręcznie:

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