Ir para o conteúdo

Instalação e utilização do agente de gravação para Windows

  • Instalação


    Instalação e implementação do agente de gravação para Windows.

    Instalar

  • Configuração


    Configurar o agente de gravação para Windows para que funcione com as aplicações RDP e HTML5 RDP e/ou com o acesso direto.

    Configurar

O agente de gravação do Windows é utilizado por CyberElements para adicionar novas funcionalidades às sessões RDP:

  • Possibilidade de filtrar os fluxos TCP e UDP acessíveis ao utilizador
  • Possibilidade de desencadear a gravação da sessão de qualquer utilizador que se ligue ao servidor sem passar pelo portal de utilizador nem pelo cliente Desktop (funcionalidade direct access)

Além disso, durante as sessões dos utilizadores são capturados eventos adicionais:

  • Abertura de janelas
  • Fecho de janelas
  • Início de programas
  • Fecho de programas
  • Conteúdo da área de transferência
  • Atividade do utilizador

Pré-requisitos

Compatibilidade do cliente

Para saber se o agente é compatível com os diferentes sistemas operativos Microsoft Windows, consulte a matriz de compatibilidade.

O agente de gravação exige alguns pré-requisitos para funcionar corretamente. Alguns dizem apenas respeito à funcionalidade de gravação com agente das aplicações RDP e HTML5 RDP, outros ao acesso direto com agente.

Pré-requisitos gerais

O agente de gravação devolve a gravação da sessão do utilizador a CyberElements ligando-se ao Edge Gateway na porta TCP 8443. Para isso, é necessário que o fluxo de rede entre as duas máquinas esteja aberto.

Para devolver a gravação ao Edge Gateway de forma segura, o agente de gravação estabelece com ele uma ligação segura através de TLS. O TLS baseia-se na utilização de certificados e devem ser cumpridas as restrições seguintes para que a ligação seja considerada fiável e segura:

  • O certificado do servidor, neste caso o Edge Gateway, não deve estar expirado (data máxima de validade).
  • O certificado do servidor, neste caso o Edge Gateway, deve ser emitido por uma autoridade de certificação reconhecida como de confiança pela máquina onde o agente de gravação está instalado.

    Informação adicional

    O servidor onde o agente de gravação está instalado deve ter, no mínimo, a autoridade de certificação (CA) raiz do certificado do servidor de gravação no seu armazém local de autoridades de certificação de confiança.

    Por conseguinte, é necessário:

    1. Recuperar a CA raiz do certificado do serviço de gravação no Edge Gateway.
    2. Carregar essa CA no servidor onde o agente de gravação está instalado.
    3. Instalar a CA no armazém de certificados «Trusted Root Certification Authorities» da máquina local.
    Exemplo com PowerShell

    Um certificado em formato .cer pode ser facilmente importado através do PowerShell.
    Para isso, abra um terminal PowerShell como administrador da máquina e execute o comando seguinte:

    1
    Import-Certificate -FilePath "<PAHT_TO_CERT>" -CertStoreLocation "Cert:\LocalMachine\Root"
    
    Substitua <PATH_TO_CERT> pelo caminho do ficheiro do certificado.

    Exemplo com PowerShell para o certificado Systancia, sem enviar ficheiros

    Este exemplo consiste em instalar a CA raiz da Systancia, que é utilizada por predefinição em CyberElements.

    Também é possível importar o certificado sem ter de enviar ou transferir o ficheiro para a máquina onde o agente de gravação está instalado.
    Para isso, abra um terminal PowerShell como administrador da máquina e execute os comandos seguintes:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    # Systancia Root certificate
    $base64Cert = "MIIFIDCCBAigAwIBAgIBADANBgkqhkiG9w0BAQUFADCBjTELMAkGA1UEBhMCRlIx
    FDASBgNVBAoTC0lQZGl2YSBSb290MR0wGwYDVQQLExRJUGRpdmEgU2VjdXJpdHkg
    RGVwdDEqMCgGA1UEAxMhSVBkaXZhIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5
    MR0wGwYJKoZIhvcNAQkBFg5wa2lAaXBkaXZhLmNvbTAeFw0wNTA4MjIxNTAwMzla
    Fw0zMDA4MjIxNTAwMzlaMIGNMQswCQYDVQQGEwJGUjEUMBIGA1UEChMLSVBkaXZh
    IFJvb3QxHTAbBgNVBAsTFElQZGl2YSBTZWN1cml0eSBEZXB0MSowKAYDVQQDEyFJ
    UGRpdmEgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxHTAbBgkqhkiG9w0BCQEW
    DnBraUBpcGRpdmEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
    ua59tx+RkIPZbGaSwkV0w5fuPBpY3sbLTk/eR2uN7j9zMu0pq38LfibCVsNGlifh
    GfT5CEbrNL7KvlEVY/It1QluYxNgknlcBP1roJG/xHNcUNmbvCFYLy9N3Nd0J/gC
    Vd8tdB4exqyKEoNuqX18rLpSJJOUZdQCeGdF9r+w6vmHdRMeVS44qIiBPv9Bxzgf
    GXBxAlSqfuDDJ3eZEMsWF/kJrbm4Uhav2ACl5qjHgSSTKMoGoEWOJNkB7Mq/khxc
    TnixIpM2s1rpEfhIetPo4BHsyKv7wqWrS6ouwu5AbzT5t3UqaN77CLqcZJGQ3vC0
    IGKBuEcwigd7W6qkX1/XMwIDAQABo4IBhzCCAYMwDwYDVR0TAQH/BAUwAwEB/zAd
    BgNVHQ4EFgQU+lu7XBGohR2DKD+D+abZEODRHjkwgboGA1UdIwSBsjCBr4AU+lu7
    XBGohR2DKD+D+abZEODRHjmhgZOkgZAwgY0xCzAJBgNVBAYTAkZSMRQwEgYDVQQK
    EwtJUGRpdmEgUm9vdDEdMBsGA1UECxMUSVBkaXZhIFNlY3VyaXR5IERlcHQxKjAo
    BgNVBAMTIUlQZGl2YSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eTEdMBsGCSqG
    SIb3DQEJARYOcGtpQGlwZGl2YS5jb22CAQAwCwYDVR0PBAQDAgEGMBkGA1UdEQQS
    MBCBDnBraUBpcGRpdmEuY29tMBkGA1UdEgQSMBCBDnBraUBpcGRpdmEuY29tMBEG
    CWCGSAGG+EIBAQQEAwIABzA+BglghkgBhvhCAQ0EMRYvSVBkaXZhIFJvb3QgQ2Vy
    dGlmaWNhdGlvbiBBdXRob3JpdHkgQ2VydGlmaWNhdGUwDQYJKoZIhvcNAQEFBQAD
    ggEBACaAgBQK7TATXieb9OdKm+l7/GpePo8f2bRKnkqeRS+HXBKYkvqVJdbJnhJm
    YPOdmhr9ATzt+488tQREAGzqPCp5eiVExPgvomNeG77X57KqbgCA1F7zGJqjP1FL
    771FIWvFXp80ReM/zhcM+MY3sa5LADgOEl5NhoMNHT8AhLKwZ81j5nuwxyG9ICCN
    5GjwgsnK/agmum4+RKeybIWuC/JTsSnu5OImXsmrlUiakp2l+VsZ1rRRNRNUlSbg
    Q3T8kj5ajB0lv2I0kj4fN9wDxzdHEn7nEAmv0t6Y5Te0g/VK3VWhuqeLStaahgip
    hmOVxbu5Ijfug5/3Eemep34NsYk="
    
    # Convert the certificate and store it in memory
    $certBytes = [Convert]::FromBase64String($base64Cert)
    
    # Create a certificate object
    $cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
    $cert.Import($certBytes)
    
    # Open the trusted root certificate store on the local machine and add the Systancia root certificate
    $store = New-Object System.Security.Cryptography.X509Certificates.X509Store("Root", "LocalMachine")
    $store.Open([System.Security.Cryptography.X509Certificates.OpenFlags]::ReadWrite)
    $store.Add($cert)
    $store.Close()
    

    Para utilizar este método com outra CA, altere o valor da variável base64Cert para o certificado da sua escolha codificado em base 64.

  • O certificado do servidor, neste caso o Edge Gateway, não deve estar revogado.

  • A máquina onde o agente de gravação está instalado deve poder contactar o servidor, neste caso o Edge Gateway, com um nome DNS ou um endereço IP coberto pelo certificado do servidor através do seu Common Name (CN).

