/
/

Come verificare le porte di rete aperte sui client remoti con PowerShell e registrare i risultati

di Team Ninja
How to Audit Open Network Ports Across Remote Clients Using PowerShell and Log Results blog banner image

Riepilogo

Questo post del blog NinjaOne offre un elenco completo di comandi CMD di base e un’analisi approfondita dei comandi di Windows con oltre 70 comandi cmd essenziali sia per i principianti che per gli utenti avanzati. La guida si propone si piegare in modo pratico i comandi del prompt dei comandi per la gestione dei file, la navigazione nelle directory, la risoluzione dei problemi di rete, le operazioni su disco e l’automazione, con esempi reali per migliorare la produttività. Che tu voglia imparare i comandi cmd fondamentali o padroneggiare gli strumenti avanzati della CLI di Windows, questa guida ti aiuterà a utilizzare il Prompt dei comandi in modo più efficace.

Punti chiave

  • Automatizza gli audit delle porte con PowerShell: usa Get-NetTCPConnection, Get-NetUDPEndpoint e Invoke-Command per analizzare le porte aperte in locale o da remoto ed esportare i log in CSV.
  • Centralizza i risultati nel Registro di sistema: salva i dati dell’audit e i timestamp in HKLM:\SOFTWARE\<CompanyName>\PortAudit per il monitoraggio continuo e gli avvisi.
  • Applica la sicurezza con le GPO: usa i Criteri di gruppo per standardizzare le regole firewall e includi le scansioni UDP per una visibilità completa della rete.
  • Riduci rischi e falsi positivi: esegui gli script con privilegi di amministratore, filtra gli indirizzi di loopback e confronta i risultati con le regole del firewall.

Una porta di rete aperta verso internet e non monitorata è una vulnerabilità che prima o poi verrà sfruttata ed espone i client remoti a rischi inutili. Verificare regolarmente l’esposizione delle porte è fondamentale per applicare le policy di sicurezza e garantire che siano raggiungibili solo i servizi autorizzati.

In questa guida imparerai a usare PowerShell per automatizzare questi controlli su larga scala, ottenendo una visibilità approfondita senza strumenti costosi.

Individua le porte di rete aperte a rischio e proteggi gli endpoint remoti.

Scopri di più sul monitoraggio della rete di NinjaOne.

📌Strategie di distribuzione consigliate:

Fai clic per scegliere un metodo

💻
Ideale per singoli utenti
💻💻💻
Ideale per le aziende enterprise
Metodo 1: PowerShell✓✓
Metodo 2: Registro di sistema✓✓
Metodo di supporto, opzione 1: tramite GPO✓
Metodo di supporto, opzione 2: tramite Get-NetUDPEndpoint✓✓

Prima di procedere, ti consigliamo di leggere ⚠️ Aspetti a cui prestare attenzione.

Come verificare le porte di rete aperte con un audit in PowerShell

Controllare regolarmente le porte aperte è una pratica fondamentale per mantenere una rete sicura. Ti aiuta a individuare e chiudere le potenziali vulnerabilità prima che un malintenzionato possa usarle contro di te.

📌 Situazione d’uso: esegui questo controllo in alcune situazioni chiave: quando configuri un nuovo computer per verificare che sia sicuro, con cadenza regolare (per esempio ogni mese), dopo l’installazione di nuovo software e quando sospetti un problema di sicurezza, per cercare tracce di un intruso.

📌 Prerequisiti: per verificare se le porte TCP e UDP sono aperte nella tua rete ti servono poche cose:

  • Dispositivi Windows recenti (Windows 10/11 o Windows Server).
  • Accesso come amministratore su quelle macchine.
  • PowerShell Remoting (WinRM) abilitato, oppure uno strumento RMM come NinjaOne, per eseguire i comandi.

Guarda Come verificare le porte di rete aperte sui client remoti con PowerShell e registrare i risultati: un utile riferimento visivo.

