Suchen Sie mit PowerShell nach offenen (abhörenden) Ports

Admin

In PowerShell können Sie das verwenden Test-NetConnection Cmdlet, um zu überprüfen, ob ein Port auf einem Remotecomputer verfügbar (offen) ist. Mit diesem Cmdlet können Sie die Antwort und Verfügbarkeit eines Remote-Servers oder eines Netzwerkdienstes überprüfen, testen, ob der TCP-Port durch eine Firewall blockiert ist, die ICMP-Verfügbarkeit und das Routing überprüfen. In der Tat, Test-NetConnection ersetzt mehrere beliebte Netzwerkadministrationstools wie z ping, tracert, telnet, pathping, TCP-Port-Scanner usw.

Inhalt:

  • Suchen Sie mit Test-NetConnection nach einem offenen TCP-Port
  • PowerShell: Auf mehreren Hosts nach offenen Ports suchen
  • Einfacher TCP/IP-Port-Scanner in PowerShell
  • So listen Sie offene Ports unter Windows mit PowerShell auf

Suchen Sie mit Test-NetConnection nach einem offenen TCP-Port

Mit dem Cmdlet Test-NetConnection können Sie nur TCP-Ports überprüfen. Um beispielsweise zu überprüfen, ob TCP-Port 25 (das SMTP-Protokoll) auf dem Remote-Mailserver geöffnet ist:

Test-NetConnection -ComputerName ny-msg01 -Port 25

Notiz. Sie können nur eine TCP-Port-Konnektivität testen, indem Sie das Cmdlet Test-NetConnection verwenden. Sie können das Cmdlet jedoch nicht verwenden, um die Verfügbarkeit der Remote-UDP-Ports zu überprüfen.

Der Befehl Test-NetConnection hat den Alias TNC. Die verkürzte Version desselben Befehls sieht folgendermaßen aus:

TNC ny-msg01 -Port 25

Test-NetConnection überprüft den Remote-TCP-Port

Schauen wir uns das Ergebnis des Befehls an:

Computername: ny-msg01. RemoteAddress: 10.20.1.7. RemotePort: 25. InterfaceAlias: CORP. Quelladresse: 10.20.1.79. PingSucceeded: True. PingReplyDetails (RTT): 0 ms. TcpTestSucceeded: True. 

Wie Sie sehen, löst das Cmdlet den Servernamen in eine IP-Adresse auf und überprüft die ICMP-Antwort (ähnlich wie ping) und prüft die Antwort vom TCP-Port (Portverfügbarkeit). Der angegebene Server antwortet über ICMP (PingSucceeded = True) und der TCP-Port 25 ist offen (RemotePort=25, TcpTestSucceeded= True).

Notiz. Wenn der Befehl zurückkehrt PingSucceeded=Falsch Und TcpTestSucceeded= True, bedeutet dies höchstwahrscheinlich, dass die ICMP-Echo-Anfrage (Ping) auf dem Remote-Computer deaktiviert ist.

Wenn Sie das ausführen Test-NetConnection ohne Parameter, prüft es, ob der Computer mit dem Internet verbunden ist (überprüft die Verfügbarkeit von internetbeacon.msedge.netGastgeber).

Powershell: Überprüfen Sie den Internetverbindungsstatus unter Windows

Sie können Folgendes hinzufügen:Informationsebene detailliert Option zum Anzeigen detaillierter Informationen beim Überprüfen eines Remote-TCP-Ports:

TNC 192.168.32.101 -Port 3389 -InformationLevel Detailed

Test-NetConnection: detaillierten Verbindungsstatus auflisten

Das Cmdlet hat einen besonderen Parameter –CommonTCPPort, mit dem Sie den Namen eines bekannten Netzwerkprotokolls (HTTP, RDP, SMB, WINRM).

Um beispielsweise die Verfügbarkeit eines HTTP-Webservers zu überprüfen, können Sie den Befehl verwenden:

Test-NetConnection -ComputerName woshub.com -CommonTCPPort HTTP

Oder prüfen Sie die Verfügbarkeit eines Standard-RDP-Port (TCP/3389):

Test-NetConnection ny-rds1 –CommonTCPPort RDP

Sie können alle Parameter auflisten, die das Cmdlet Test-NetConnection zurückgibt:

Test-NetConnection ny-man01 -port 445|Format-List *

Testen Sie alle Verbindungsstatuseigenschaften von NetConnection

Wenn Sie nur sehen müssen, ob der Port verfügbar ist, können Sie dies schneller überprüfen:

TNC ny-msg1 -Port 25 -InformationLevel Quiet

Das Cmdlet kehrt zurück True, was bedeutet, dass der Remote-TCP-Port geöffnet ist.

TNC ny-msg1 -Port 25 -InformationLevel Ruhe
Spitze. In früheren Versionen von Windows PowerShell (vor Version 4.0) konnten Sie die Verfügbarkeit eines Remote-TCP-Ports mit dem folgenden Befehl überprüfen:

(New-Object System.Net.Sockets.TcpClient).Connect('ny-msg01', 25)

(Neues Objektsystem. Netz. Steckdosen. TcpClient).Connect

Sie können das Cmdlet Test-NetConnection verwenden, um eine Route zu einem Remoteserver zu verfolgen, indem Sie Folgendes verwenden:TraceRoute Parameter (ähnlich dem integrierten tracert Befehl in Windows). Sie können die maximale Anzahl von Hops während der Routenprüfung begrenzen, indem Sie die verwenden -Hopfen Parameter.

Test-NetConnection ny-man01 –TraceRoute

