Как закрыть порты TCP и UDP через командную строку Windows

Кто-нибудь знает, как закрыть TCP- или UDP-сокет для одиночного соединения через командную строку Windows?

Погуглив об этом, я увидел, что некоторые люди спрашивали то же самое. Но ответы выглядели как справочная страница команд netstat или netsh, посвященная тому, как контролировать порты. Мне не нужны ответы о том, как их контролировать (я уже это делаю). Я хочу закрыть/убить их.

РЕДАКТИРОВАТЬ, для пояснения: допустим, мой сервер прослушивает TCP-порт 80. Клиент устанавливает соединение, и для него выделяется порт 56789. Затем я обнаруживаю, что это соединение нежелательно (например, этот пользователь делает плохие вещи, мы попросили его прекратить, но соединение не разорвалось где-то по пути). Обычно я добавляю брандмауэр для выполнения этой работы, но это займет некоторое время, и я оказался в аварийной ситуации. Убивать процесс, которому принадлежит соединение, здесь действительно плохая идея, потому что это приведет к отключению сервера (все пользователи потеряют функциональность, когда мы просто захотим выборочно и временно отключить это одно соединение).


Да, это возможно. Вам не обязательно быть текущим процессом, владеющим сокетом, чтобы закрыть его. На мгновение представьте, что удаленная машина, сетевая карта, сетевой кабель и ваша ОС могут вызвать закрытие сокета.

Учтите также, что программное обеспечение Fiddler и Desktop VPN может вставлять себя в сетевой стек и покажет вам весь ваш трафик или перенаправит весь ваш трафик.

Итак, все, что вам действительно нужно, — это либо предоставить Windows API, который позволяет это напрямую, либо кто-то написал программу, которая работает как VPN или Fiddler и дает вам возможность закрыть розетки, которые проходят через него.

Существует по крайней мере одна программа (CurrPorts), которая делает именно это, и я использовал ее сегодня для закрытия определенных сокетов в процессе, который был запущен до запуска CurrPorts. Для этого, конечно, вы должны запустить его как администратор.

Обратите внимание, что, вероятно, нелегко заставить программу не прослушивать порт (ну, это возможно, но эта возможность называется межсетевым экраном …), но я не думаю, что здесь об этом спрашивали. Я считаю, что вопрос в том, «как выборочно закрыть одно активное соединение (сокет) с портом, который прослушивает моя программа?». Формулировка вопроса немного неправильная, потому что указан номер порта для нежелательного входящего клиентского соединения, и он назывался «порт», но довольно ясно, что это была ссылка на этот сокет, а не на порт прослушивания.


149
  1. откройте cmd

    • введите netstat -a -n -o

    • найти TCP [IP-адрес]: [номер порта] .... # [target_PID] # (то же самое для UDP)

    • (Btw, kill [target_PID] didn ‘ у меня не работает)

  2. CTRL + ALT + DELETE и выберите «запустить диспетчер задач»

    • Щелкните вкладку «Процессы»

    • Включите столбец «PID», перейдя в: Просмотр> Выбрать столбцы> Установите флажок для PID

    • Найдите интересующий PID и «КОНЕЦ ПРОЦЕССА»

  3. Теперь вы можете без проблем перезапустить сервер на [IP-адрес]: [номер порта]

Улучшить этот ответ
ответил 18 апр. ’13 в 06:28
  • 10
    То, что вы говорите, это просто убить процесс сервера и перезапустить его , чего я хотел избежать, так как это приведет к падению каждое подключение к серверу, а не только нежелательное. — Виктор Стафуса, 18 апр. ’13 в 17:32
  • 7
    Извините, я не помог решить ваш конкретный вопрос. Я просто давал свой ответ, так как ваш вопрос появился, когда я искал в Google, как просто закрыть порт Windows, и подумал, что это может быть полезно для других, у которых также была моя проблема. 🙂 — HaoQi Li 04 мая 2013, 23:29
  • 2
    @HaoQiLi, Вы не можете просто закончить все и вся. Например. Системный процесс, который обрабатывает сетевые подключения Windows. — Pacerier 23 янв. ’15 в 10:32
  • 2
    @HaoQiLi, я думаю, чтобы закрыть, мы можем использовать taskkill/pid 6168/f 6168 is the pid — Мадхава Прияшанта 30 сен 2015 в 3:06
  • 10
    нелепо, у этого ответа так много голосов за, когда вопрос ясно заявляет ОДНО СОЕДИНЕНИЕ, а не весь процесс !!! — Майк, 24 окт., В 19:54