Metodo 1: verificare le porte di rete aperte con PowerShell

Il modo più semplice per sapere quali porte sono aperte su una macchina Windows 11 è usare i comandi nativi di PowerShell, che restituiscono dati chiari e immediatamente utilizzabili.

Procedura passo passo:

  1. Apri PowerShell (amministratore) oppure Terminale Windows (amministratore).
  2. Esegui questo comando per ottenere tutte le connessioni TCP in ascolto e formattare chiaramente l’output:
Get-NetTCPConnection -State Listen | Select-Object LocalAddress, LocalPort, OwningProcess, @{Name=”ProcessName”; Expression={(Get-Process -Id $_.OwningProcess).Name}}

Questo comando filtra solo le porte nello stato Listen e mostra l’indirizzo IP locale, il numero di porta, l’ID del processo (PID) e il nome dell’eseguibile.

  1. Per ottenere le stesse informazioni sulle porte UDP (che sono senza connessione), usa il cmdlet Get-NetUDPEndpoint:
Get-NetUDPEndpoint | Select-Object LocalAddress, LocalPort, OwningProcess, @{Name=”ProcessName”; Expression={(Get-Process -Id $_.OwningProcess).Name}}
  1. Per conservare i risultati dell’audit a fini di reporting, esporta i dati in un file CSV. Questo comando unisce i risultati TCP e UDP in un unico log:
$Output = @()
$Output += Get-NetTCPConnection -State Listen | Select-Object @{Name="Protocol"; Expression={"TCP"}}, LocalAddress, LocalPort, OwningProcess, @{Name="ProcessName"; Expression={(Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).Name}}
$Output += Get-NetUDPEndpoint | Select-Object @{Name="Protocol"; Expression={"UDP"}}, LocalAddress, LocalPort, OwningProcess, @{Name="ProcessName"; Expression={(Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).Name}}
$Output | Export-Csv -Path "C:\Audit\LocalPortAudit.csv" -NoTypeInformation

💡Nota: questo comando genera un file chiamato LocalPortAudit.csv nella cartella C:\Audit. La console non mostra alcun output, perché tutti i risultati vengono scritti direttamente nel file CSV.

  1. Verifica se una porta di rete è aperta su un client remoto usando PowerShell Remoting (WinRM).

Usa il cmdlet Invoke-Command per eseguire l’audit su uno o più PC remoti. Questo esempio controlla un computer chiamato CLIENT-PC-01.

Invoke-Command -ComputerName CLIENT-PC-01 -ScriptBlock {
Get-NetTCPConnection -State Listen | Select-Object LocalAddress, LocalPort, OwningProcess, @{Name=”ProcessName”; Expression={(Get-Process -Id $_.OwningProcess).Name}}
} | Export-Csv "\\YourServer\AuditLogs\CLIENT-PC-01-Ports.csv" -NoTypeInformation

Al termine della procedura avrai un file di log dettagliato (CSV) con tutte le porte TCP e UDP aperte sulla macchina di destinazione, insieme all’applicazione associata e al relativo ID di processo. Questo log è l’elenco di riferimento per le tue analisi.

💡Nota: sostituisci CLIENT-PC-01 con il nome effettivo del computer da controllare e modifica il percorso di esportazione (ad esempio \\YourServer\AuditLogs\...) indicando una cartella esistente e accessibile nel tuo ambiente.

Metodo 2: usare il Registro di sistema per la registrazione dei log e il monitoraggio dello stato

Salvare i risultati dell’audit nel Registro di sistema di Windows crea una traccia permanente e facilmente consultabile dagli strumenti di monitoraggio centralizzato.

Questo metodo scrive i dati principali del tuo audit PowerShell – come il timestamp e il numero di porte aperte – in una posizione dedicata del registro (HKLM). Non configura funzionalità di sistema, ma usa il registro come semplice database di informazioni di stato.