Pré-requisitos específicos das aplicações RDP com agente utilizadas num posto de utilizador macOS ou Ubuntu

Atenção

Os pré-requisitos seguintes só são necessários se o utilizador iniciar uma aplicação RDP com agente e o seu posto não for Windows (macOS ou Ubuntu).

Se os utilizadores de CyberElements tiverem postos exclusivamente Windows ou, na sua falta, utilizarem exclusivamente aplicações HTML5 RDP, os pré-requisitos seguintes podem ser ignorados.

As chaves de registo seguintes são necessárias no servidor de destino onde o agente de gravação está implementado.

Em primeiro lugar, a primeira chave desativa a lista de programas de arranque autorizados (documento da Microsoft). Por predefinição, uma máquina Windows apenas autoriza explorer.exe como programa de arranque.

1
2
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList]
"fDisabledAllowList"=dword:00000001

Se a máquina não for um servidor RDS, recomenda-se sempre aplicar a chave de registo seguinte para permitir que o agente de gravação abra como programa de arranque:

1
2
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server]
"HonorLegacySettings"=dword:00000001

Requisitos específicos do acesso direto

Funcionalidade de acesso direto

A funcionalidade de acesso direto permite desencadear a gravação da sessão do utilizador nos acessos RDP ou de consola (ligação física à máquina ou através do modo consola do hipervisor) que não passam diretamente por CyberElements.

Se o utilizador tiver permissão para aceder ao servidor, a sua sessão será gravada. Se não for o caso, por predefinição o utilizador será desligado.

Para que o agente de gravação funcione em modo de acesso direto, é necessário um certificado x509. Esse certificado deve cumprir os requisitos seguintes:

  • O certificado deve continuar válido (período de validade não expirado).
  • O certificado deve ser do tipo (campo de utilização avançada de chave) client authentication (OID: 1.3.6.1.5.5.7.3.2).
  • O certificado não deve estar revogado.
  • As restrições decorrentes do nível de segurança 2 do OpenSSL implicam que:
    • O certificado deve ter uma chave privada de, no mínimo, 2048 bits com as cifras RSA, DSA e DH; nas chaves de curva elíptica (ECC), devem ter no mínimo 224 bits.
    • A assinatura do certificado não deve ser MD5 nem SHA-1 (é preferível SHA-512).
  • O servidor de gravação utilizará o campo Common Name (CN) para identificar o certificado e, por conseguinte, a máquina onde é desencadeada uma gravação direta. Este campo deve estar preenchido.

Utilização do agente de gravação com as aplicações RDP e HTML5 RDP

Ativar a utilização do agente de gravação

Se o agente de gravação estiver corretamente instalado e configurado, a ativação da sua utilização faz-se ao nível da aplicação RDP ou HTML5 RDP em questão:

Três parâmetros intervêm no mecanismo:

