Vai al contenuto

Installazione e uso dell'agente di registrazione per Windows

  • Installazione


    Installazione e distribuzione dell'agente di registrazione per Windows.

    Installare

  • Configurazione


    Configurare l'agente di registrazione per Windows per il funzionamento con le applicazioni RDP e HTML5 RDP e/o con gli accessi diretti.

    Configurare

L'agente di registrazione per Windows è utilizzato da CyberElements per aggiungere nuove funzionalità alle sessioni RDP:

  • Possibilità di filtrare i flussi TCP e UDP accessibili all'utente
  • Possibilità di avviare la registrazione della sessione per qualsiasi utente che si connette al server senza passare dal portale utente o dal client Desktop (funzionalità direct access)

Inoltre, durante le sessioni degli utenti vengono catturati eventi aggiuntivi:

  • Apertura di finestre
  • Chiusura di finestre
  • Avvio di programmi
  • Chiusura di programmi
  • Contenuto degli appunti
  • Attività dell'utente

Prerequisiti

Compatibilità del client

Per sapere se l'agente è compatibile con i diversi sistemi operativi Microsoft Windows, consultare la matrice di compatibilità.

L'agente di registrazione richiede alcuni prerequisiti per funzionare correttamente. Alcuni riguardano soltanto la funzionalità di registrazione con agente delle applicazioni RDP e HTML5 RDP, altri l'accesso diretto con agente.

Prerequisiti generali

L'agente di registrazione invia la registrazione della sessione dell'utente a CyberElements connettendosi all'Edge Gateway sulla porta TCP 8443. Per questo è necessario che il flusso di rete tra le due macchine sia aperto.

Per inviare la registrazione all'Edge Gateway in modo sicuro, l'agente di registrazione stabilisce con quest'ultimo una connessione sicura tramite TLS. TLS si basa sull'uso di certificati e, perché la connessione sia considerata affidabile e sicura, devono essere soddisfatti i vincoli seguenti:

  • Il certificato del server, in questo caso l'Edge Gateway, non deve essere scaduto (data massima di validità).
  • Il certificato del server, in questo caso l'Edge Gateway, deve essere emesso da un'autorità di certificazione riconosciuta come attendibile dalla macchina su cui è installato l'agente di registrazione.

    Informazioni aggiuntive

    Il server su cui è installato l'agente di registrazione deve avere, come minimo, l'autorità di certificazione (CA) radice del certificato del server di registrazione nel proprio archivio locale delle autorità di certificazione attendibili.

    È quindi necessario:

    1. Recuperare la CA radice del certificato del servizio di registrazione sull'Edge Gateway.
    2. Caricare questa CA sul server su cui è installato l'agente di registrazione.
    3. Installare la CA nell'archivio dei certificati «Trusted Root Certification Authorities» della macchina locale.
    Esempio con PowerShell

    Un certificato in formato .cer può essere importato facilmente tramite PowerShell.
    A tale scopo, aprire un terminale PowerShell come amministratore della macchina ed eseguire il comando seguente:

    1
    Import-Certificate -FilePath "<PAHT_TO_CERT>" -CertStoreLocation "Cert:\LocalMachine\Root"
    
    Sostituire <PATH_TO_CERT> con il percorso del file del certificato.

    Esempio con PowerShell per il certificato Systancia, senza inviare file

    Questo esempio consiste nell'installare la CA radice di Systancia, utilizzata per impostazione predefinita su CyberElements.

    È inoltre possibile importare il certificato senza dover inviare o scaricare il file sulla macchina su cui è installato l'agente di registrazione.
    A tale scopo, aprire un terminale PowerShell come amministratore della macchina ed eseguire i comandi seguenti:

     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()
    

    Per utilizzare questo metodo con un'altra CA, modificare il valore della variabile base64Cert con il certificato desiderato codificato in base 64.

  • Il certificato del server, in questo caso l'Edge Gateway, non deve essere revocato.

  • La macchina su cui è installato l'agente di registrazione deve poter contattare il server, in questo caso l'Edge Gateway, con un nome DNS o un indirizzo IP coperto dal certificato del server tramite il suo Common Name (CN).

Prerequisiti specifici delle applicazioni RDP con agente utilizzate su una postazione utente macOS o Ubuntu

Attenzione

I prerequisiti seguenti sono necessari solo se l'utente avvia un'applicazione RDP con agente e la sua postazione non è Windows (macOS o Ubuntu).