| показать 2 дополнительных комментария

  1. открыть cmd

    • введите netstat -a -n -o

    • найти TCP [IP-адрес]: [номер порта] .... # [target_PID] # (то же самое для UDP)

    • (Btw, kill [target_PID] didn ‘ у меня не работает)

  2. CTRL + ALT + DELETE и выберите «запустить диспетчер задач»

    • Щелкните вкладку «Процессы»

    • Включите столбец «PID», выбрав: «Просмотр»> «Выбрать столбцы»> Установите флажок для PID

    • Найдите интересующий PID и «КОНЕЦ ПРОЦЕССА»

  3. Теперь вы можете повторно запустить сервер на [IP-адрес]: [номер порта] без проблем


68

Например, вы хотите освободить порт 8080. Затем выполните следующие команды.

  netstat -ano taskkill/f/im [PID порта 8080, полученный из предыдущей команды]  

Готово!

Улучшить этот ответ
отредактировано 29 июня ’19 в 21:36
user10063119
ответил 25 дек. ’16 в 9:17
  • 5
    Спасибо. Мне помогло только ваше решение. — vvator 01 марта 2017, в 14:27
  • 1
    Верно, это помогает распечатать PID при попытке найти PID. (Кто эти люди?). — Адриан М. 26 апр. ’17 в 1:42
  • 3
    это также убивает упомянутый процесс pid, а не только закрывает порт. — NDestiny 18 сен. ’17 в 11:35
  • 1
    Это полезно. — Турал Асгар 21 янв., В 19:17
  • 1
    Я тестировал Windows 10, и он убивает не только TCP-соединение, а весь процесс или поток, использующий его. Как заявил Виктор, это не его цель. — Себастьян 07 фев., В 10:45
добавить комментарий |

Например, вы хотите освободить порт 8080. Затем выполните следующие команды.

   netstat -ano taskkill/f/im [PID порта 8080, полученный из предыдущей команды]  

Готово!


61

Если вы знаете порт, который хотите освободить, вы можете отсортировать список netstat, ища указанный порт, например это:

  netstat -ano |  findstr: 8080  

Тогда pid появится на том месте, которое вы можете убить с помощью taskkill.

  taskkill/pid 11704/F   

Также вы можете посмотреть этот вопрос, который специально для localhost, но я думаю, что он актуален:

Улучшить этот ответ
отредактировал 25 июня ’18 в 13:27
WasiF
12,7k88 золота 7272 серебряных знака8989 бронзовых знаков
ответил 24 марта ’18 в 23: 572018-03-24 23:57
  • 1
    Я тестировал в Windows 10, и он не убивает только TCP-соединение но его использует весь процесс или поток. Как заявил Виктор, это не его цель. — Себастьян 07 фев., В 10:45
добавить комментарий |

Если вы знаете порт, который хотите освободить, вы можете отсортировать список netstat, ища указанный порт следующим образом:

  netstat -ano |  findstr: 8080  

Тогда pid появится в том месте, которое вы можете убить с помощью taskkill.

  taskkill/pid 11704/F  

Также вы можете посмотреть в этом вопросе, который специально для localhost, но я думаю, что он актуален:


29

Используйте TCPView: http://technet.microsoft.com/en-us/sysinternals/bb897437.aspx
или CurrPorts: https://www.nirsoft.net/utils /cports.html

В качестве альтернативы, если вы не хотите использовать ВНЕШНЕЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ (эти инструменты, кстати, не требуют установки), вы можете просто СНАЧАЛА запустить команду netstat (желательно netstat -b), а затем настройте локальную политику безопасности, чтобы заблокировать IP-адрес рассматриваемой машины пользователя, это то, что я делал с нежелательными или даже неизвестными соединениями — это позволяет вам делать все БЕЗ ЛЮБОЕ ВНЕШНЕЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ (все идет с Windows) …