Without agent mode
Esta opção deve permanecer não selecionada para que o agente de gravação funcione.
Disconnect session if the recorder is not working
Ativa ou desativa uma medida de segurança quando a gravação da sessão falha por diversos motivos. Se a gravação não puder ser realizada, a sessão RDP ou HTML5 RDP do utilizador será encerrada. Recomendamos ativar esta definição para evitar ligações de utilizador sem gravação (por exemplo, em caso de falha do agente de gravação).
Time before disconnection
Se a opção anterior estiver ativada, esta opção permite definir o tempo, em segundos, antes de a desligação ser efetuada. O valor predefinido é de 30 segundos, mas pode ser reduzido para aumentar a capacidade de reação, ou aumentado se, por exemplo, se souber que as sessões dos utilizadores são longas.

Limitar os movimentos laterais

A limitação dos movimentos laterais é uma funcionalidade que restringe as ligações de rede da sessão do utilizador. Por predefinição, esta funcionalidade bloqueia todo o tráfego TCP/UDP no interior da sessão do utilizador, mas os administradores podem abrir diferentes fluxos de acesso.

As restrições configuram-se na access policy e podem, por isso, variar em função do utilizador e ter definições diferentes para um mesmo utilizador (multiplicando as políticas de acesso que lhe são atribuídas). Um utilizador com várias políticas de acesso para a mesma aplicação verá aplicarem-se as restrições de rede do acesso mais permissivo.

Assim que uma aplicação RDP ou HTML5 RDP com agente é autorizada numa política de acesso, o separador Network connections fica disponível. A partir dele é possível ativar a filtragem e indicar as redes autorizadas para o utilizador:

Informação

Qualquer alteração destas definições só será aplicada aos utilizadores na utilização seguinte da aplicação RDP ou HTML5 RDP em questão.

Configurar as gravações dos acessos diretos com agente

Declarar os servidores preparados para o acesso direto com agente

Para declarar um servidor que deve funcionar em modo de acesso direto com agente, deve primeiro abrir o módulo Machines management:

Clique em seguida no botão para adicionar um novo servidor. Aparecerá uma nova janela para configurar o novo servidor:

Name
Nome da máquina tal como é apresentado na consola CyberElements.
Notification text
Mensagem de notificação que os utilizadores receberão ao ligarem-se ao servidor.
Record sessions as videos
Ativa ou desativa a gravação da sessão em vídeo. Se estiver desativada, apenas os eventos da sessão serão capturados e registados.
Check video integrity at playback
Ao criar a gravação de vídeo, é calculado e armazenado um hash (SHA-256) do ficheiro de vídeo. Quando os administradores consultam a gravação, é verificado se o hash não foi modificado. Se tiver sido modificado, é enviada uma mensagem de alerta ao administrador, pois a gravação de vídeo terá provavelmente sido alterada (por exemplo, substituída ou com sequências cortadas).
Allow manual removal of archives
Autoriza ou recusa aos administradores a possibilidade de eliminar as gravações de vídeo.

Informação

As gravações produzidas conservam as definições em vigor no momento da gravação. Alterar esta definição só afetará as novas gravações.
Delete archives automatically
Configuração da eliminação automática das gravações após um número determinado de dias.

Informação

As gravações produzidas conservam as definições em vigor no momento da gravação. Alterar esta definição só afetará as novas gravações.
Use agent mode
Opção que deve estar ativada para que o servidor disponha do mecanismo de acesso direto com agente ativo.
Host (CN of the certificate)
Indicação do CN do certificado utilizado pelo agente de gravação para se autenticar junto do Edge Gateway. Corresponde à configuração do certificado de máquina.
Use no agent
Se um parâmetro não for útil para o modo de funcionamento pretendido, pode ser deixado não selecionado.

Configurar os direitos de acesso direto com agente

A configuração dos direitos de acesso direto com agente é semelhante à das políticas de acesso das aplicações. Os novos direitos são declarados, e os existentes alterados, a partir de Direct recording configuration:

Pode adicionar uma nova configuração clicando no botão .

Os vários separadores de definições são semelhantes aos das políticas de acesso das aplicações, salvo o separador dos grupos, que permite adicionar um grupo manualmente:

Depois de clicar no botão de adição manual, aparecerá uma nova janela para indicar o nome do grupo e o seu domínio:

Sugestão

Esta funcionalidade é particularmente útil se quiser adicionar um grupo local ou um grupo situado numa OU diferente da definida na configuração do domínio LDAP.

Os outros separadores são:

  • Sites: situa a configuração num ou vários sites e, por extensão, permite ao agente de gravação ligar-se a um ou vários Edge Gateway associados aos sites autorizados.
  • Machines: adiciona os servidores RDP declarados no capítulo anterior.
  • Alerts: associa alertas à configuração.
  • Network connections: limita os movimentos laterais dos utilizadores durante as suas sessões, com um funcionamento idêntico à limitação dos movimentos laterais das aplicações RDP e HTML5 RDP.

Logs do agente de gravação

Ativar os logs do agente de gravação

Atenção!

A ativação dos logs exige reiniciar o serviço do agente de gravação, o que interromperá as gravações de sessão em curso no servidor.
Em função da configuração da chave LogOffOnFailure, o utilizador será desligado ou permanecerá ligado.

Para ativar os logs do agente de gravação, deve realizar os passos seguintes:

  1. Crie um diretório com o nome Log no diretório de instalação do agente (por predefinição, C:\Program Files (x86)\Systancia\cyberelements).

  2. Reinicie o serviço CleanroomAgent, por exemplo com o comando de PowerShell seguinte, executado como administrador:

    1
    Restart-Service -Name 'CleanroomAgent'
    

Cada vez que o serviço do agente de gravação é iniciado, é gerado um novo ficheiro de log no diretório Log criado no passo 1.

Conteúdo dos logs do agente de gravação

