Raccogliere i log di Microsoft Network Policy Server (NPS)

Supportato in:

Questo documento spiega come importare i log di Microsoft Network Policy Server (NPS) in Google Security Operations utilizzando Google Cloud Storage V2.

Microsoft Network Policy Server (NPS) è un ruolo di Windows Server che fornisce autenticazione, autorizzazione e contabilità RADIUS. NPS consente la gestione centralizzata dei criteri di accesso alla rete per dispositivi wireless, connessioni VPN, switch e accesso remoto. NPS non dispone di API o funzionalità di esportazione nel cloud native, pertanto i log devono essere raccolti utilizzando un inoltro di terze parti.

Prima di iniziare

Assicurati di soddisfare i seguenti prerequisiti:

  • Un'istanza Google SecOps
  • Un progetto GCP con l'API Cloud Storage abilitata
  • Autorizzazioni per creare e gestire bucket GCS
  • Autorizzazioni per gestire le policy IAM nei bucket GCS
  • Accesso con privilegi a Windows Server che esegue NPS
  • Accesso amministratore per installare NXLog sul server NPS

Configura il logging NPS

Abilita i log di contabilità NPS

  1. Sul server Windows che esegue NPS, apri Server Manager.
  2. Vai a Strumenti > Network Policy Server.
  3. Nella console NPS, espandi Contabilità nel riquadro di navigazione a sinistra.
  4. Fai clic con il tasto destro del mouse su Contabilità e seleziona Configura contabilità.
  5. Nella procedura guidata Configurazione contabilità, fai clic su Avanti.
  6. Seleziona Registra in un file di testo sul computer locale e fai clic su Avanti.
  7. Nella pagina Configura proprietà file di log, configura quanto segue:
    • Directory: lascia il valore predefinito (%systemroot%\System32\LogFiles) o specifica un percorso personalizzato
    • Formato: seleziona Conforme a DTS (consigliato da Microsoft per il formato XML strutturato)
    • Crea un nuovo file di log: seleziona Giornaliero o Settimanale in base al volume dei log.
  8. Fai clic su Avanti.
  9. Controlla il riepilogo e fai clic su Fine.

Abilitare l'audit logging NPS

  1. Apri il prompt dei comandi come amministratore sul server NPS.
  2. Esegui il comando seguente per abilitare la registrazione degli audit NPS:

    auditpol /set /subcategory:"Network Policy Server" /success:enable /failure:enable
    
  3. Verifica che il criterio di controllo sia attivato:

    auditpol /get /subcategory:"Network Policy Server"
    

Installa e configura NXLog sul server NPS

Scaricare e installare NXLog

  1. Sul server NPS, scarica NXLog Enterprise Edition dal sito web di NXLog.
  2. Esegui il programma di installazione e segui la procedura guidata di installazione.
  3. Accetta il percorso di installazione predefinito (C:\Program Files\nxlog) o specifica un percorso personalizzato.
  4. Completa l'installazione.

Configura NXLog per raccogliere i log NPS

  1. Sul server NPS, vai alla directory di configurazione di NXLog:
    • Percorso predefinito: C:\Program Files\nxlog\conf
  2. Apri il file nxlog.conf in un editor di testo (ad esempio, Blocco note) con privilegi di amministratore.
  3. Sostituisci l'intero contenuto di nxlog.conf con la seguente configurazione:

    ## NXLog configuration for Microsoft NPS log collection
    ## Collects NPS logs and forwards to Google Cloud Storage
    
    define ROOT C:\Program Files\nxlog
    define LOGDIR C:\Windows\System32\LogFiles
    define GCS_BUCKET your-gcs-bucket-name
    define GCS_PREFIX nps-logs
    define GCS_CREDENTIALS C:\nxlog-credentials\gcs-service-account.json
    
    Moduledir %ROOT%\modules
    CacheDir %ROOT%\data
    Pidfile %ROOT%\data\nxlog.pid
    SpoolDir %ROOT%\data
    LogFile %ROOT%\data\nxlog.log
    LogLevel INFO
    
    <Extension nps>
        Module xm_nps
    </Extension>
    
    <Extension json>
        Module xm_json
    </Extension>
    
    <Input nps_logs>
        Module im_file
        File '%LOGDIR%\IN*.log'
        SavePos TRUE
        ReadFromLast TRUE
        Recursive FALSE
        InputType nps
        <Exec>
            # Parse NPS logs (DTS Compliant format)
            # Add hostname for tracking
            $Hostname = hostname();
    
            # Convert to JSON
            to_json();
        </Exec>
    </Input>
    
    <Output gcs>
        Module om_file
        File '%ROOT%\data\gcs-upload\nps-' + strftime(now(), '%Y%m%d-%H%M%S') + '.json'
        <Exec>
            # Rotate output file every hour
            if (file_size(file_name()) > 100000000) file_cycle();
        </Exec>
    </Output>
    
    <Route nps_to_gcs>
        Path nps_logs => gcs
    </Route>
    
  4. Nel file di configurazione, sostituisci i seguenti segnaposto:

    • your-gcs-bucket-name: il nome del bucket GCS (creato nella sezione successiva)
    • Verifica che il percorso LOGDIR corrisponda alla posizione del file di log NPS
  5. Salva il file.