Procedura passo passo:

  1. Crea una chiave di registro personalizzata. Esegui i seguenti script PowerShell sulla macchina Windows 11 di destinazione: eseguiranno l’audit e salveranno un riepilogo nel Registro di sistema.

Esegui l’audit delle porte:

$OpenTCPPorts = Get-NetTCPConnection -State Listen | Where-Object { $_.LocalAddress -notin @('127.0.0.1', '::1') }
$OpenUDPPorts = Get-NetUDPEndpoint | Where-Object { $_.LocalAddress -notin @('127.0.0.1', '::1') }
$TotalOpenPorts = $OpenTCPPorts.Count + $OpenUDPPorts.Count
  • Crea una chiave di registro in cui salvare i risultati (il parametro -Force crea le eventuali cartelle padre mancanti):

New-Item -Path "HKLM:\SOFTWARE\YourCompanyName\PortAudit" -Force

💡Nota: prima di eseguire il comando, sostituisci YourCompanyName con un nome significativo per la tua organizzazione.

  • Salva i dati:
Set-ItemProperty -Path "HKLM:\SOFTWARE\YourCompanyName\PortAudit" -Name "LastAuditTime" -Value (Get-Date -Format "yyyy-MM-dd HH:mm:ss")
Set-ItemProperty -Path "HKLM:\SOFTWARE\YourCompanyName\PortAudit" -Name "OpenPortsCount" -Value $TotalOpenPorts
  1. Convalida i dati. Puoi verificare rapidamente che i dati siano stati scritti correttamente usando il Prompt dei comandi:

reg query "HKLM\SOFTWARE\YourCompanyName\PortAudit"

  1. Integra il tutto con strumenti di monitoraggio come NinjaOne o con un’attività pianificata. Ti aiuterà a verificare se una porta di rete è aperta leggendo il valore OpenPortsCount.
    • Un valore superiore a una soglia di riferimento può generare automaticamente un avviso perché un tecnico possa approfondire.

Al termine di questa procedura, i tuoi client remoti avranno una posizione standard nel registro con i risultati dell’ultimo audit. In questo modo il tuo sistema di monitoraggio centrale può raccogliere all’istante queste informazioni di stato da migliaia di macchine.

Metodi di supporto per standardizzare le policy sulle porte aperte

Usa i Criteri di gruppo per controllare in modo proattivo quali porte possono restare aperte, garantendo un livello di sicurezza uniforme su tutti i dispositivi Windows 11.

📌 Situazione d’uso: applica queste impostazioni quando definisci un nuovo baseline di sicurezza o per far rispettare gli standard di conformità in tutta la rete. È una misura preventiva, non solo di rilevamento.

📌 Prerequisiti: prima di procedere, assicurati di avere un dominio Windows Active Directory, Windows 10/11 Pro, Enterprise o Education su tutti i client e le autorizzazioni per creare e gestire i Criteri di gruppo.

Opzione 1: usare una GPO per l’hardening e la standardizzazione delle regole sulle porte aperte

Usa i Criteri di gruppo per definire e applicare in modo proattivo quali porte possono restare aperte, ottenendo una configurazione coerente e sicura su tutta la rete.

📌 Situazione d’uso: questo metodo distribuisce in modo centralizzato le regole del firewall da un domain controller a tutti i client Windows 11, prevalendo su qualsiasi impostazione locale. È efficace perché applica il principio del privilegio minimo, garantendo che solo i servizi approvati possano comunicare.

