Ir para o conteúdo

Instalação do agente Linux

O agente Linux é utilizado por CyberElements para limitar os acessos de rede possíveis a partir dos servidores SSH a que os utilizadores acedem (definidos nas políticas ou contratos de acesso).

Pré-requisitos

São necessários alguns pré-requisitos para que o agente funcione corretamente:

  • Sistemas operativos compatíveis: Red Hat 9 e Debian 12
  • Presença do firewall iptables
  • Início de sessão com uma conta diferente de root

Informação

O agente Linux não atua sobre o utilizador root, dado que este dispõe sempre de direitos suficientes para remover qualquer restrição que lhe seja aplicada.

Além disso, como alguns serviços utilizam direitos root, a adição de restrições de rede pode torná-los instáveis.

Funcionamento

O agente Linux divide-se em várias partes:

  • Um serviço systemd denominado cleanroom-filter
  • Um módulo PAM denominado pam_clr_filter
  • Uma política SELinux para Red Hat, que permite ao servidor SSH comunicar com o serviço cleanroom-filter

O funcionamento geral segue esta sequência:

Contexto SaaS

No diagrama abaixo, «Mediation Controller» representa o serviço na nuvem CyberElements gerido pela Systancia. O fluxo de filtragem SSH é arquitetonicamente idêntico em modo SaaS.

sequenceDiagram
    autonumber
    participant MED as Mediation Controller
    participant GW_SSH as Edge Gateway<br/>Gravador SSH
    participant SSH as Destino SSH<br/>Servidor SSH
    participant PAM as Destino SSH<br/>Módulo PAM pam_clr_filter
    participant svc as Destino SSH<br/>Serviço cleanroom-filter

    MED->>GW_SSH: Pedido de abertura de uma<br/>aplicação SSH
    GW_SSH->>+MED: Recuperação das informações de<br/>filtragem para a sessão
    MED->>-GW_SSH: Envio das informações de<br/>filtragem de rede
    GW_SSH->>+SSH: Ligação SSH
    SSH-->-PAM: Criação de uma sessão SSH
    PAM->>+svc: Envio do nome de utilizador
    Note right of svc: Criação de uma cadeia <br/>iptables para o utilizador com o nome clr-LOGIN
    svc->>-PAM: Envio de um token único
    Note over PAM: Adição à sessão do utilizador<br/> da variável de ambiente CLR-ID<br/> que contém o token único
    GW_SSH->>svc: Envio da lista das redes a autorizar
    Note over svc: Criação de uma regra iptables OUTPUT<br/> para redirecionar o tráfego do utilizador para a<br/> cadeia iptables criada anteriormente
    Note over svc: Adição das autorizações à cadeia<br/> iptables criada para o utilizador
    break Fim da sessão SSH
        SSH->>+GW_SSH: Notificação do fim da sessão
        SSH-->svc: Deteção do fim da sessão SSH
        Note over svc: Eliminação da regra iptables<br/> OUTPUT criada para o utilizador
        Note over svc: Eliminação da cadeia iptables<br/> criada para o utilizador
        GW_SSH->>-MED: Notificação do fim da sessão<br/> SSH do utilizador
    end
Hold "Ctrl" to enable pan & zoom
  1. O servidor Mediation Controller envia ao Edge Gateway a informação necessária para abrir uma nova sessão SSH.
  2. O serviço de gravação SSH solicita ao servidor Mediation Controller a informação de filtragem de rede a aplicar à sessão SSH.
  3. O Mediation Controller responde com uma lista de redes autorizadas.
  4. O serviço de gravação SSH estabelece então a ligação ao servidor SSH de destino.
  5. A ligação ao servidor SSH desencadeia a sequência de criação da sessão e, por conseguinte, a passagem pelos módulos PAM atribuídos a sshd.
  6. O módulo PAM pam_clr_filter do agente Linux envia o nome de utilizador ao serviço cleanroom-filter, que cria então uma nova cadeia iptables denominada clr-LOGIN, em que LOGIN é substituído pelo nome de utilizador recebido.
  7. Após criar a cadeia iptables, o serviço cleanroom-filter gera e envia um token aleatório ao módulo PAM pam_clr_filter, que adiciona esse token à variável de ambiente CLR-ID do utilizador.
  8. O serviço de gravação SSH envia, através do executável /usr/local/ipdiva/bin/cleanroom-netfiltersession.py, a lista de redes a autorizar ao serviço cleanroom-filter. Este cria então uma regra iptables OUTPUT para redirecionar todo o tráfego do utilizador, identificado pelo seu UID, para a cadeia iptables criada no passo 6. Todos os fluxos a autorizar ao utilizador são adicionados à cadeia iptables.
  9. Quando é desencadeado o fim da sessão SSH, a informação é enviada ao serviço de gravação SSH do Edge Gateway.
  10. O serviço cleanroom-filter deteta o fim da sessão do utilizador e limpa as regras iptables adicionadas: elimina a diretiva OUTPUT que redireciona o tráfego do utilizador para uma cadeia iptables e elimina a própria cadeia.
  11. Depois de o Edge Gateway ter recebido o fim da sessão SSH, transmite esta informação ao Mediation Controller.

Instalação

Permissões root necessárias

São necessários privilégios root para instalar o agente.

O pacote .deb ou .rpm pode ser transferido a partir da consola de administração:

  1. Aceda ao espaço de trabalho «Configurations» através do botão situado no canto superior esquerdo:
  2. Abra o mosaico «Toolbox»
  3. Selecione o instalador adequado ao sistema operativo desejado no primeiro separador, «Integration Tools»

Depois de obter o pacote, envie-o para o servidor Linux, para o diretório /tmp/. Em seguida, siga as instruções de instalação correspondentes ao seu sistema operativo:

Execute os comandos seguintes com as permissões root adequadas:

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

O segundo comando automatiza a adição de duas linhas ao ficheiro /etc/pam.d/sshd, mas esta operação também pode ser realizada manualmente:

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

Execute os comandos seguintes com permissões 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

O segundo comando automatiza a adição de duas linhas ao ficheiro /etc/pam.d/sshd, mas esta operação também pode ser realizada manualmente:

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