Улучшите этот ответ
отредактировал 24 июля ’20 в 8:55
Pang
8,3601717 золотых знаков7474 серебряных знака111111 бронзовых знаков
ответил 18 января ’14 в 12:34
  • 3
    Это правильный ответ, и он полностью поддерживается Microsoft. — Дэн Боначеа, 23 августа 2014, 20:18
  • У меня тоже сработало. Я использовал Локальную политику безопасности -> Политики IPSecurity на локальном компьютере. Пользовательский интерфейс довольно интуитивно понятен. — Путердо Борато, 9 августа 2017, 13:54
  • 1
    Попробовал, закрытое соединение неактивно для ipv6, какова альтернатива закрытию ipv6, если таковая имеется? — jjxtra 10 апр. ’19 в 20:15
добавить комментарий |

Используйте TCPView: http://technet.microsoft.com/en-us/sysinternals/bb897437.aspx
или CurrPorts: https://www.nirsoft.net/utils/cports.html

В качестве альтернативы, если вы не хотите использовать ВНЕШНЕЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ (эти инструменты, кстати, не требуют установки ), вы можете просто СНАЧАЛА запустить команду netstat (желательно netstat -b), а затем настроить локальную политику безопасности, чтобы заблокировать IP-адрес соответствующего компьютера пользователя, это то, что я делал с нежелательными или даже неизвестными соединениями — это позволяет вам делать все БЕЗ ВНЕШНЕГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ (все идет с Windows) …


24

Попробуйте инструменты TCPView (GUI) и Tcpvcon (командная строка) от Sysinternals/Microsoft.
https://docs.microsoft.com/en-us/sysinternals/downloads/tcpview

Показ над этим ответом
отредактировал 24 июля ’20 в 8:42
Pang
8,3601717 золотых знаков7474 серебряных знака111111 бронзовых знаков
ответил 26 апр. ’12 в 19:23
добавить комментарий |

Попробуйте инструменты TCPView (GUI) и Tcpvcon (командная строка) от Sysinternals/Microsoft.
https://docs .microsoft.com/en-us/sysinternals/downloads/tcpview


7

Вы не можете закрыть сокеты, не завершив процесс, владеющий этими сокетами. Сокеты принадлежат процессу, который их открыл. Итак, чтобы узнать идентификатор процесса (PID) для Unix/Linux. Используйте netstat следующим образом:

  netstat -a -n -p -l  

Это напечатает что-то вроде:

  Активные интернет-соединения (серверы и установленные) Proto Recv-Q Send-Q Локальный адрес Внешний адрес Состояние PID/Имя программы tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1879 /sendmail: прием tcp 0 0 0.0.0.0:21 0.0.0. 0: * LISTEN 1860/xinetd  

Где -a печатает все сокеты, -n показывает номер порта, -p показывает PID, -l показывает только то, что слушает (это необязательно в зависимости от того, что вам нужно).

Настоящая информация, которую вы хотите, — это PID. Теперь мы можем завершить этот процесс, выполнив:

  kill 1879  

Если вы закрываете службу, лучше использовать:

  service sendmail stop  

Kill буквально убивает только этот процесс и всех дочерних процессов, которыми он владеет. С помощью служебной команды запускается сценарий выключения, зарегистрированный в каталоге init.d. Если вы используете kill для службы, она может неправильно запуститься, потому что вы не закрыли ее должным образом. Это просто зависит от службы.

К сожалению, Mac отличается от Linux/Unix в этом отношении. Вы не можете использовать netstat. Прочтите это руководство, если вас интересует Mac:

http://www.tech-recipes.com/rx/227/find-out-which-process-is-holding-which- socket-open/

А если вы работаете в Windows, используйте TaskManager для уничтожения процессов и пользовательский интерфейс служб для завершения работы служб. Вы можете использовать netstat в Windows так же, как Linux/Unix, для определения PID.

http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us /netstat.mspx?mfr=true