Procedura passo passo:

  1. Raggiungi le impostazioni del firewall nella GPO.
    • Sul domain controller, apri la Console Gestione Criteri di gruppo (gpmc.msc).
    • Crea una nuova GPO o modificane una esistente.
    • Vai su Configurazione del computer > Criteri > Impostazioni di Windows > Impostazioni sicurezza > Windows Firewall con sicurezza avanzata > Regole connessioni in entrata.
  2. Crea e configura le regole.
    • Fai clic con il pulsante destro nel riquadro Regole connessioni in entrata e seleziona Nuova regola….
    • Usa la procedura guidata per creare regole che:
      • Blocchino l’RDP in entrata (porta 3389), a meno che non venga creata una regola specifica che lo consenta da una VLAN di gestione sicura o tramite VPN.
      • Neghino l’accesso ai servizi guest e ai protocolli legacy e insicuri come SMBv1.
      • Applichino eccezioni basate sulle applicazioni (ad esempio consentendo %ProgramFiles%\YourApp\yourapp.exe) invece di aprire ampi intervalli di porte).
      • Usino, quando possibile, l’opzione “Consenti solo se sicura” per limitare le connessioni ai programmi con firma digitale.

Dopo aver collegato questa GPO alla tua unità organizzativa, tutti i computer interessati riceveranno e applicheranno automaticamente queste regole firewall.

I tentativi di accesso non autorizzato sulle porte indicate verranno bloccati immediatamente, riducendo in modo significativo la superficie di attacco. Il tuo ambiente avrà così una configurazione uniforme e sottoposta ad hardening, molto più resistente ai movimenti laterali e agli attacchi.

Opzione 2: uso facoltativo di Get-NetUDPEndpoint per coprire le porte UDP

Un audit completo delle porte deve includere gli endpoint UDP, che possono nascondere rischi di sicurezza trascurati. Questo metodo usa il cmdlet Get-NetUDPEndpoint, che interroga lo stack di rete di Windows per elencare tutti i listener UDP attivi.

📌 Situazione d’uso: includi sempre un audit UDP nei controlli periodici del baseline di sicurezza e in qualsiasi audit completo delle porte, così da avere un quadro esaustivo di tutti i servizi esposti alla rete su un dispositivo Windows 11.

Procedura passo passo:

  1. Verifica i listener UDP.

Apri una finestra PowerShell con privilegi elevati ed esegui il comando seguente per vedere tutte le porte UDP aperte e i processi che le utilizzano:

Get-NetUDPEndpoint | Select-Object LocalAddress, LocalPort, OwningProcess, @{Name=”ProcessName”; Expression={(Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).Name}}
  1. Unisci i risultati TCP e UDP in un unico report.

Per un audit completo, unisci i risultati delle scansioni TCP e UDP in un unico report. Lo script seguente svolge questa operazione e salva tutte le informazioni in un file CSV.

  • Ottieni tutte le porte TCP in ascolto:
$tcp = Get-NetTCPConnection -State Listen | Where-Object { $_.LocalAddress -notin @('127.0.0.1', '::1') } | Select-Object @{Name="Protocol"; Expression={"TCP"}}, LocalAddress, LocalPort, OwningProcess, @{Name="ProcessName"; Expression={(Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).Name}}
  • Ottieni tutti gli endpoint UDP:
$udp = Get-NetUDPEndpoint | Where-Object { $_.LocalAddress -notin @('127.0.0.1', '::1') } | Select-Object @{Name="Protocol"; Expression={"UDP"}}, LocalAddress, LocalPort, OwningProcess, @{Name="ProcessName"; Expression={(Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).Name}}
  • Unisci i risultati ed esportali in un file CSV:
$tcp + $udp | Export-Csv -Path "C:\Audit\Full_Port_Audit_Report.csv" -NoTypeInformation

Al termine della procedura avrai un unico file di log consolidato che descrive in dettaglio ogni porta TCP e UDP aperta sul sistema.

Questa visione d’insieme è essenziale per un hardening efficace della sicurezza: ti permette di individuare e approfondire qualsiasi listener UDP non autorizzato con la stessa efficacia di uno TCP, rendendo davvero completo il tuo audit delle porte aperte.

⚠️ Aspetti a cui prestare attenzione

Questa sezione illustra le possibili difficoltà da considerare quando segui questa guida.

