Windows 10

Моніторинг відкритих з'єднань TCP/IP за допомогою PowerShell

Моніторинг відкритих з'єднань TCP/IP за допомогою PowerShell

Багато адміністраторів, щоб відобразити інформацію про мережеві з'єднання TCP/IP, відкриті порти TCP у Windows використовуються для використання утиліти консолі Неупереджено або графічний Tcpview. У PowerShell замінити утиліту Netstat, ви можете використовувати команду Get-netcpconnection, що може бути досить гнучким для отримання інформації про активні мережеві з'єднання в Windows, відкриті мережеві порти та запущені процеси, які використовують протокол TCP. Через те, що PowerShell є об'єктно-орієнтованою мовою, ви можете цілком зручно зробити складні сценарії для отримання інформації та моніторингу відкритих портів, процесів та встановлених мережевих з'єднань.

Спробуйте запустити команду Get-netcpconnection Без параметрів.

Команда за аналогією з NetStat показала список усіх активних з'єднань, що вказують на локальну та видалену адресу, порт, стан з'єднання (прослуховування, встановлений Інтернет, час, пов'язаний, закритий, синрезед, синсент, проміжок) та ідентифікатор процесу (PID), що Використовує цей TCP (PID), який використовує це TCP -з'єднання.

Ви можете відобразити список локальних портів, які підкоряються (відкриті) на вашому комп’ютері:

Get -nettcpconnection -state listen | Виберіть -Object -Property LocalAddress, LocalPort, RemoteAddress, RemotePort, State | Сортування -Object LocalPort | ft

Для отримання інформації про використання протоколу UDP, відкритих портів використовується командир Get-netudpendpoint .

Можуть відображатися лише зовнішні (Інтернет) підключення:

Отримати -nettcpconnection -AppliedSetting Інтернет

Для всіх мережевих TCP -з'єднань ви можете отримати назви DNS віддалених хостів та назв обробки.

Get-netcpconnection -state встановлений | Виберіть -Object-Property localaddress, localport,@name = 'RemoteHostName'; exmanse = (Resolve-dnsname $ _.Remoteaddress).Namehost, remoteaddress, remoteport, state,@name = 'процес.Власнепроцеси). PATH, OFFLOADSTATE, TRATERTIME | ft

Цей сценарій PowerShell завершив роздільну здатність всіх адрес IP -хоста в DNS, а для кожного з'єднання вказувало назву процесу, який його використовує.

Під назвою PID батьківського процесу ви можете відображати список відповідних служб Windows, які використовують мережу:

Get-wmiobject win32_service | Де -Object -Property ProcessId -in (get -nettcpconnection).Власнепроцеси | Що -Object -Property State -EQ працює | Формат-таблиця процесиди, назва, підпис, startMode, стан, статус, ім'я шляху

Можуть відображатися лише мережеві з'єднання, які ініціюються певним процесом. Для цього ви можете використовувати такий сценарій PowerShell:

$ TrackProcessName = "*Firefox*"
$ InderConnements = get-netcpconnection -state встановлений | Вибір-он-контроль Localport,@name = 'RemoteHostName'; exmanse = (gig.Remoteaddress).Namehost, remoteaddress, remoteport, state,@name = 'процес.Власнепроцеси). PATH, OFFLOADSTATE, TRATERTIME
Foreach ($ з'єднання в $ estable

Якщо ($ з'єднання.ProcessName -подібне $ trackProcessName)

$ Підключення | ft

Шкала командира get-netcpconnection дуже широка. Наприклад, ви можете створити простий сценарій PowerShell, який повинен контролювати встановлення з'єднання з певної IP -адреси до вказаного локального порту та відобразити повідомлення про спливаюче вікно адміністратора.

У наступному прикладі сценарій PowerShell перевіряє, коли з'єднання з’являється із вказаної IP -адреси через порто 3389 порту 3389. Якщо таке з'єднання з’явиться у списку, воно відображатиме повідомлення про спливаюче вікно та ввійде дату та час підключення до текстового файлу:

$ Trackingip = "192.168.10.50 "
$ Trackingport = "3389"
$ log = "C: \ ps \ rdp_connection_log.Txt "
$ Inderconnements = get -nettcpconnection -state встановлено
Foreach ($ з'єднання в $ estable

Якщо (($ підключення.Remoteaddress -eq $ trackingip) -and ($ підключення.Localport -eq $ trackingport))

Додати -тип -ssmblyname System.Вікна.Форми
$ Global: balmsg = new -Object System.Вікна.Форми.Повідомлення
$ Path = (get -process -id $ pid).Шлях
$ Balmsg.Ікона = [система.Малювання.Значок] :: extractassSsocativeIcon ($ PATH)
$ Balmsg.Balloontipicon = [система.Вікна.Форми.ToolTipicon] :: Попередження
$ Balmsg.BalloontipText = "Ми підключилися до вашого комп'ютера через RDP C $ ($ Connection.Remoteaddress) "
$ Balmsg.BalloontiTitle = "Нове з'єднання RDP з $ ($ Connection.Remoteaddress) "
$ Balmsg.Видимий = $ true
$ Balmsg.Showballoontip (10 000)
(Початок).ToString () + " + $ підключення.Remoteaddress + 'встановлене rdp -з'єднання' >> $ log

Аналогічно, ви можете відстежувати та увійти в мережеві з'єднання відповідно до будь -якого іншого протоколу, таких як SSH, SMB, FTP, SMTP тощо.D. Такий сценарій PowerShell може бути зроблений у вигляді служби Windows, який буде запущений автоматично.

Цей сценарій може бути використаний разом із розглянутим раніше сценарієм захисту RDP з пароля, вибравши IP, що блокує правила брандмауера Windows.

Використовуючи команди видалення PowerShell (ENTER-PSSESSION та COMMAND), ви можете отримати список відкритих портів TCP та з'єднань на віддалених комп'ютерах.

Заклик -Command -ComputErname host1 get -nettcpconnection -state inder

Команда Get-NettcpConnection (а також тест-NetConnection) може бути надзвичайно корисною для моніторингу та діагностики мережевих з'єднань у Windows.

Як налаштувати пошту в Microsoft Outlook
Додаток Microsoft Outlook включений у набір програми MS Office та виконує клієнта пошти. На відміну від віртуального поштового сервера, поштовий клієн...
Коди чорного екрану та причини помилок
Давайте проаналізуємо основні причини, чому може виникнути помилка чорного екрана та публікація коду в куті екрана "92" та "99".Отже, коли ви запускає...
Немає доступу до папки, видаліть системний каталог у середовищі WinPE без завантажувального середовища
Що робити, якщо з’являється система сповіщення під час видалення папки в середовищі Windows "Доступу до папки немає"? І певна дія пропонується у вигля...