Se gli utenti di CyberElements hanno postazioni esclusivamente Windows oppure, in mancanza, utilizzano esclusivamente applicazioni HTML5 RDP, i prerequisiti seguenti possono essere ignorati.

Le chiavi di registro seguenti sono necessarie sul server di destinazione su cui è distribuito l'agente di registrazione.

In primo luogo, la prima chiave disabiliterà l'elenco dei programmi di avvio autorizzati (documento Microsoft). Per impostazione predefinita, una macchina Windows autorizza solo explorer.exe come programma di avvio.

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

Se la macchina non è un server RDS, si raccomanda comunque di applicare sempre la chiave di registro seguente, per permettere all'agente di registrazione di aprirsi come programma di avvio:

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

Requisiti specifici dell'accesso diretto

Funzionalità di accesso diretto

La funzionalità di accesso diretto permette di avviare una registrazione della sessione dell'utente per gli accessi RDP o console (connessione fisica alla macchina o tramite la modalità console dell'hypervisor) che non passano direttamente da CyberElements.

Se l'utente ha l'autorizzazione ad accedere al server, la sua sessione verrà registrata. In caso contrario, per impostazione predefinita l'utente verrà disconnesso.

Perché l'agente di registrazione funzioni in modalità di accesso diretto è necessario un certificato x509. Questo certificato deve soddisfare i requisiti seguenti:

  • Il certificato deve essere ancora valido (periodo di validità non scaduto).
  • Il certificato deve essere di tipo (campo di utilizzo avanzato della chiave) client authentication (OID: 1.3.6.1.5.5.7.3.2).
  • Il certificato non deve essere revocato.
  • I vincoli derivanti dal livello di sicurezza 2 di OpenSSL implicano che:
    • Il certificato deve avere una chiave privata di almeno 2048 bit con i cifrari RSA, DSA e DH; per le chiavi a curva ellittica (ECC) devono essere di almeno 224 bit.
    • La firma del certificato non deve essere MD5 o SHA-1 (è preferibile SHA-512).
  • Il server di registrazione utilizzerà il campo Common Name (CN) per identificare il certificato e quindi la macchina su cui viene avviata una registrazione diretta. Questo campo deve essere compilato.

Uso dell'agente di registrazione con le applicazioni RDP e HTML5 RDP

Abilitare l'uso dell'agente di registrazione

Se l'agente di registrazione è installato e configurato correttamente, l'abilitazione del suo uso si effettua a livello dell'applicazione RDP o HTML5 RDP interessata:

Nel meccanismo intervengono tre parametri:

Without agent mode
Questa opzione deve rimanere non selezionata perché l'agente di registrazione funzioni.
Disconnect session if the recorder is not working
Abilita o disabilita una misura di sicurezza quando la registrazione della sessione non riesce per vari motivi. Se la registrazione non può essere effettuata, la sessione RDP o HTML5 RDP dell'utente viene terminata. Raccomandiamo di abilitare questa impostazione per evitare connessioni degli utenti senza registrazione (per esempio in caso di malfunzionamento dell'agente di registrazione).
Time before disconnection
Se l'opzione precedente è abilitata, questa opzione permette di definire il tempo, in secondi, prima che venga effettuata la disconnessione. Il valore predefinito è di 30 secondi, ma può essere ridotto per aumentare la reattività, oppure aumentato se si sa, per esempio, che le sessioni degli utenti sono lunghe.

Limitare i movimenti laterali

La limitazione dei movimenti laterali è una funzionalità che restringe le connessioni di rete della sessione dell'utente. Per impostazione predefinita questa funzionalità blocca tutto il traffico TCP/UDP all'interno della sessione dell'utente, ma gli amministratori possono aprire diversi flussi di accesso.

Le restrizioni si configurano nella access policy e possono quindi variare in funzione dell'utente, e anche avere valori diversi per un solo utente (moltiplicando le politiche di accesso che gli sono assegnate). Un utente con più politiche di accesso per la stessa applicazione vedrà applicate le restrizioni di rete dell'accesso più permissivo.

Una volta autorizzata in una politica di accesso un'applicazione RDP o HTML5 RDP con agente, la scheda Network connections diventa disponibile. Da essa è possibile abilitare il filtraggio e indicare le reti autorizzate per l'utente:

Informazioni

Qualsiasi modifica di queste impostazioni verrà applicata agli utenti solo al successivo uso dell'applicazione RDP o HTML5 RDP interessata.