RischiPossibili conseguenzeCome rimediare
1. WinRM non abilitato o non raggiungibileL’impossibilità di eseguire comandi PowerShell remoti blocca gli audit automatizzati su tutta la rete.Abilita PSRemoting tramite GPO oppure esegui Enable-PSRemoting -Force sul client di destinazione. Verifica che il firewall di Windows consenta la porta 5985 (HTTP) o 5986 (HTTPS).
2. Esecuzione degli script senza privilegi elevatiDati dell’audit incompleti: alcune porte critiche potrebbero non essere rilevate e i processi potrebbero non essere risolti, dando un falso senso di sicurezza.Esegui sempre PowerShell come amministratore. Per l’esecuzione remota, assicurati che il contesto (ad esempio l’agente RMM) disponga dei privilegi SYSTEM o di amministratore.
3. Regole firewall GPO troppo restrittiveMalfunzionamento dei Criteri di gruppo dovuto al blocco di porte essenziali (RPC, SMB); perdita diffusa di connettività di rete e di accesso amministrativo
  • Soluzione in locale: accedi localmente ed esegui gpupdate /force oppure netsh advfirewall reset.
  • Soluzione dal DC: disabilita la GPO problematica dal domain controller.
4. Errori di accesso negato al Registro di sistemaImpossibilità di scrivere i dati di riepilogo dell’audit in HKLM:, con conseguente blocco del monitoraggio e del reporting centralizzatiAssicurati che lo script venga eseguito in un contesto con privilegi sufficienti (ad esempio l’account LocalSystem tramite uno strumento RMM). Verifica manualmente le autorizzazioni sulla chiave di registro.
5. Terminazione di un processo basandosi solo sulla sua portaInterruzione di un’applicazione o di un servizio di sistema critico, con tempi di inattività e possibile perdita di datiRiavvia il servizio interrotto o riavvia la macchina. Verifica sempre il nome e la funzione del processo prima di intervenire.
6. Esclusione delle porte UDP dall’auditEsposizioni di sicurezza critiche non rilevate, perché malware e servizi non autorizzati usano spesso UDP per comunicare ed esfiltrare datiRipeti l’audit usando il cmdlet Get-NetUDPEndpoint e includilo in tutti i controlli di baseline futuri.

Aspetti chiave per ottimizzare la strategia di audit delle porte

Una strategia di audit delle porte efficace richiede una pianificazione accurata, al di là della semplice esecuzione dei comandi.

Scalabilità degli audit remoti

Per sapere quali porte sono aperte in tutta la rete devi automatizzare il processo. Usa Invoke-Command di PowerShell per agire su un elenco di computer, oppure sfrutta uno strumento RMM come NinjaOne per distribuire lo script di audit su tutti gli endpoint contemporaneamente.

In questo modo puoi raccogliere un report centralizzato da centinaia di dispositivi in pochi minuti, rendendo praticabile un audit regolare delle porte aperte.

Ridurre al minimo i falsi positivi

Non tutte le porte aperte sono una vulnerabilità. Gli indirizzi di loopback interni (127.0.0.1, ::1) indicano servizi che comunicano con la macchina locale e spesso sono innocui.

Filtrali nei tuoi script per concentrare il report sulle porte associate agli indirizzi IP fisici della macchina, che sono esposte alla rete e rappresentano un problema di sicurezza più rilevante.

Tenere conto delle discrepanze con il firewall

Una porta aperta su un dispositivo non significa sempre che sia raggiungibile da internet. Un firewall di rete a monte o lo stesso Windows Firewall del dispositivo potrebbero bloccare l’accesso dall’esterno.

L’audit ti dice che cosa è in ascolto: devi correlare questo dato con le regole del firewall per capire che cosa è davvero esposto. Verifica sempre i risultati critici.

Stabilire una cadenza regolare