Улучшите этот ответ
отредактировано 1 мая ’13 в 17:17
Джим Дж.
13.9k1919 золотых знаков8888 серебряных знаков151151 бронзовых знаков
ответил 31 дек. /div>
  • Он разъяснил свой вопрос, касающийся удаленных клиентских сокетов, которые, как указывали другие, можно закрыть с помощью других инструментов. Этот ответ в основном сосредоточен на серверных сокетах, которые не могут (без возни внутри ОС). Вот как чисто отключить процесс, которому принадлежит серверный сокет, что вы и хотите сделать, если это порт. Но если у вас много входящих подключений к вашему серверу, это другая ситуация, и вы определенно можете их убить. Это не неправильно, просто не совсем то, о чем спрашивал ОП. — chubbsondubs 23 янв., В 22:26
  • 1
    Вы должны удалить часть «убить процесс», потому что это не ответ на вопрос. Вы также можете остановить сетевой адаптер, чтобы остановить трафик, но он все равно не убивает только сокет! — Себастьян, 7 фев., В 10:52
  • Ответ правильный только для ipv6, для ipv4 вы можете вызвать SetTcpEntry — jjxtra, 10 апр., 19: 55
добавить комментарий |

Вы не можете закрыть сокеты, не завершив процесс, который владеет этими сокетами. Сокеты принадлежат процессом, который их открыл. Итак, чтобы узнать идентификатор процесса (PID) для Unix/Linux. Используйте netstat следующим образом:

  netstat -a -n -p -l  

Это напечатает что-то вроде:

  Активные интернет-соединения (серверы и установленные) Proto Recv-Q Send-Q Локальный адрес Внешний адрес Состояние PID/Имя программы tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1879 /sendmail: accept tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 1860/xinetd  

Где -a печатает все сокеты, -n показывает номер порта, -p показывает PID, -l показывает только то, что слушает (это необязательно в зависимости от того, что вам нужно).

Настоящая информация, которую вы хотите, это PID. Теперь мы можем завершить этот процесс, выполнив:

  kill 1879  

Если вы закрываете службу, лучше использовать:

  service sendmail stop  

Kill буквально убивает только этот процесс и всех дочерних процессов, которыми он владеет. С помощью служебной команды запускается сценарий выключения, зарегистрированный в каталоге init.d. Если вы используете kill для службы, она может неправильно запуститься, потому что вы не закрыли ее должным образом. Это просто зависит от службы.

К сожалению, Mac отличается от Linux/Unix в этом отношении. Вы не можете использовать netstat. Прочтите это руководство, если вас интересует Mac:

http://www.tech-recipes.com/rx/227/find-out-which-process-is-holding-which- socket-open/

А если вы работаете в Windows, используйте TaskManager для уничтожения процессов и пользовательский интерфейс служб для завершения работы служб. Вы можете использовать netstat в Windows так же, как Linux/Unix, для определения PID.

http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us /netstat.mspx?mfr=true


6

Используйте CurrPorts (это бесплатно и не требует установки): http://www.nirsoft.net/utils/cports.html

/close {Имя процесса}

Примеры:

  # Закройте все соединения с удаленным портом 80  и удаленный адрес 192.168.1.10:/close * * 192.168.1.10 80 # Закрыть все соединения с удаленным портом 80 (для всех удаленных адресов):/close * * * 80 # Закрыть все соединения с удаленным адресом 192.168.20.30:/close *  * 192.168.20. 30 * # Закрыть все соединения с локальным портом 80:/close * 80 * * # Закрыть все соединения Firefox с удаленным портом 80:/close * * * 80 firefox.exe  

Он также имеет приятный графический интерфейс с функциями поиска и фильтрации.

Примечание. Этот ответ представляет собой ответ и комментарий Huntharo и JasonXA, объединенные и упрощенные, чтобы упростить задачу для читатели. Примеры взяты с веб-страницы CurrPorts.

Улучшите этот ответ
ответил 18 янв. в 14:37
добавить комментарий |

Используйте CurrPorts (это бесплатно и не требует установки): http://www.nirsoft.net/utils/cports.html

/close {Process Name}