Configurare le registrazioni degli accessi diretti con agente

Dichiarare i server preparati per l'accesso diretto con agente

Per dichiarare un server che deve funzionare in modalità di accesso diretto con agente è necessario aprire prima il modulo Machines management:

Fare clic poi sul pulsante per aggiungere un nuovo server. Compare una nuova finestra per configurare il nuovo server:

Name
Nome della macchina così come è visualizzato nella console CyberElements.
Notification text
Messaggio di notifica che gli utenti riceveranno al momento della connessione al server.
Record sessions as videos
Abilita o disabilita la registrazione video della sessione. Se è disabilitata, verranno catturati e registrati solo gli eventi della sessione.
Check video integrity at playback
Al momento della creazione dell'archivio video viene calcolato e memorizzato un hash (SHA-256) del file video. Quando gli amministratori consultano l'archivio, viene verificato che l'hash non sia stato modificato. Se è stato modificato, all'amministratore viene inviato un messaggio di avviso, poiché è probabile che la registrazione video sia stata alterata (per esempio sostituita o con sequenze tagliate).
Allow manual removal of archives
Autorizza o nega agli amministratori la possibilità di eliminare gli archivi video.

Informazioni

Gli archivi generati conservano le impostazioni in vigore al momento della registrazione. La modifica di questa impostazione riguarderà solo i nuovi archivi.
Delete archives automatically
Configurazione dell'eliminazione automatica degli archivi dopo il superamento di un determinato numero di giorni.

Informazioni

Gli archivi generati conservano le impostazioni in vigore al momento della registrazione. La modifica di questa impostazione riguarderà solo i nuovi archivi.
Use agent mode
Opzione che deve essere abilitata perché il server disponga del meccanismo di accesso diretto con agente attivo.
Host (CN of the certificate)
Indicazione del CN del certificato utilizzato dall'agente di registrazione per autenticarsi presso l'Edge Gateway. Corrisponde alla configurazione del certificato di macchina.
Use no agent
Se un parametro non è utile per la modalità di funzionamento desiderata, può essere lasciato non selezionato.

Configurare i diritti di accesso diretto con agente

La configurazione dei diritti di accesso diretto con agente è simile a quella delle politiche di accesso delle applicazioni. I nuovi diritti si dichiarano, e quelli esistenti si modificano, da Direct recording configuration:

È possibile aggiungere una nuova configurazione facendo clic sul pulsante .

Le diverse schede delle impostazioni sono simili a quelle delle politiche di accesso delle applicazioni, salvo la scheda dei gruppi, che permette di aggiungere un gruppo manualmente:

Dopo aver fatto clic sul pulsante di aggiunta manuale, compare una nuova finestra per indicare il nome del gruppo e il suo dominio:

Suggerimento

Questa funzionalità è particolarmente utile se si desidera aggiungere un gruppo locale, oppure un gruppo situato in una OU diversa da quella definita nella configurazione del dominio LDAP.

Le altre schede sono:

  • Sites: colloca la configurazione su uno o più siti e, per estensione, permette all'agente di registrazione di connettersi a uno o più Edge Gateway associati ai siti autorizzati.
  • Machines: aggiunge i server RDP dichiarati nel capitolo precedente.
  • Alerts: associa avvisi alla configurazione.
  • Network connections: limita i movimenti laterali degli utenti durante le loro sessioni, con un funzionamento identico alla limitazione dei movimenti laterali delle applicazioni RDP e HTML5 RDP.

Log dell'agente di registrazione

Abilitare i log dell'agente di registrazione

Attenzione!

L'abilitazione dei log richiede il riavvio del servizio dell'agente di registrazione, il che interromperà le registrazioni di sessione in corso sul server.
A seconda della configurazione della chiave LogOffOnFailure, l'utente verrà disconnesso o rimarrà connesso.

Per abilitare i log dell'agente di registrazione è necessario eseguire i passaggi seguenti:

  1. Creare una directory denominata Log nella directory di installazione dell'agente (per impostazione predefinita C:\Program Files (x86)\Systancia\cyberelements).

  2. Riavviare il servizio CleanroomAgent, per esempio con il comando PowerShell seguente, eseguito come amministratore:

    1
    Restart-Service -Name 'CleanroomAgent'
    

Ogni volta che il servizio dell'agente di registrazione viene avviato, verrà generato un nuovo file di log nella directory Log creata al passaggio 1.

Contenuto dei log dell'agente di registrazione