Un singolo audit è solo una fotografia. Per mantenere la sicurezza nel tempo, esegui questi controlli con cadenza regolare, per esempio ogni mese o in linea con i cicli mensili di patch. Così individui rapidamente eventuali nuovi servizi non autorizzati e puoi verificare che le distribuzioni software recenti non abbiano introdotto esposizioni di rete impreviste.

Individua le porte aperte prima degli attaccanti con il monitoraggio di rete automatizzato di NinjaOne.

➤ Iscriviti per una prova gratuita di 14 giorni.

Come NinjaOne semplifica l’audit delle porte

NinjaOne si integra direttamente nel tuo flusso di lavoro di audit delle porte per automatizzarlo e semplificarlo.

  • Distribuzione semplice degli script: invia script PowerShell personalizzati per verificare quali porte sono aperte su tutti gli endpoint da una dashboard centrale.
  • Risultati centralizzati: salva automaticamente i risultati dell’audit, come il numero di porte, in un registro unificato per semplificare reporting e revisione.
  • Avvisi proattivi: attiva notifiche immediate se su un dispositivo vengono rilevate porte non autorizzate (ad esempio SMBv1, Telnet).
  • Report di conformità: crea report pianificati sullo stato delle porte aperte per le revisioni con i clienti e gli audit di conformità.
  • Priorità di intervento: contrassegna automaticamente i dispositivi con esposizioni ad alto rischio, così un tecnico può intervenire subito.

Guida rapida

NinjaOne offre diversi modi per verificare le porte di rete aperte sui client remoti:

1. Script integrato per il monitoraggio delle porte

Esiste uno script integrato chiamato “Search for Listening and Established Ports” che può:

  • Generare avvisi sulle porte specificate che risultano in ascolto o stabilite
  • Salvare facoltativamente i risultati in un campo personalizzato

2. Funzionalità PowerShell

Puoi creare script PowerShell personalizzati per:

  • Usare netstat per verificare le porte aperte
  • Registrare i risultati nei log attività o nei campi personalizzati
  • Eseguire audit delle porte di rete su più client remoti

3. Funzionalità della Network Management Solution (NMS)

La Network Management Solution (NMS) di NinjaOne offre:

  • Controlli sullo stato delle porte
  • Monitoraggio di porte specifiche
  • Possibilità di creare condizioni sullo stato delle porte nelle policy

Proteggi la rete gestendo le porte aperte

Verificare regolarmente le porte di rete aperte sui client è una difesa fondamentale contro accessi non autorizzati e potenziali violazioni. Questa guida propone metodi pratici per controllare e gestire le porte aperte.

Applicando questi passaggi trasformi rischi sconosciuti in risorse gestite, rafforzando in modo significativo la tua postura di sicurezza e garantendo la conformità in tutto l’ambiente.

Argomenti correlati

FAQs

Puoi usare i cmdlet Get-NetTCPConnection e Get-NetUDPEndpoint in PowerShell per elencare tutte le porte TCP e UDP attive, insieme ai processi associati.

Esegui i comandi PowerShell da remoto con Invoke-Command e PowerShell Remoting (WinRM), oppure automatizza il processo su larga scala con una piattaforma RMM come NinjaOne.

Esporta i risultati in un file CSV oppure salva i dati principali – come il numero di porte aperte e i timestamp – nel Registro di sistema di Windows per il monitoraggio centralizzato.

Le porte UDP possono esporre vulnerabilità nascoste, spesso sfruttate da malware o servizi non autorizzati: per questo è fondamentale includerle in ogni audit.

I Criteri di gruppo (GPO) ti permettono di applicare regole firewall e limitare l’accesso non autorizzato alle porte su tutti i dispositivi del dominio, garantendo una sicurezza di rete uniforme.

I problemi più comuni sono WinRM disabilitato, privilegi di amministratore mancanti o regole firewall troppo restrittive: ognuno può impedire l’esecuzione remota degli script o causare una raccolta dati incompleta.

Ti potrebbe interessare anche

Pronto a semplificare le parti più complesse dell'IT?