Os logs gerados pelo agente de gravação têm o seguinte aspeto:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
16-06-25 14:49:02.604 [6364] TRACE Console.infoSystem System directory: C:\Windows\system32
16-06-25 14:49:02.604 [6364] TRACE Console.infoSystem Windows directory: C:\Windows
16-06-25 14:49:02.604 [6364] TRACE Console.infoSystem Windows temporary directory: C:\Windows\TEMP\
16-06-25 14:49:02.605 [6364] TRACE Console.infoSystem User profile directory: C:\Windows\system32\config\systemprofile
16-06-25 14:49:02.605 [6364] TRACE Console.infoSystem Current directory: C:\Windows\system32
16-06-25 14:49:02.605 [6364] TRACE Console.infoSystem Application Data directory: C:\Windows\system32\config\systemprofile\AppData\Roaming
16-06-25 14:49:02.606 [6364] TRACE Console.infoSystem Command line: C:\Program Files (x86)\Systancia\Safe\IpDivaCareSupervisor.exe
16-06-25 14:49:02.606 [6364] TRACE Console.infoSystem Current exe directory: C:/Program Files (x86)/Systancia/Safe/
16-06-25 14:49:02.606 [6364] TRACE Console.infoSystem Root directory: C:/Program Files (x86)/Systancia/
16-06-25 14:49:02.607 [6364] TRACE Console.infoSystem Microsoft Windows NT family
16-06-25 14:49:02.607 [6364] TRACE Console.infoSystem Service Pack 0.0
16-06-25 14:49:02.607 [6364] TRACE Console.infoSystem OEM ID: 0
16-06-25 14:49:02.607 [6364] TRACE Console.infoSystem Number of Processors: 8
16-06-25 14:49:02.607 [6364] TRACE Console.infoSystem Page size: 4096
16-06-25 14:49:02.607 [6364] TRACE Console.infoSystem Processor Type: 586
16-06-25 14:49:02.607 [6364] TRACE Console.infoSystem Active processor mask: 255
16-06-25 14:49:02.608 [6364] TRACE Console.infoSystem Username: Système
16-06-25 14:49:02.608 [6364] TRACE Console.infoSystem -----------------------------------
16-06-25 14:49:02.609 [4620] TRACE main.run Loaded 1 gateways from file C:/Program Files (x86)/Systancia/Safe/gateways.xml
16-06-25 14:49:02.610 [4620] ERROR main.run Error loading public keys. boost::filesystem::directory_iterator::construct: Le fichier spécifié est introuvable [system:2]: "C:/Program Files (x86)/Systancia/pubkeys"
16-06-25 14:49:02.610 [4620] TRACE main.wtssessionchange Copying C:/Program Files (x86)/Systancia/Safe/CareInit.exe to C:/Windows/system32/CareInit.exe
16-06-25 14:49:12.298 [6364] TRACE main.wtssessionchange Session logon or connect :6 event:3
16-06-25 14:49:12.299 [6364] TRACE main.wtssessionchange
16-06-25 14:49:13.301 [6364] TRACE main.wtssessionchange Session logon or connect :6 event:5
16-06-25 14:49:13.303 [6364] TRACE main.wtssessionchange cyberelements_user
16-06-25 14:49:13.319 [6364] TRACE wtssessionchange.wtssessionchange 17 bytes written
16-06-25 14:49:13.319 [6364] TRACE wtssessionchange.wtssessionchange Opened VC clr
16-06-25 14:49:13.371 [6364] TRACE main.wtssessionchange Recording server retrieved via VC clr:my-edge-gateway.domain.local
16-06-25 14:49:13.371 [6364] TRACE main.wtssessionchange care password :K5efPBwVM2cIU0LaYQucZp0FV19nRIE5f5VYoBZz6EqlZOxNGM
16-06-25 14:49:13.371 [6364] TRACE SelectConfig.autoconf poll() is not supported on this platform, using select()
16-06-25 14:49:13.418 [6364] TRACE main.getNetFilterRulesInformation Filter not enabled
16-06-25 14:49:13.419 [6364] TRACE main.getNetFilterRulesInformation FALSE
16-06-25 14:49:13.419 [6364] ERROR main.getNetFilterRulesInformation No public key configured. Cannot verify net filtering rules.
16-06-25 14:49:13.419 [6364] TRACE Socket.incrCounters 0 UDP, 0 TCP, 1 Objs
16-06-25 14:49:13.421 [6364] TRACE main.createRecorderProcess launching whith password :K5efPBwVM2cIU0LaYQucZp0FV19nRIE5f5VYoBZz6EqlZOxNGM
16-06-25 14:49:26.664 [4620] TRACE main.createRecorderProcess Calling logoff.exe 6
16-06-25 14:49:26.990 [6364] TRACE main.wtssessionchange User DOMAIN\cyberelements_user has no other session. Dropping network filter rules
16-06-25 14:49:26.990 [6364] TRACE main.wtssessionchange Session logoff or disconnect :6 event:6
16-06-25 14:49:27.331 [6364] TRACE main.wtssessionchange Session logoff or disconnect :6 event:4
16-06-25 14:49:38.964 [6364] TRACE main.wtssessionchange Session logon or connect :7 event:3
16-06-25 14:49:38.965 [6364] TRACE main.wtssessionchange
16-06-25 14:49:40.75 [6364] TRACE main.wtssessionchange Session logon or connect :7 event:5
16-06-25 14:49:40.76 [6364] TRACE main.wtssessionchange cyberelements_user
16-06-25 14:49:40.178 [6364] TRACE wtssessionchange.wtssessionchange WTSVirtualChannelOpenEx failure.31 Not a Cleanroom session, or the client has no support for the clr virtual channel
16-06-25 14:49:40.179 [6364] TRACE main.wtssessionchange prog :
16-06-25 14:49:40.185 [6364] TRACE main.createRecorderProcess User groups :DOMAIN\Utilisateurs du domaine domain.local\Utilisateurs du domaine \Tout le monde domain.local\Tout le monde BUILTIN\Utilisateurs BUILTIN\Utilisateurs du Bureau à distance AUTORITE NT\REMOTE INTERACTIVE LOGON AUTORITE NT\INTERACTIF AUTORITE NT\Utilisateurs authentifiés domain.local\LOCAL DOMAIN\cyberelements_users domain.local\cyberelements_users 
16-06-25 14:49:40.186 [6364] TRACE getDirectRecordInformation.getDirectRecordInformation gateways: my-edge-gateway.domain.local
16-06-25 14:49:40.199 [6364] TRACE SecChannelClient.ClientCreateCredentials looking for a certificate with name containing:my-rds-server
16-06-25 14:49:40.199 [6364] TRACE SecChannelClient.ClientCreateCredentials looking for a certificate with name containing:my-rds-server.domain.local in the local machine store
16-06-25 14:49:40.201 [6364] TRACE SecChannelClient.ClientCreateCredentials certificate subject:C=FR, S=Grand-Est, L=Sausheim, O=Systancia, CN=my-rds-server.domain.local
16-06-25 14:49:40.201 [6364] TRACE SecChannelClient.ClientCreateCredentials certificate issuer:C=FR, S=Grand-Est, L=Sausheim, O=Systancia, CN=SUB-CA
16-06-25 14:49:40.404 [6364] TRACE Socket.incrCounters 0 UDP, 0 TCP, 1 Objs
16-06-25 14:49:40.404 [6364] TRACE main.createRecorderProcess Net filter enabled
16-06-25 14:49:40.426 [3948] TRACE CleanroomNetFilter.addRule User DOMAIN\cyberelements_user Remote address: 168427818 (10.10.1.42) Remote port: 443 Protocol condition: TCP
16-06-25 14:49:40.427 [3948] TRACE CleanroomNetFilter.addRule User DOMAIN\cyberelements_user Remote address: 168432641 (10.10.20.1) Remote port: 53 Protocol condition: UDP
16-06-25 14:49:40.428 [6364] TRACE CleanroomNetFilter.addRule User DOMAIN\cyberelements_user Application: C:/Program Files (x86)/Systancia/Safe/IpdivaCareRecorder.exe Remote address: 168427791 (10.10.1.15) Remote port: 8443 Protocol condition: TCP
16-06-25 14:49:40.430 [6364] TRACE main.createRecorderProcess launching whith password :DIRECT_33fRBYAwVDEKs8n3bGFwlIgKYd39C2Ubcl4pkLLC0YAouL4Gml
16-06-25 14:49:48.690 [4620] TRACE main.createRecorderProcess Calling logoff.exe 7
16-06-25 14:49:50.13 [6364] TRACE main.wtssessionchange User DOMAIN\cyberelements_user has no other session. Dropping network filter rules
16-06-25 14:49:50.13 [6364] TRACE main.wtssessionchange Session logoff or disconnect :7 event:6
16-06-25 14:49:50.379 [6364] TRACE main.wtssessionchange Session logoff or disconnect :7 event:4
16-06-25 14:49:54.658 [6364] TRACE main.wtssessionchange Removing C:/Windows/system32/CareInit.exe
Inicialização do agente de gravação (linhas 1-21)