I log generati dall'agente di registrazione hanno questo aspetto:

 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
Inizializzazione dell'agente di registrazione (righe 1-21)

Quando l'agente di registrazione si inizializza (righe 1-18), vengono registrate diverse informazioni sul 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 -----------------------------------

La riga 19 indica il numero di Edge Gateway trovati nel file gateways.xml per il funzionamento in modalità diretta.

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

La riga 20 segnala un problema di caricamento di chiavi in una directory inesistente. Si tratta di una vecchia funzione che non influisce sul funzionamento generale dell'agente. Questo log di errore può quindi essere ignorato.

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"

La riga 21 indica la copia dell'eseguibile CareInit.exe in System32, al fine di coprire i casi in cui un'applicazione RDP con agente venga avviata da una macchina macOS o Ubuntu.
In questa condizione, la connessione al server richiede l'esecuzione di CareInit.exe come programma di avvio.

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
Connessione di un'applicazione HTML5 RDP o RDP con agente (righe 22-39)

Quando viene rilevata una nuova sessione RDP, vengono scritti i log seguenti, che indicano il rilevamento di una nuova sessione RDP e registrano il nome dell'utente che si è connesso:

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

Nei log precedenti, l'utente che si è connesso tramite RDP è cyberelements_user.

All'avvio di un'applicazione HTML5 RDP o RDP con agente viene creato un canale virtuale RDP specifico, per inviare all'agente di registrazione l'indirizzo di connessione dell'Edge Gateway e la password univoca di connessione al servizio di registrazione dell'Edge Gateway.
Ciò indica due cose:

  1. L'agente di registrazione ha rilevato che si tratta di una connessione RDP avviata da CyberElements e non deve quindi trattare la sessione come un accesso diretto.
  2. L'agente di registrazione ha potuto recuperare l'indirizzo dell'Edge Gateway a cui deve inviare le registrazioni video e gli eventi.