Примеры:

  # Закрыть все соединения с удаленным портом 80 и удаленным адресом 192.168.1.10:/close * * 192.168.1.10 80 # Закрыть все соединения с удаленным портом 80 (для всех удаленных адресов)  :/close * * * 80 # Закрыть все подключения к удаленному адресу 192.168.20.30:/close * * 192.168.20.30 * # Закрыть все подключения с локальным портом 80:/close * 80 * * # Закрыть все подключения Firefox с удаленным портом  80:/close * * * 80 firefox.exe  

Он также имеет красивый графический интерфейс с функциями поиска и фильтрации.

Примечание. Этот ответ представляет собой ответ и комментарий Huntharo и JasonXA, объединенные и упрощенные для удобства читателей. Примеры взяты с веб-страницы CurrPorts.


3

Вы не можете закрыть сокеты на своем сервере, не владея этими сокетами, поэтому вы не можете фактически закрыть сокет, не запустив код в процессе, которому принадлежит серверный сокет.

Однако есть другой вариант, который говорит клиенту закрыть свой сокет. Отправка пакета RST TCP на порт, к которому подключается клиент, приведет к тому, что клиент разорвет свое соединение. Вы можете сделать это с помощью сканирования RST с помощью nmap.

http://nmap.org/

Улучшите этот ответ
ответил 01 января 2012 в 15:52
добавить комментарий |

Вы не можете закрыть сокеты на своем сервере, не владея этими сокетами, поэтому вы не можете фактически закрыть сокет, не запустив код процесс, которому принадлежит серверный сокет.

Однако есть еще один вариант, который говорит клиенту закрыть свой сокет. Отправка пакета RST TCP на порт, к которому подключается клиент, приведет к тому, что клиент разорвет свое соединение. Вы можете сделать это с помощью сканирования RST с помощью nmap.

http://nmap.org/


3

Я нашел правильный ответ на этот вопрос. Попробуйте TCPView от Sysinternals, теперь принадлежащего Microsoft. Вы можете найти его на http://technet.microsoft.com/en-us/sysinternals/bb897437

Улучшите этот ответ
ответил 23 сен ’13 в 19:03
комментировать |

Я нашел правильный ответ на этот вопрос. Попробуйте TCPView от Sysinternals, теперь принадлежащего Microsoft. Вы можете найти его на http://technet.microsoft.com/en-us/sysinternals/bb897437


3

wkillcx — это надежный инструмент командной строки Windows для уничтожения TCP-соединений из командной строки, о котором не упоминалось. Однако иногда возникают проблемы с серверами с большим количеством подключений. Я иногда использую tcpview для интерактивных убийств, но wkillcx можно использовать в скриптах.

Улучшите этот ответ
ответил 14 февраля ’14 в 15:32
  • superuser.com/questions/384758/… — Pacerier, 23 января 2015 г., 15:43
добавить комментарий |

wkillcx — надежный инструмент командной строки Windows для уничтожения TCP-соединений из командной строки, о чем не упоминалось. Однако иногда возникают проблемы с серверами с большим количеством подключений. Иногда я использую tcpview для интерактивных убийств, но wkillcx можно использовать в скриптах.


2

вы можете использовать программу вроде tcpview из sysinternal. Я думаю, это может очень помочь вам как в мониторинге, так и в отключении нежелательного соединения..

Улучшите этот ответ
ответил 08 янв., В 1:53
добавить комментарий |

вы можете использовать такую ​​программу, как tcpview, из sysinternal. Думаю, это может вам очень помочь как в мониторинге, так и в уничтожении нежелательного соединения.


1

Чтобы закрыть порт , вы можете идентифицировать процесс, который прослушивает этот порт, и убить этот процесс.

Улучшить этот ответ
ответил 31 декабря 2011 в 18:38
  • 2
    @Victor, я видел это, но нет возможности принудительно закрыть порт без остановки процесса. Другая возможность — написать серверную программу таким образом, чтобы у вас была своего рода панель управления, с помощью которой вы могли контролировать и администрировать клиентов. — Дарин Димитров 01 янв., 10:15
  • 1
    Кроме того, если интерфейс, который прослушивает сокет, выйдет из строя, сокет закроется. — rustyx 11 ноя. ’15 в 12:57
  • Я думаю, он просил привести пример. — eyoeldefare 24 дек. ’18 в 21:39
добавить комментарий |