Quando o agente de gravação é inicializado (linhas 1-18), são registadas várias informações sobre o sistema.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
16-06-25 14:49:02.604 [6364] TRACE Console.infoSystem System directory: C:\Windows\system32
16-06-25 14:49:02.604 [6364] TRACE Console.infoSystem Windows directory: C:\Windows
16-06-25 14:49:02.604 [6364] TRACE Console.infoSystem Windows temporary directory: C:\Windows\TEMP\
16-06-25 14:49:02.605 [6364] TRACE Console.infoSystem User profile directory: C:\Windows\system32\config\systemprofile
16-06-25 14:49:02.605 [6364] TRACE Console.infoSystem Current directory: C:\Windows\system32
16-06-25 14:49:02.605 [6364] TRACE Console.infoSystem Application Data directory: C:\Windows\system32\config\systemprofile\AppData\Roaming
16-06-25 14:49:02.606 [6364] TRACE Console.infoSystem Command line: C:\Program Files (x86)\Systancia\Safe\IpDivaCareSupervisor.exe
16-06-25 14:49:02.606 [6364] TRACE Console.infoSystem Current exe directory: C:/Program Files (x86)/Systancia/Safe/
16-06-25 14:49:02.606 [6364] TRACE Console.infoSystem Root directory: C:/Program Files (x86)/Systancia/
16-06-25 14:49:02.607 [6364] TRACE Console.infoSystem Microsoft Windows NT family
16-06-25 14:49:02.607 [6364] TRACE Console.infoSystem Service Pack 0.0
16-06-25 14:49:02.607 [6364] TRACE Console.infoSystem OEM ID: 0
16-06-25 14:49:02.607 [6364] TRACE Console.infoSystem Number of Processors: 8
16-06-25 14:49:02.607 [6364] TRACE Console.infoSystem Page size: 4096
16-06-25 14:49:02.607 [6364] TRACE Console.infoSystem Processor Type: 586
16-06-25 14:49:02.607 [6364] TRACE Console.infoSystem Active processor mask: 255
16-06-25 14:49:02.608 [6364] TRACE Console.infoSystem Username: Système
16-06-25 14:49:02.608 [6364] TRACE Console.infoSystem -----------------------------------

A linha 19 indica o número de Edge Gateway encontrados no ficheiro gateways.xml para o funcionamento em modo direto.

19
16-06-25 14:49:02.609 [4620] TRACE main.run Loaded 1 gateways from file C:/Program Files (x86)/Systancia/Safe/gateways.xml

A linha 20 assinala um problema de carregamento de chaves num diretório inexistente. Trata-se de uma função antiga que não afeta o funcionamento geral do agente. Este log de erro pode, por conseguinte, ser ignorado.

20
16-06-25 14:49:02.610 [4620] ERROR main.run Error loading public keys. boost::filesystem::directory_iterator::construct: Le fichier spécifié est introuvable [system:2]: "C:/Program Files (x86)/Systancia/pubkeys"