Creazione di un bucket Google Cloud Storage

  1. Vai alla console Google Cloud.
  2. Seleziona il tuo progetto o creane uno nuovo.
  3. Nel menu di navigazione, vai a Cloud Storage > Bucket.
  4. Fai clic su Crea bucket.
  5. Fornisci i seguenti dettagli di configurazione:

    Impostazione Valore
    Assegna un nome al bucket Inserisci un nome univoco globale (ad esempio nps-logs-chronicle).
    Tipo di località Scegli in base alle tue esigenze (regione singola, due regioni, più regioni)
    Località Seleziona la posizione (ad esempio, us-central1).
    Classe di archiviazione Standard (consigliato per i log a cui si accede di frequente)
    Controllo dell'accesso Uniforme (consigliato)
    Strumenti di protezione (Facoltativo) Attiva il controllo delle versioni degli oggetti o la policy di conservazione
  6. Fai clic su Crea.

Crea un account di servizio GCS per NXLog

Crea service account

  1. Nella console Google Cloud, vai a IAM e amministrazione > Service Accounts.
  2. Fai clic su Crea account di servizio.
  3. Fornisci i seguenti dettagli di configurazione:
    • Nome service account: inserisci nxlog-nps-uploader (ad esempio)
    • Descrizione service account: inserisci Service account for NXLog to upload NPS logs to GCS
  4. Fai clic su Crea e continua.
  5. Nella sezione Concedi a questo account di servizio l'accesso al progetto, aggiungi il seguente ruolo:
    1. Fai clic su Seleziona un ruolo.
    2. Cerca e seleziona Creatore oggetti Storage.
  6. Fai clic su Continua.
  7. Fai clic su Fine.

Scarica la chiave del service account

  1. Nella pagina Service Accounts (Account di servizio), fai clic sull'account di servizio che hai appena creato (nxlog-nps-uploader).
  2. Vai alla scheda Chiavi.
  3. Fai clic su Aggiungi chiave > Crea nuova chiave.
  4. Seleziona JSON come tipo di chiave.
  5. Fai clic su Crea.
  6. Il file della chiave JSON verrà scaricato sul computer.
  7. Copia il file della chiave JSON nel server NPS nella seguente posizione:
    • C:\nxlog-credentials\gcs-service-account.json
  8. Crea la directory C:\nxlog-credentials se non esiste.

Configurare il caricamento automatico di GCS

Crea lo script di caricamento di PowerShell

  1. Sul server NPS, crea una nuova directory:
    • C:\nxlog-scripts
  2. Crea un nuovo file denominato upload-to-gcs.ps1 nella directory.
  3. Apri il file in un editor di testo e incolla il seguente script PowerShell:

    # PowerShell script to upload NXLog output files to Google Cloud Storage
    # Uses gsutil command-line tool
    
    $ErrorActionPreference = "Stop"
    
    # Configuration
    $LocalLogDir = "C:\Program Files\nxlog\data\gcs-upload"
    $GcsBucket = "gs://nps-logs-chronicle/nps-logs/"
    $ArchiveDir = "C:\Program Files\nxlog\data\archive"
    $LogFile = "C:\nxlog-scripts\upload.log"
    
    # Function to write log messages
    function Write-Log {
        param([string]$Message)
        $Timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
        "$Timestamp - $Message" | Out-File -FilePath $LogFile -Append
    }
    
    Write-Log "Starting GCS upload process"
    
    # Check if gsutil is available
    try {
        $null = gsutil version
    } catch {
        Write-Log "ERROR: gsutil not found. Please install Google Cloud SDK."
        exit 1
    }
    
    # Activate service account
    $ServiceAccountKey = "C:\nxlog-credentials\gcs-service-account.json"
    if (-not (Test-Path $ServiceAccountKey)) {
        Write-Log "ERROR: Service account key not found at $ServiceAccountKey"
        exit 1
    }
    
    try {
        gcloud auth activate-service-account --key-file=$ServiceAccountKey 2>&1 | Out-Null
        Write-Log "Service account activated successfully"
    } catch {
        Write-Log "ERROR: Failed to activate service account: $_"
        exit 1
    }
    
    # Create archive directory if it doesn't exist
    if (-not (Test-Path $ArchiveDir)) {
        New-Item -ItemType Directory -Path $ArchiveDir | Out-Null
        Write-Log "Created archive directory: $ArchiveDir"
    }
    
    # Get all JSON files in the local log directory
    $Files = Get-ChildItem -Path $LocalLogDir -Filter "*.json" -File
    
    if ($Files.Count -eq 0) {
        Write-Log "No files to upload"
        exit 0
    }
    
    Write-Log "Found $($Files.Count) file(s) to upload"
    
    # Upload each file to GCS
    $SuccessCount = 0
    $FailCount = 0
    
    foreach ($File in $Files) {
        try {
            # Upload to GCS
            gsutil cp $File.FullName $GcsBucket 2>&1 | Out-Null
    
            # Move to archive on success
            Move-Item -Path $File.FullName -Destination $ArchiveDir -Force
    
            Write-Log "Uploaded and archived: $($File.Name)"
            $SuccessCount++
        } catch {
            Write-Log "ERROR uploading $($File.Name): $_"
            $FailCount++
        }
    }
    
    Write-Log "Upload complete. Success: $SuccessCount, Failed: $FailCount"
    
  4. Nello script, sostituisci i seguenti valori:

    • $GcsBucket: l'URI del bucket GCS (ad esempio, gs://nps-logs-chronicle/nps-logs/)
  5. Salva il file.