Чтобы закрыть порт , вы можете идентифицировать процесс, который прослушивает этот порт, и убить этот процесс.


1

CurrPorts не работал для нас, и мы могли получить доступ к серверу только через ssh, поэтому TCPView тоже. Мы также не могли убить процесс, чтобы не разорвать другие соединения. В итоге мы сделали, и нам еще не предложили, заблокировать соединение в брандмауэре Windows. Да, это заблокирует все подключения, которые соответствуют правилу, но в нашем случае было одно подключение (то, которое нас интересовало):

  netsh advfirewall firewall add rule name = "Conn hotfix" dir = out action = block protocol = TCP remoteip = 192.168.38.13  

Замените IP-адрес на тот, который вам нужен, и при необходимости добавьте другие правила.

Улучшите этот ответ
ответил 28 янв., 13:41
добавить комментарий |

CurrPorts у нас не работал, и мы могли получить доступ к серверу только через ssh, так что TCPView тоже. Мы также не могли убить процесс, чтобы не разорвать другие соединения. В итоге мы сделали, и нам еще не предложили, заблокировать соединение в брандмауэре Windows. Да, это заблокирует все подключения, которые соответствуют правилу, но в нашем случае было одно подключение (то, которое нас интересовало):

  netsh advfirewall firewall add rule name = "Conn hotfix" dir = out action = block protocol = TCP remoteip = 192.168.38.13  

Замените IP-адрес на тот, который вам нужен, и при необходимости добавьте другие правила.


0

мгновенный/возможный/частичный ответ : https://stackoverflow.com/a/20130959/2584794

в отличие от предыдущего ответа, где netstat -a -o — n использовался невероятно. длинный список , который нужно было изучить без имени приложения, использующего эти порты

Улучшите этот ответ
отредактировано 23 мая ’17 в 12:10
Сообщество ♦
111 серебряных значков
ответил 21 ноя 2013, в 20:20
  • 5
    Это почти то же самое, что и ответ Хаоци Ли. Это убьет серверный процесс, отключив каждое соединение, а не только нежелательное. Задача состоит в том, чтобы отбросить только нежелательное и не более того. — Виктор Стафуса 21 нояб., 13:28
  • Я согласен с Виктором. Это не ответ на вопрос. Так что вы также можете отключить сетевой адаптер … — Себастьян, 7 фев., В 10:49
добавить комментарий |

мгновенный/возможный/частичный ответ : https://stackoverflow. com/a/20130959/2584794

в отличие от предыдущего ответа, где netstat -a -o -n использовался невероятно длинный список , который нужно было изучить без имя приложения, использующего эти порты


-3

Да, есть возможность закрыть TCP или UDP порт, есть команда в DOS

  TASKKILL/f/pid 1234  

Надеюсь, это сработает для Вас

Улучшите этот ответ
отредактировал 29 июля ’18 в 17:57
ответил 30 марта ’17 в 13:52
  • 1

    iv>

    Я тестировал в Windows 10, и он убивает не только TCP-соединение, но и весь процесс или поток, использующий его. Как заявил Виктор, это не его цель. — Себастьян 07 фев., В 10:44
    добавить комментарий |

Да, есть возможность закрыть порт TCP или UDP, есть команда в DOS

  TASKKILL/f/pid 1234  

Надеюсь, это сработает для Вас


-3

Если вы работаете в Windows 8, `Windows Server 2012 или более поздней версии с установленным PowerShell v4 выше, вы можете использовать приведенный ниже сценарий . Это находит процессы, связанные с портом, и завершает их.

Code

  # какой порт вы хотите убить [int] $ portOfInterest =  80 # получить идентификаторы процессов, связанных с этим портом [int []] $ processId = Get-NetTCPConnection -LocalPort $ portOfInterest |  Select-Object -ExpandProperty OwningProcess -Unique |  Where-Object {$ _ -gt 0} # убить эти процессы Stop-Process -Id $ processId  

Документация:

  • Получить -NetTCPConnection — NetStat эквивалент PowerShell.
  • Select-Object — Извлечь определенные свойства из объекта/удалить дубликаты
  • Where-Object — Значения фильтрации на основе некоторого условия.
  • Stop-Process — Эквивалент PowerShell TaskKill
Улучшить этот ответ

отредактировано 28 января ’20 в 16:02
Виктор Стафуса
12. 3k99 золотых знаков5353 серебряных знака6767 бронзовых знаков
ответил 25 окт.’17 в 17:05
  • 1
    Я тестировал в Windows 10, и он не убивает TCP Только соединение, но его использует весь процесс или поток. Как заявил Виктор, это не его цель. — Себастьян 07 фев., В 10:45
добавить комментарий |

Если вы работаете в Windows 8, `Windows Server 2012 или более поздней версии с установленным PowerShell v4 выше, вы можете использовать следующий скрипт . Это находит процессы, связанные с портом, и завершает их.