Das Cmdlet hat eine zusammenfassende Netzwerkzugriffsverzögerung in Millisekunden zurückgegeben (PingReplyDetails (RTT): 41 ms) sowie alle IP-Adressen der Router auf dem Weg zum Zielhost.

Test-NetConnection: Powershell TraceRoute

PowerShell: Auf mehreren Hosts nach offenen Ports suchen

Mit PowerShell können Sie die Verfügbarkeit eines bestimmten Ports auf mehreren Remotecomputern prüfen. Speichern Sie die Liste der Hostnamen oder IP-Adressen in einer Nur-Text-Datei mit dem Namen servers.txt.

Ihre Aufgabe besteht beispielsweise darin, in einer Liste von Servern Hosts zu finden, bei denen der TCP/25-Port nicht antwortet oder geschlossen ist:

Get-Content c:\PS\list_servers.txt | where { -NOT (Test-Netconnection $_ -Port 25 -InformationLevel Quiet)}| Format-Table -AutoSize

Sie können ein einfaches Überwachungs-PowerShell-Skript verwenden, das die Verfügbarkeit von Remote-Servern überprüft und zeigt eine Popup-Benachrichtigung an wenn einer der Server nicht verfügbar ist.

Sie können beispielsweise die Verfügbarkeit grundlegender Dienste auf allen Domänencontrollern während eines überprüfen AD-Gesundheitscheck (Eine DC-Liste erhalten Sie mit der Get-ADDomainController-Cmdlet). Schauen wir uns die folgenden Dienste auf dem DC an (es gibt ein ähnliches „Domäne und Trusts„Herrschaft in der PortQry Werkzeug):

  • RPC – TCP/135
  • LDAP – TCP/389
  • LDAP – TCP/3268
  • DNS – TCP/53
  • Kerberos – TCP/88
  • SMB – TCP/445

$Ports = "135","389","636","3268","53","88","445","3269", "80", "443"
$AllDCs = Get-ADDomainController -Filter * | Select-Object Hostname, Ipv4address
ForEach($DC in $AllDCs){
Foreach ($P in $Ports){
$check=Test-NetConnection $DC.Ipv4address -Port $P -WarningAction SilentlyContinue
If ($check.tcpTestSucceeded -eq $true)
{Write-Host $DC.hostname $P -ForegroundColor Green -Separator " => "}
else
{Write-Host $DC.hostname $P -Separator " => " -ForegroundColor Red}
}
}

Das Skript überprüft die angegebenen TCP-Ports auf den Domänencontrollern. Wenn einer der Ports nicht verfügbar ist, markiert es ihn rot (Sie können dies tun). Führen Sie dieses PowerShell-Skript als Windows-Dienst aus).

poweshell: Test auf offene und geschlossene Ports auf einem Active Directory-Domänencontroller

Einfacher TCP/IP-Port-Scanner in PowerShell

Mit PowerShell können Sie einen einfachen IP-Scanner implementieren, der Remote-Hosts oder IP-Subnetze nach offenen/geschlossenen TCP-Ports durchsucht.

So scannen Sie den IP-Adressbereich zwischen 192.168.1.100 und 192.168.1.150 und zeigen Computer an, auf denen Port 3389 geöffnet ist:

foreach ($ip in 100..150) {Test-NetConnection -Port 3389 -InformationLevel "Detailed" 192.168.1.$ip}

Scannen Sie einen Bereich von TCP-Ports (von 1 bis 1024) auf einem Remote-Host:

foreach ($port in 1..1024) {If (($a=Test-NetConnection srvfs01 -Port $port -WarningAction SilentlyContinue).tcpTestSucceeded -eq $true){ "TCP port $port is open!"}}

PowerShell-Netzwerk-Port-Scanner-Skript

So listen Sie offene Ports unter Windows mit PowerShell auf

Benutzen Sie die Get-NetTCPConnection Cmdlet zum Auflisten der Ports, die auf dem lokalen Computer geöffnet sind (dies ist das PowerShell-Äquivalent von NETSTAT). Eine Liste aller offenen TCP-Ports auf dem Computer kann wie folgt angezeigt werden:

Get-NetTcpConnection -State Listen | Select-Object LocalAddress, LocalPort| Sort-Object -Property LocalPort | Format-Table

Powershell: Offene Überwachungsports in Windows auflisten
Sie können auch die verwenden Get-NetTCPConnection-Cmdlet zum Auflisten aktiver TCP/IP-Verbindungen.

Wenn Sie es herausfinden wollen welches Programm (Prozess) auf einem bestimmten Port lauscht Verwenden Sie auf Ihrem Computer den folgenden Befehl (wobei 443 eine Portnummer ist, die Sie überprüfen möchten):

Get-Process -Id (Get-NetTCPConnection -LocalPort 443).OwningProcess | ft Id, ProcessName, UserName, Path

PowerShell: QR-Code für Wi-Fi-Netzwerk in Windows 10 generieren
PowerShell: QR-Code für Wi-Fi-Netzwerk in Windows 10 generieren

Mit PowerShell können Sie QR-Codes generieren, die Sie mit Ihren Freunden oder Kollegen teilen kö...

PowerShell: Zertifikatbasierte Authentifizierung für Exchange Online (Azure) konfigurieren
PowerShell: Zertifikatbasierte Authentifizierung für Exchange Online (Azure) konfigurieren

Microsoft Entra ID (ehemals Azure AD) unterstützt die zertifikatbasierte Authentifizierung (CBA)....

Zabbix: So erhalten Sie Daten aus PowerShell-Skripten
Zabbix: So erhalten Sie Daten aus PowerShell-Skripten

In diesem Artikel befassen wir uns mit der Konfiguration des Zabbix-Agenten zum Abrufen von Überw...