Installa Google Cloud SDK

  1. Sul server NPS, scarica il programma di installazione di Google Cloud SDK da Google Cloud SDK.
  2. Esegui il programma di installazione e segui la procedura guidata di installazione.
  3. Durante l'installazione, seleziona Installa Python in bundle se Python non è già installato.
  4. Completa l'installazione.
  5. Apri un nuovo prompt dei comandi e verifica l'installazione:

    gsutil version
    

Crea un'attività pianificata per il caricamento automatico

  1. Sul server NPS, apri Utilità di pianificazione.
  2. Nel riquadro a destra, fai clic su Crea attività.
  3. Nella scheda Generali, configura quanto segue:
    • Nome: inserisci NXLog GCS Upload
    • Descrizione: inserisci Upload NPS logs to Google Cloud Storage
    • Opzioni di sicurezza: seleziona Esegui indipendentemente dall'accesso dell'utente.
    • Opzioni di sicurezza: seleziona Esegui con i privilegi più elevati
    • Configura per: seleziona Windows Server 2016 o la versione del server
  4. Nella scheda Trigger:
    1. Fai clic su New (Nuovo).
    2. Avvia l'attività: seleziona In base a una pianificazione.
    3. Impostazioni: seleziona Giornaliero.
    4. Ricorrenza ogni: inserisci 1 giorni.
    5. Ripeti attività ogni: seleziona 15 minuti.
    6. per una durata di: seleziona Sempre.
    7. Fai clic su OK.
  5. Nella scheda Azioni:
    1. Fai clic su New (Nuovo).
    2. Azione: seleziona Avvia un programma.
    3. Programma/script: inserisci powershell.exe.
    4. Aggiungi argomenti: inserisci -ExecutionPolicy Bypass -File "C:\nxlog-scripts\upload-to-gcs.ps1".
    5. Fai clic su OK.
  6. Nella scheda Condizioni:
    • Deseleziona Avvia l'attività solo se il computer è alimentato a corrente alternata.
  7. Nella scheda Impostazioni:
    • Seleziona Esegui l'attività il prima possibile dopo che l'inizio pianificato è stato mancato.
    • Seleziona Se l'attività non va a buon fine, riavvia ogni: inserisci 5 minutes.
  8. Fai clic su OK.
  9. Inserisci le credenziali dell'account che eseguirà l'attività (deve disporre dei privilegi di amministratore).
  10. Fai clic su OK.

Testare la procedura di caricamento

  1. Sul server NPS, apri Utilità di pianificazione.
  2. Nel riquadro a sinistra, espandi Libreria Utilità di pianificazione.
  3. Fai clic con il tasto destro del mouse sull'attività NXLog GCS Upload e seleziona Esegui.
  4. Attendi qualche secondo affinché l'attività venga completata.
  5. Apri il file di log all'indirizzo C:\nxlog-scripts\upload.log per verificare che il caricamento sia andato a buon fine.
  6. Vai alla console GCP > Cloud Storage > Bucket.
  7. Fai clic sul nome del bucket (nps-logs-chronicle).
  8. Vai alla cartella nps-logs/.
  9. Verifica che siano presenti file JSON con i log NPS.

Avvia il servizio NXLog

  1. Sul server NPS, apri Servizi (esegui services.msc).
  2. Individua il servizio nxlog nell'elenco.
  3. Fai clic con il tasto destro del mouse sul servizio nxlog e seleziona Start (Avvia).
  4. Verifica che lo stato del servizio sia In esecuzione.
  5. Per verificare che NXLog stia raccogliendo i log, controlla il file di log NXLog:
    • C:\Program Files\nxlog\data\nxlog.log
  6. Cerca i messaggi che indicano la raccolta riuscita dei log:

    INFO im_file: monitoring file 'C:\Windows\System32\LogFiles\IN250315.log'
    