Code

  # какой порт вы хотите убить [int] $ portOfInterest =  80 # получить идентификаторы процессов, связанных с этим портом [int []] $ processId = Get-NetTCPConnection -LocalPort $ portOfInterest |  Select-Object -ExpandProperty OwningProcess -Unique |  Where-Object {$ _ -gt 0} # убить эти процессы Stop-Process -Id $ processId  

Документация:

  • Получить -NetTCPConnection — NetStat эквивалент PowerShell.
  • Select-Object — Извлечь определенные свойства из объекта/удалить дубликаты
  • Where-Object — Фильтровать значения на основе некоторого условия.
  • Stop-Process — Эквивалент PowerShell TaskKill


Как найти и закрыть порты прослушивания в Windows 10

Открытые порты в Windows 10 часто считаются опасными, потому что хакеры могут использовать их, если служба или приложение, с которым связаны порты, не исправлено или не имеет базовых протоколов безопасности. Поэтому рекомендуется закрыть все прослушивающие сетевые порты, которые ваша система не использует.

Позвольте нам рассказать вам, что такое порты и почему они могут быть опасно.

Краткое описание

  • 1 Что такое сетевые порты?
  • 2 Опасны ли открытые сетевые порты?
  • 3 2 способа проверить, какие порты открыты/прослушиваются в Windows 10
    • 3.1 Определение открытых портов с именем процесса с помощью командной строки
    • 3.2. Определить открытые порты с идентификатором процесса с помощью командной строки
  • 4 Как закрыть открытый порт
  • 5 Заключительные слова
  • 6 Продолжить чтение:

Что такое сетевые порты?

Сетевые порты используются службами и приложениями Windows для отправки и получения данных по сети. Если вам интересно, используется ли IP-адрес для этого, то вы абсолютно правы. Однако уникальный IP-адрес определяет путь к определенному устройству, тогда как порт определяет, какое приложение или служба на этом конкретном устройстве будет отправлять эту информацию.

Как и IP-адреса, порт также уникален в своей экосистеме. Это означает, что один и тот же порт не может использоваться двумя разными сервисами/приложениями.. Следовательно, оба этих уникальных идентификатора, IP-адрес и номер порта, используются для отправки и получения информации с компьютера.

Номер порта можно найти с суффиксом к IP-адресу, как в примере ниже:

 xxx.xxx.xxx.xxx:80  

Здесь числа, за которыми следует двоеточие, обозначают номер порта. Ниже приведены несколько портов, используемых некоторыми службами и приложениями по умолчанию:

  • FTP — 21
  • SSH — 22
  • Telnet — 23
  • SMTP — 25
  • DNS — 53
  • DHCP — 67 & 68
  • HTTP — 80 & 8080
  • HTTPS — 443
  • SNMP — 161
  • RDP — 3389

Один IP-адрес может иметь всего 65535 TCP и 65535 UDP портов.

Открыты опасны сетевые порты?

Не все прослушивающие порты опасны. Иногда приложение открывает порты автоматически, не информируя пользователей. Если приложение плохо сконструировано и протоколам безопасности не хватает базовой инфраструктуры, злоумышленник может воспользоваться ими и проникнуть на ваш компьютер.

Открытый сетевой порт не всегда опасно, но всегда лучше сохранять бдительность и закрывать все порты, которые не требуются.

2 способа проверить, какие порты открыты/прослушивают Windows 10