Queste informazioni corrispondevano alle righe 27-29, in cui, nell'esempio, l'agente di registrazione ha recuperato l'indirizzo di connessione dell'Edge Gateway (my-edge-gateway.domain.local) e una password monouso (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

Seguono poi i log relativi all'applicazione delle regole di filtraggio di rete, che sono descritti in un'altra sezione informativa più in basso nella pagina.

Un log indica il momento in cui l'agente di registrazione avvia la connessione con l'Edge Gateway e con quale password univoca si autentica.

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

Infine, quando l'utente avvia una disconnessione, questa viene catturata dall'agente di registrazione per terminare la registrazione e rimuovere le eventuali regole di filtraggio di rete. Corrisponde alle righe 36-39 del file di log dell'esempio:

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
Connessione di un accesso diretto RDP (righe 40-61)

Quando viene rilevata una nuova sessione RDP, vengono scritti i log seguenti, che indicano il rilevamento di una nuova sessione RDP e registrano il nome dell'utente che si è connesso:

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

Nei log precedenti, l'utente che si è connesso tramite RDP è cyberelements_user.

In una connessione RDP diretta non viene utilizzato il canale virtuale RDP specifico dell'esecuzione delle applicazioni RDP o HTML5 RDP con agente. L'agente di registrazione conclude quindi che la sessione aperta è una sessione di accesso diretto.

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

Avendo rilevato un accesso diretto, l'agente di registrazione registra i diversi gruppi dell'utente che si è appena connesso:

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 

Suggerimento

Con queste informazioni è possibile determinare i motivi per cui le registrazioni degli accessi diretti non vengono avviate: se il contratto di accesso diretto non autorizza uno dei gruppi dell'utente, oppure se il nome di dominio indicato deve essere il nome breve (nome netBIOS) o il nome completo.

L'agente di registrazione indica a quali Edge Gateway potrà connettersi per inviare la registrazione della sessione dell'utente.
Si ricorda che si tratta degli Edge Gateway che fanno parte del file gateways.xml configurato durante la configurazione dell'agente di registrazione.

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

Segue poi il certificato client che l'agente di registrazione utilizza per autenticarsi presso il servizio di registrazione.
Per impostazione predefinita, l'agente di registrazione cerca un certificato che contenga nel proprio CN il nome del server RDP, salvo che sia stata definita la chiave MachineName.
L'agente di registrazione indica poi il certificato selezionato e le informazioni sull'autorità di certificazione che l'ha generato.

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

Nell'esempio precedente, l'agente di registrazione ha cercato un certificato che contenesse my-rds-server e ne ha trovato uno con il CN my-rds-server.domain.local emesso per l'autorità di certificazione SUB-CA.

Seguono poi i log relativi all'applicazione delle regole di filtraggio di rete, che sono descritti in un'altra sezione informativa più in basso nella pagina.

Un log indica il momento in cui l'agente di registrazione avvia la connessione con l'Edge Gateway e con quale password univoca si autentica.

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

Infine, quando l'utente avvia una disconnessione, questa viene catturata dall'agente di registrazione per terminare la registrazione e rimuovere le eventuali regole di filtraggio di rete. Corrisponde alle righe 58-61 del file di log dell'esempio:

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
Applicazione delle regole di filtraggio di rete (righe 31 e 53-56)

Per ogni sessione rilevata dall'agente di registrazione, quest'ultimo determina se è necessario applicare regole di filtraggio di rete alla sessione dell'utente.

Se non è necessario applicare alcuna regola di filtraggio di rete, l'agente di registrazione indica Filter not enabled.

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

Se è necessario applicare regole di filtraggio di rete, compare il messaggio Net filter enabled.
Dopo questa riga di attivazione del filtro viene indicato ciascuno dei filtri applicati, uno per riga:

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

Si ricorda che, quando il filtraggio di rete è attivato, il comportamento predefinito è bloccare tutto il traffico TCP/UDP. I filtri indicati sono quindi il solo traffico TCP/UDP autorizzato per i programmi eseguiti nel contesto dell'utente.
Nell'esempio precedente sono autorizzate le connessioni verso TCP 10.10.1.42:443 e UDP 10.10.20.1:53. Oltre a questi due flussi autorizzati dall'amministratore, è aperto anche il flusso di connessione al servizio di registrazione, per permettere l'invio della registrazione della sessione da parte del programma che se ne occupa.

Suggerimento

Se per l'utente non è autorizzato alcun flusso, verranno visualizzate solo le righe che indicano che il filtraggio è attivo e che il processo di registrazione può contattare il servizio di registrazione dell'Edge Gateway.

Connessione al servizio di registrazione non riuscita

Diversi problemi possono impedire all'agente di registrazione di connettersi al servizio di registrazione di un Edge Gateway.

Il primo è un blocco del flusso di rete. In questo caso, quando il servizio di registrazione tenta di connettersi al servizio di registrazione, scrive log simili a questi:

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

In questo esempio, la riga 1 indica che il flusso non ha potuto essere avviato, mentre la riga 3 precisa l'Edge Gateway interessato e il fallimento della connessione (si noti anche il numero 242 alla fine della riga 3 per questo tipo di problema).

Il secondo problema che può essere riscontrato è l'incapacità dell'agente di registrazione, e per estensione del server RDP, di risolvere il nome dell'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

In questo esempio, la riga 1 conferma il problema di risoluzione DNS del nome dell'Edge Gateway.
La seconda riga precisa il fallimento della connessione e il nome dell'Edge Gateway. Si noti che la riga termina con il numero 232 quando si tratta di un fallimento di risoluzione DNS.

Il terzo problema che può verificarsi è una connessione a un servizio che non è un servizio di registrazione, per esempio un server web in ascolto sulla porta 8443. In questo caso si ottengono i log seguenti:

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

La riga 1 segnala un problema con i dati scambiati; la riga 2 conferma il problema di connessione e precisa l'errore 140 alla fine della riga.

Nessun contratto di accesso diretto permette di avviare la registrazione della sessione diretta.

Negli accessi diretti, non tutti gli utenti devono necessariamente essere registrati. Se è il caso, si ottengono i log seguenti:

 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

I log ottenuti iniziano come in qualsiasi sessione diretta catturata dall'agente di registrazione. Tuttavia, una volta stabilita la connessione con il servizio di registrazione dell'Edge Gateway, quest'ultimo restituisce all'agente di registrazione l'informazione che l'utente connesso non è soggetto a registrazione.
L'agente di registrazione indica quindi che non è necessario registrare la sessione dell'utente (riga 14 dell'esempio precedente).

La riga 7 elenca tutti i gruppi recuperati dall'agente di registrazione per l'utente che si è connesso.
Queste informazioni permettono di determinare i motivi per cui le registrazioni degli accessi diretti non vengono avviate: se il contratto di accesso diretto non autorizza uno dei gruppi dell'utente, oppure se il nome di dominio indicato deve essere il nome breve (nome netBIOS) o il nome completo.