A linha 21 indica a ação de cópia do executável CareInit.exe para System32, a fim de cobrir os casos em que uma aplicação RDP com agente é iniciada a partir de uma máquina macOS ou Ubuntu.
Nessa condição, a ligação ao servidor pede a execução de CareInit.exe como programa de arranque.

21
16-06-25 14:49:02.610 [4620] TRACE main.wtssessionchange Copying C:/Program Files (x86)/Systancia/Safe/CareInit.exe to C:/Windows/system32/CareInit.exe
Ligação de uma aplicação HTML5 RDP ou RDP com agente (linhas 22-39)

Quando é detetada uma nova sessão RDP, são escritos os logs seguintes, que indicam a deteção de uma nova sessão RDP e registam o nome do utilizador que se ligou:

22
23
24
25
16-06-25 14:49:12.298 [6364] TRACE main.wtssessionchange Session logon or connect :6 event:3
16-06-25 14:49:12.299 [6364] TRACE main.wtssessionchange
16-06-25 14:49:13.301 [6364] TRACE main.wtssessionchange Session logon or connect :6 event:5
16-06-25 14:49:13.303 [6364] TRACE main.wtssessionchange cyberelements_user

Nos logs anteriores, foi o utilizador cyberelements_user que se ligou por RDP.

Ao iniciar uma aplicação HTML5 RDP ou RDP com agente, é criado um canal virtual RDP específico, a fim de enviar ao agente de gravação o endereço de ligação do Edge Gateway e a palavra-passe única de ligação ao serviço de gravação do Edge Gateway.
Isto indica duas coisas:

  1. O agente de gravação detetou que se trata de uma ligação RDP iniciada por CyberElements, pelo que não deve tratar a sessão como um acesso direto.
  2. O agente de gravação conseguiu obter o endereço do Edge Gateway ao qual deve enviar as gravações de vídeo e os eventos.

Esta informação correspondia às linhas 27-29, nas quais, no exemplo, o agente de gravação obteve o endereço de ligação do Edge Gateway (my-edge-gateway.domain.local) e uma palavra-passe de utilização única (K5efPBwVM2cIU0LaYQucZp0FV19nRIE5f5VYoBZz6EqlZOxNGM):

29
30
31
16-06-25 14:49:13.319 [6364] TRACE wtssessionchange.wtssessionchange Opened VC clr
16-06-25 14:49:13.371 [6364] TRACE main.wtssessionchange Recording server retrieved via VC clr:my-edge-gateway.domain.local
16-06-25 14:49:13.371 [6364] TRACE main.wtssessionchange care password :K5efPBwVM2cIU0LaYQucZp0FV19nRIE5f5VYoBZz6EqlZOxNGM

Seguem-se os logs relativos à aplicação das regras de filtragem de rede, detalhadas noutra secção de informação mais abaixo na página.

Um log indica o momento em que o agente de gravação inicia a ligação com o Edge Gateway e com que palavra-passe única se autentica.

35
16-06-25 14:49:13.421 [6364] TRACE main.createRecorderProcess launching whith password :K5efPBwVM2cIU0LaYQucZp0FV19nRIE5f5VYoBZz6EqlZOxNGM

Por último, quando o utilizador inicia uma desligação, esta é captada pelo agente de gravação a fim de terminar a gravação e retirar as eventuais regras de filtragem de rede. Corresponde às linhas 36-39 do ficheiro de log do exemplo:

36
37
38
39
16-06-25 14:49:26.664 [4620] TRACE main.createRecorderProcess Calling logoff.exe 6
16-06-25 14:49:26.990 [6364] TRACE main.wtssessionchange User DOMAIN\cyberelements_user has no other session. Dropping network filter rules
16-06-25 14:49:26.990 [6364] TRACE main.wtssessionchange Session logoff or disconnect :6 event:6
16-06-25 14:49:27.331 [6364] TRACE main.wtssessionchange Session logoff or disconnect :6 event:4
Ligação de acesso direto RDP (linhas 40-61)

Quando é detetada uma nova sessão RDP, são escritos os logs seguintes, que indicam a deteção de uma nova sessão RDP e registam o nome do utilizador que se ligou:

40
41
42
43
16-06-25 14:49:38.964 [6364] TRACE main.wtssessionchange Session logon or connect :7 event:3
16-06-25 14:49:38.965 [6364] TRACE main.wtssessionchange
16-06-25 14:49:40.75 [6364] TRACE main.wtssessionchange Session logon or connect :7 event:5
16-06-25 14:49:40.76 [6364] TRACE main.wtssessionchange cyberelements_user

Nos logs anteriores, foi o utilizador cyberelements_user que se ligou por RDP.

Numa ligação RDP direta, o canal virtual RDP específico da execução de aplicações RDP ou HTML5 RDP com agente não é utilizado. O agente de gravação conclui, por conseguinte, que a sessão aberta é uma sessão de acesso direto.

44
16-06-25 14:49:40.178 [6364] TRACE wtssessionchange.wtssessionchange WTSVirtualChannelOpenEx failure.31 Not a Cleanroom session, or the client has no support for the clr virtual channel

Devido à deteção de um acesso direto, o agente de gravação regista os diferentes grupos do utilizador que acabou de se ligar:

46
16-06-25 14:49:40.185 [6364] TRACE main.createRecorderProcess User groups :DOMAIN\Utilisateurs du domaine domain.local\Utilisateurs du domaine \Tout le monde domain.local\Tout le monde BUILTIN\Utilisateurs BUILTIN\Utilisateurs du Bureau à distance AUTORITE NT\REMOTE INTERACTIVE LOGON AUTORITE NT\INTERACTIF AUTORITE NT\Utilisateurs authentifiés domain.local\LOCAL DOMAIN\cyberelements_users domain.local\cyberelements_users 

