Към съдържанието

Инсталиране на агента за Linux

Агентът за Linux се използва от CyberElements за ограничаване на възможния мрежов достъп от SSH сървърите, до които потребителите имат достъп (определени в политиките за достъп / договорите).

Предварителни изисквания

За правилната работа на агента са необходими няколко предварителни изисквания:

  • Съвместими операционни системи: Red Hat 9 и Debian 12
  • Наличие на защитната стена iptables
  • Влизане с акаунт, различен от root

Информация

Агентът за Linux не действа върху потребителя root, тъй като този потребител винаги има достатъчно права, за да премахне всички ограничения, които биха му били наложени.

Освен това, тъй като някои услуги използват правата на root, добавянето на мрежови ограничения може да направи тези услуги нестабилни.

Принцип на действие

Агентът за Linux се състои от няколко части:

  • услуга systemd с име cleanroom-filter
  • модул PAM с име pam_clr_filter
  • политика SELinux за Red Hat, която позволява на SSH сървъра да комуникира с услугата cleanroom-filter

Общото действие следва тази последователност:

Контекст SaaS

На диаграмата по-долу „Mediation Controller“ представлява облачната услуга CyberElements, управлявана от CyberElements. Потокът на филтриране на SSH е архитектурно идентичен в режим SaaS.

sequenceDiagram
    autonumber
    participant MED as Mediation Controller
    participant GW_SSH as Edge Gateway<br/>SSH записващо устройство
    participant SSH as SSH цел<br/>SSH сървър
    participant PAM as SSH цел<br/>PAM модул pam_clr_filter
    participant svc as SSH цел<br/>услуга cleanroom-filter

    MED->>GW_SSH: Заявка за отваряне на<br/>SSH приложение
    GW_SSH->>+MED: Извличане на информация за филтриране<br/>за сесията
    MED->>-GW_SSH: Изпращане на информация<br/>за мрежово филтриране
    GW_SSH->>+SSH: SSH връзка
    SSH-->-PAM: Създаване на SSH сесия
    PAM->>+svc: Изпращане на потребителското име
    Note right of svc: Създаване на iptables <br/>верига clr-LOGIN за потребителя
    svc->>-PAM: Изпращане на уникален маркер
    Note over PAM: Добавяне на променливата на средата CLR-ID<br/> с уникалния маркер<br/> към сесията на потребителя
    GW_SSH->>svc: Изпращане на списъка с мрежи за разрешаване
    Note over svc: Създаване на правило iptables OUTPUT<br/> за пренасочване на трафика на потребителя към iptables<br/> веригата, създадена преди това
    Note over svc: Добавяне на разрешения към iptables<br/> веригата, създадена за потребителя
    break Край на SSH сесията
        SSH->>+GW_SSH: Известие за края на сесията
        SSH-->svc: Откриване на края на SSH сесията
        Note over svc: Изтриване на правилото iptables OUTPUT,<br/> създадено за потребителя
        Note over svc: Изтриване на iptables веригата,<br/> създадена за потребителя
        GW_SSH->>-MED: Известие за края на SSH сесията<br/> на потребителя
    end
Hold "Ctrl" to enable pan & zoom
  1. Сървърът Mediation Controller изпраща информация до Edge Gateway за отваряне на нова сесия SSH.
  2. Услугата за записване на SSH пита сървъра Mediation Controller за информацията за мрежово филтриране, която да се приложи към сесията SSH.
  3. Mediation Controller отговаря със списък на разрешените мрежи.
  4. След това услугата за записване на SSH установява връзката с целевия SSH сървър.
  5. Свързването към SSH сървъра задейства последователността за създаване на сесия и следователно преминаването през модулите PAM, присвоени на sshd.
  6. Модулът PAM pam_clr_filter на агента за Linux изпраща потребителското име до услугата cleanroom-filter, която след това създава нова верига iptables с име clr-LOGIN, където LOGIN се заменя с полученото потребителско име.
  7. След като създаде веригата iptables, услугата cleanroom-filter създава случаен маркер и го изпраща до модула PAM pam_clr_filter. Той добавя този маркер в променливата на средата CLR-ID на потребителя.
  8. Чрез изпълнимия файл /usr/local/ipdiva/bin/cleanroom-netfiltersession.py услугата за записване на SSH изпраща до услугата cleanroom-filter списъка на мрежите, които трябва да бъдат разрешени. След това услугата създава правило OUTPUT на iptables, за да пренасочи целия трафик на потребителя, идентифициран чрез неговия UID, към веригата iptables, създадена в стъпка 6. Всички потоци, които трябва да бъдат разрешени за потребителя, се добавят към веригата iptables.
  9. Когато бъде задействан краят на сесията SSH, информацията се изпраща до услугата за записване на SSH на Edge Gateway.
  10. Услугата cleanroom-filter открива края на сесията на потребителя и почиства добавените правила на iptables: тя изтрива директивата OUTPUT, която пренасочва трафика на потребителя към верига iptables, и изтрива самата верига.
  11. След като Edge Gateway получи края на сесията SSH, той препраща тази информация до Mediation Controller.

Инсталиране

Необходими разрешения на root

За инсталирането на агента са необходими привилегии на root.

Пакетът .deb или .rpm може да бъде изтеглен от административната конзола:

  1. Отворете работното пространство „Configurations“ с бутона в горния ляв ъгъл:
  2. Отворете плочката „Toolbox“
  3. Изберете инсталационната програма, подходяща за желаната операционна система, в първия раздел „Integration Tools“

След като изтеглите пакета, прехвърлете го на сървъра с Linux в директорията /tmp/. След това следвайте инструкциите за инсталиране за вашата операционна система:

Изпълнете следните команди с необходимите разрешения на 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

Втората команда автоматизира добавянето на два реда във файла /etc/pam.d/sshd, но тази операция може да се извърши и ръчно:

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

Изпълнете следните команди с разрешения на 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

Втората команда автоматизира добавянето на два реда във файла /etc/pam.d/sshd, но тази операция може да се извърши и ръчно:

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