Вы можете выяснить, какие порты в данный момент открыты на вашем компьютере, даже если установленные приложения не сообщили вам, что они их используют. Вот два способа проверить, какие порты открыты и какая служба/приложение их использует на вашем локальном компьютере, прежде чем переходить к их блокировке.

Вот руководство, чтобы проверить, открыт ли удаленный сетевой порт .

Определите открытые порты с именем процесса с помощью командной строки

Некоторые приложения выдают имя приложения/службы, связанного с номером порта. Вы можете использовать приведенную ниже команду в командной строке, чтобы определить, какие порты открыты и каковы имена связанных приложений.

  1. Откройте командную строку с правами администратора.
  2. Введите следующую команду:
    netstat -ab
  3. Командная строка теперь отображает вывод открытых сетевых портов с связанные с ними имена приложений/служб, как показано на изображении ниже:

Поскольку нашему компьютеру назначен IP-адрес 10.0.0.31, он отображает разные порты, используемые различными приложениями, с суффиксом к IP-адресу. Однако, как вы могли заметить, некоторые названия служб и приложений не поддаются идентификации. Для этого мы воспользуемся вторым методом.

Определить открытые порты с идентификатором процесса с помощью командной строки

В этом подходе мы будем сравнивать идентификаторы процессов для запуск приложений и служб, связанных с портами, а затем определение имени процесса с помощью диспетчера задач. Вот как это сделать:

  1. Откройте командную строку с правами администратора.
  2. Введите следующую команду:
    netstat -aon
  3. Командная строка теперь будет отображать список портов TCP и UDP, которые в данный момент прослушиваются на вашем компьютере. Обратите внимание на связанные PID для сравнения в диспетчере задач.
  4. Теперь откройте Диспетчер задач, щелкнув правой кнопкой мыши на панели задач и выбрав Диспетчер задач . Или вы можете использовать сочетания клавиш Ctrl + Shift + Esc .
  5. Теперь переключитесь на вкладку Details в Задаче Manager и сопоставьте PID со связанным именем процесса/приложения.

Теперь у вас есть достаточно информации о портах, которые вы хотите закрыть, если таковые имеются. Перейдите к следующему шагу, чтобы заблокировать/закрыть все порты прослушивания на вашем компьютере.

Как закрыть открытый порт

Если вы нашли порт, которым вы не являетесь более продолжительное использование или не уверены, безопасно ли держать его открытым, вы можете заблокировать его, используя приведенное ниже руководство.

  1. Откройте брандмауэр Windows, перейдя к следующему:
    Панель управления -> Система и безопасность -> Брандмауэр Защитника Windows -> Расширенные настройки
  2. Нажмите Правила для входящего трафика в на левой панели, а затем нажмите Новое правило на правой панели.
  3. На экране типа правила в Мастере нового входящего правила выберите Порт и затем нажмите Далее .
  4. На следующем экране выберите тип порта, как было определено ранее в командной строке, а затем введите номер порта, который вы хотите закрыть, перед Speci фиктивные локальные порты . По завершении нажмите Далее .
  5. На следующем экране выберите Блокировать соединение , а затем нажмите Далее .
  6. В профиле выберите все профили и нажмите Далее .
  7. Теперь задайте имя для правила и нажмите

Теперь вы успешно отключили порт. Вы можете повторить шаги, чтобы заблокировать дополнительные порты или удалить этот, перейдя к правилам для входящих и удалив соответствующее правило.

Заключительные слова

Прослушивание портов не всегда опасно, так как это очень сильно зависит от того, через какое приложение/службу они открыты. Тем не менее, по-прежнему важно не давать злоумышленнику возможности использовать уязвимости вашей системы и разумно закрыть все неиспользуемые порты..

Продолжить чтение:

  • Как сделать резервную копию и восстановить драйверы принтера, очереди, и порты в Windows 10
  • Как закрыть ноутбук и использовать внешний монитор для отображения в Windows 10
  • Findstr: найти конкретную строку в файлах с помощью команды Windows (альтернатива Grep)
  • Как найти пароль Wi-Fi в Windows 10 с помощью командной строки
  • Как быстро найти Mac-адрес в Windows 10
Оцените статью
logicle.ru
Добавить комментарий