Sugestão

Com esta informação, pode determinar as razões pelas quais as gravações dos acessos diretos não são desencadeadas: se o contrato de acesso direto não autorizar um dos grupos do utilizador, ou se o nome de domínio indicado tiver de ser o nome curto (nome netBIOS) ou o nome completo.

O agente de gravação indica a que Edge Gateway se poderá ligar para enviar a gravação da sessão do utilizador.
Recorde-se que são os Edge Gateway que constam do ficheiro gateways.xml configurado durante a configuração do agente de gravação.

47
16-06-25 14:49:40.186 [6364] TRACE getDirectRecordInformation.getDirectRecordInformation gateways: my-edge-gateway.domain.local

Segue-se o certificado de cliente que o agente de gravação utiliza para se autenticar junto do serviço de gravação.
Por predefinição, o agente de gravação procurará um certificado que contenha o nome do servidor RDP no seu CN, salvo se a chave MachineName tiver sido definida.
O agente de gravação indica em seguida o certificado selecionado e as informações sobre a autoridade de certificação que o gerou.

48
49
50
51
16-06-25 14:49:40.199 [6364] TRACE SecChannelClient.ClientCreateCredentials looking for a certificate with name containing:my-rds-server
16-06-25 14:49:40.199 [6364] TRACE SecChannelClient.ClientCreateCredentials looking for a certificate with name containing:my-rds-server.domain.local in the local machine store
16-06-25 14:49:40.201 [6364] TRACE SecChannelClient.ClientCreateCredentials certificate subject:C=FR, S=Grand-Est, L=Sausheim, O=Systancia, CN=my-rds-server.domain.local
16-06-25 14:49:40.201 [6364] TRACE SecChannelClient.ClientCreateCredentials certificate issuer:C=FR, S=Grand-Est, L=Sausheim, O=Systancia, CN=SUB-CA

No exemplo anterior, o agente de gravação procurou um certificado que contivesse my-rds-server e encontrou um com o CN my-rds-server.domain.local, emitido para a autoridade de certificação SUB-CA.

Seguem-se os logs relativos à aplicação das regras de filtragem de rede, detalhadas noutra secção de informação mais abaixo na página.

Um log indica o momento em que o agente de gravação inicia a ligação com o Edge Gateway e com que palavra-passe única se autentica.

57
16-06-25 14:49:40.430 [6364] TRACE main.createRecorderProcess launching whith password :DIRECT_33fRBYAwVDEKs8n3bGFwlIgKYd39C2Ubcl4pkLLC0YAouL4Gml

Por último, quando o utilizador inicia uma desligação, esta é captada pelo agente de gravação a fim de terminar a gravação e retirar as eventuais regras de filtragem de rede. Corresponde às linhas 58-61 do ficheiro de log do exemplo:

58
59
60
61
16-06-25 14:49:48.690 [4620] TRACE main.createRecorderProcess Calling logoff.exe 7
16-06-25 14:49:50.13 [6364] TRACE main.wtssessionchange User DOMAIN\cyberelements_user has no other session. Dropping network filter rules
16-06-25 14:49:50.13 [6364] TRACE main.wtssessionchange Session logoff or disconnect :7 event:6
16-06-25 14:49:50.379 [6364] TRACE main.wtssessionchange Session logoff or disconnect :7 event:4
Aplicação das regras de filtragem de rede (linhas 31 e 53-56)

Para cada sessão que deteta, o agente de gravação determina se é necessário aplicar regras de filtragem de rede à sessão do utilizador.

Se não for necessário aplicar nenhuma regra de filtragem de rede, o agente de gravação indicará Filter not enabled.

31
16-06-25 14:49:13.418 [6364] TRACE main.getNetFilterRulesInformation Filter not enabled

Se for necessário aplicar regras de filtragem de rede, aparecerá a mensagem Net filter enabled.
A seguir a esta linha de ativação da filtragem, é indicado cada um dos filtros aplicados, um por linha:

53
54
55
56
16-06-25 14:49:40.404 [6364] TRACE main.createRecorderProcess Net filter enabled
16-06-25 14:49:40.426 [3948] TRACE CleanroomNetFilter.addRule User DOMAIN\cyberelements_user Remote address: 168427818 (10.10.1.42) Remote port: 443 Protocol condition: TCP
16-06-25 14:49:40.427 [3948] TRACE CleanroomNetFilter.addRule User DOMAIN\cyberelements_user Remote address: 168432641 (10.10.20.1) Remote port: 53 Protocol condition: UDP
16-06-25 14:49:40.428 [6364] TRACE CleanroomNetFilter.addRule User DOMAIN\cyberelements_user Application: C:/Program Files (x86)/Systancia/Safe/IpdivaCareRecorder.exe Remote address: 168427791 (10.10.1.15) Remote port: 8443 Protocol condition: TCP

Recorde-se que, quando a filtragem de rede está ativada, o comportamento predefinido é bloquear todo o tráfego TCP/UDP. Por conseguinte, os filtros indicados são o único tráfego TCP/UDP autorizado para os programas executados no contexto do utilizador.
No exemplo anterior, estão autorizadas as ligações a TCP 10.10.1.42:443 e a UDP 10.10.20.1:53. Além destes dois fluxos autorizados pelo administrador, o fluxo de ligação ao serviço de gravação também está aberto, para permitir que o programa responsável envie a gravação da sessão.

Sugestão

Se não for autorizado nenhum fluxo para o utilizador, apenas serão apresentadas as linhas que indicam que a filtragem está ativa e que o processo de gravação pode contactar o serviço de gravação do Edge Gateway.

Falha de ligação ao serviço de gravação

Vários problemas podem impedir que o agente de gravação se ligue ao serviço de gravação de um Edge Gateway.

O primeiro é um bloqueio do fluxo de rede. Nesse caso, quando o agente de gravação tenta ligar-se ao serviço de gravação, escreve logs semelhantes a estes:

1
2
3
4
18-06-25 15:29:45.805 [2456] TRACE Socket.connect error during select or socket not writable, rc=0
18-06-25 15:29:45.805 [2456] TRACE Socket.raise error not registered: 0
18-06-25 15:29:45.809 [2456] ERROR main.getDirectRecordInformation Could not connect to gateway my-edge-gateway.domain.local Exception :ESocket:errors.cpp:242
18-06-25 15:29:45.809 [2456] ERROR main.getDirectRecordInformation No gateway available

Neste exemplo, a linha 1 indica que o fluxo não pôde ser iniciado, enquanto a linha 3 precisa o Edge Gateway em questão e a falha de ligação (note também o número 242 no fim da linha 3 para este tipo de problema).

O segundo problema que pode surgir é a incapacidade do agente de gravação, e por extensão do servidor RDP, de resolver o nome do Edge Gateway:

1
2
3
18-06-25 15:37:07.539 [2456] ERROR Socket.DNSLookup getaddrinfo() Hôte inconnu. 
18-06-25 15:37:07.539 [2456] ERROR main.getNetFilterRulesInformation Could not retrieve netfilter rule with gateway wrong-dns-edge-gateway.domain.local Exception :ESocketLookupFailed:socket2.cpp:232
18-06-25 15:37:07.539 [2456] ERROR main.getNetFilterRulesInformation The gateway may need an upgrade

Neste exemplo, a linha 1 confirma o problema de resolução DNS do nome do Edge Gateway.
A segunda linha precisa a falha de ligação e o nome do Edge Gateway. Note que a linha termina com o número 232 quando se trata de uma falha de resolução DNS.

O terceiro problema que pode ocorrer é uma ligação a um serviço que não é um serviço de gravação, por exemplo um servidor web à escuta na porta 8443. Nesse caso, obtêm-se os logs seguintes:

1
2
3
18-06-25 15:38:33.607 [2456] TRACE IO.read problem when read data
18-06-25 15:38:33.608 [2456] ERROR main.getNetFilterRulesInformation Could not retrieve netfilter rule with gateway wrong-server.domain.local Exception :IOException:io.cpp:140
18-06-25 15:38:33.608 [2456] ERROR main.getNetFilterRulesInformation The gateway may need an upgrade

A linha 1 assinala uma anomalia nos dados trocados; a linha 2 confirma o problema de ligação e precisa o erro 140 no fim da linha.

Nenhum contrato de acesso direto permite desencadear a gravação da sessão direta.

Nos acessos diretos, não é necessariamente obrigatório que todos os utilizadores sejam gravados. Quando é o caso, obtêm-se os logs seguintes:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
16-06-25 14:49:38.964 [6364] TRACE main.wtssessionchange Session logon or connect :7 event:3
16-06-25 14:49:38.965 [6364] TRACE main.wtssessionchange
16-06-25 14:49:40.75 [6364] TRACE main.wtssessionchange Session logon or connect :7 event:5
16-06-25 14:49:40.76 [6364] TRACE main.wtssessionchange cyberelements_user
16-06-25 14:49:40.178 [6364] TRACE wtssessionchange.wtssessionchange WTSVirtualChannelOpenEx failure.31 Not a Cleanroom session, or the client has no support for the clr virtual channel
16-06-25 14:49:40.179 [6364] TRACE main.wtssessionchange prog :
16-06-25 14:49:40.185 [6364] TRACE main.createRecorderProcess User groups :DOMAIN\Utilisateurs du domaine domain.local\Utilisateurs du domaine \Tout le monde domain.local\Tout le monde BUILTIN\Utilisateurs BUILTIN\Utilisateurs du Bureau à distance AUTORITE NT\REMOTE INTERACTIVE LOGON AUTORITE NT\INTERACTIF AUTORITE NT\Utilisateurs authentifiés domain.local\LOCAL DOMAIN\cyberelements_users domain.local\cyberelements_users 
16-06-25 14:49:40.186 [6364] TRACE getDirectRecordInformation.getDirectRecordInformation gateways: my-edge-gateway.domain.local
16-06-25 14:49:40.199 [6364] TRACE SecChannelClient.ClientCreateCredentials looking for a certificate with name containing:my-rds-server
16-06-25 14:49:40.199 [6364] TRACE SecChannelClient.ClientCreateCredentials looking for a certificate with name containing:my-rds-server.domain.local in the local machine store
16-06-25 14:49:40.201 [6364] TRACE SecChannelClient.ClientCreateCredentials certificate subject:C=FR, S=Grand-Est, L=Sausheim, O=Systancia, CN=my-rds-server.domain.local
16-06-25 14:49:40.201 [6364] TRACE SecChannelClient.ClientCreateCredentials certificate issuer:C=FR, S=Grand-Est, L=Sausheim, O=Systancia, CN=SUB-CA
16-06-25 14:49:40.404 [6364] TRACE Socket.incrCounters 0 UDP, 0 TCP, 1 Objs
16-06-25 14:49:40.406 [6364] TRACE main.createRecorderProcess no need to record

Os logs obtidos começam como em todas as sessões diretas captadas pelo agente de gravação. No entanto, uma vez estabelecida a ligação ao serviço de gravação do Edge Gateway, este devolve ao agente de gravação a informação de que o utilizador que se ligou não está sujeito a gravação.
O agente de gravação indica então que não é necessário gravar a sessão do utilizador (linha 14 do exemplo anterior).

A linha 7 enumera todos os grupos obtidos pelo agente de gravação para o utilizador que se ligou.
Esta informação permite determinar as razões pelas quais as gravações dos acessos diretos não são desencadeadas: se o contrato de acesso direto não autorizar um dos grupos do utilizador, ou se o nome de domínio indicado tiver de ser o nome curto (nome netBIOS) ou o nome completo.