Recuperare il account di servizio Google SecOps

Google SecOps utilizza un account di servizio univoco per leggere i dati dal tuo bucket GCS. Devi concedere a questo account di servizio l'accesso al tuo bucket.

Recupera l'email del account di servizio

  1. Vai a Impostazioni SIEM > Feed.
  2. Fai clic su Aggiungi nuovo feed.
  3. Fai clic su Configura un singolo feed.
  4. Nel campo Nome feed, inserisci un nome per il feed (ad esempio, Microsoft NPS Logs).
  5. Seleziona Google Cloud Storage V2 come Tipo di origine.
  6. Seleziona MICROSOFT_NPS come tipo di log.
  7. Fai clic su Ottieni service account. Verrà visualizzata un'email univoca del account di servizio, ad esempio:

    ```none
    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    ```
    
  8. Copia questo indirizzo email per utilizzarlo nel passaggio successivo.

  9. Fai clic su Avanti.

  10. Specifica i valori per i seguenti parametri di input:

    • URL bucket di archiviazione: inserisci l'URI del bucket GCS con il percorso del prefisso:

      gs://nps-logs-chronicle/nps-logs/
      
      • Sostituisci:
        • nps-logs-chronicle: il nome del bucket GCS.
        • nps-logs/: il percorso del prefisso/della cartella in cui sono archiviati i log.
    • Opzione di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze:
      • Mai: non elimina mai i file dopo i trasferimenti (opzione consigliata per i test).
      • Elimina file trasferiti: elimina i file dopo il trasferimento riuscito.
      • Elimina file trasferiti e directory vuote: elimina i file e le directory vuote dopo il trasferimento riuscito.
    • Età massima del file: includi i file modificati nell'ultimo numero di giorni (il valore predefinito è 180 giorni)
    • Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset
    • Etichette di importazione: l'etichetta da applicare agli eventi di questo feed
  11. Fai clic su Avanti.

  12. Controlla la nuova configurazione del feed nella schermata Finalizza e poi fai clic su Invia.

Concedi le autorizzazioni IAM al account di servizio Google SecOps

  • Il account di servizio Google SecOps deve avere il ruolo Visualizzatore oggetti Storage nel bucket GCS.
  1. Vai a Cloud Storage > Bucket.
  2. Fai clic sul nome del bucket (nps-logs-chronicle).
  3. Vai alla scheda Autorizzazioni.
  4. Fai clic su Concedi l'accesso.
  5. Fornisci i seguenti dettagli di configurazione:
    • Aggiungi entità: incolla l'email del account di servizio Google SecOps
    • Assegna i ruoli: seleziona Visualizzatore oggetti Storage.
  6. Fai clic su Salva.

Tabella di mappatura UDM

Campo log Mappatura UDM Logic
Versione additional.fields Unito agli oggetti corrispondenti, se non è vuoto
Canale additional.fields
Parole chiave additional.fields
Opcode additional.fields
Attività additional.fields
ThreadID additional.fields
EventData.%1 additional.fields
EventData.%2 additional.fields
Canale channel.value.string_value Valore copiato direttamente
EventData.%1 event_data_p1.value.string_value Valore copiato direttamente
EventData.%2 event_data_p2.value.string_value Valore copiato direttamente
Parole chiave keywords.value.string_value Valore copiato direttamente
TimeCreated metadata.event_timestamp Convertito da UNIX_MS a timestamp
EventId metadata.event_type Imposta STATUS_UNCATEGORIZED se EventId == '4400', STATUS_UPDATE se EventId == '13', altrimenti GENERIC_EVENT
EventId metadata.product_event_type Valore copiato direttamente
Opcode opcode.value.string_value Valore copiato direttamente
Computer principal.asset.hostname Valore copiato da principal.hostname
Computer principal.hostname Valore copiato direttamente
ProcessID principal.process.pid Valore copiato se non è vuoto
ID utente principal.user.windows_sid Estratto utilizzando regex per ottenere l'SID di Windows
EventId security_result.rule_name Impostato su "EventID: " + EventId
Livello security_result.severity Trasformati: INFO/Informational/Information/Normal/NOTICE in INFORMATIONAL, ERROR/Error in ERROR, WARNING/Warning in INFORMATIONAL, DEBUG in INFORMATIONAL, Critical in CRITICAL
Attività task.value.string_value Valore copiato direttamente
ThreadID thread_id.value.string_value Valore copiato direttamente
Versione version.value.string_value Valore copiato direttamente
metadata.vendor_name metadata.vendor_name Impostato su "Microsoft"
ProviderName metadata.product_name Valore copiato direttamente

Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.