5. 8. Определение открытых портов
Как посмотреть открытые порты с помощью команды netstat
После настройки сетевых служб важно обратить внимание на порты, принимающие подключения на сетевых интерфейсах. Любые открытые порты могут быть доказательством вторжения.
Просмотреть открытые порты можно двумя способами. Менее надёжный способ — опросить сетевой стек с помощью команды netstat -an или lsof -i . Этот способ не очень надёжен, так как эти программы не подключаются к компьютеру по сети, а просто определяют, что происходит в системе. По этой причине, эти приложения часто подменяются нападающими. Таким способом взломщики пытаются скрыть свои следы, если они незаконно открыли порты.
Другим более надёжным способом проверки открытых портов является использование сканера портов, например nmap .
Следующая команда, запущенная с консоли, определяет, какие порты ждут TCP-соединений из сети:
nmap -sT -O localhost
Эта команда выводит примерно следующие результаты:
Starting nmap 3.55 ( http://www.insecure.org/nmap/ ) at 2004-09-24 13:49 EDT Interesting ports on localhost.localdomain (127.0.0.1): (The 1653 ports scanned but not shown below are in state: closed) PORT STATE SERVICE 22/tcp open ssh 25/tcp open smtp 111/tcp open rpcbind 113/tcp open auth 631/tcp open ipp 834/tcp open unknown 2601/tcp open zebra 32774/tcp open sometimes-rpc11 Device type: general purpose Running: Linux 2.4.X|2.5.X|2.6.X OS details: Linux 2.5.25 — 2.6.3 or Gentoo 1.2 Linux 2.4.19 rc1-rc7) Uptime 12.857 days (since Sat Sep 11 17:16:20 2004) Nmap run completed — 1 IP address (1 host up) scanned in 5,190 seconds
Здесь видно, что работает portmap , так как запущена служба sunrpc . Однако есть и некая таинственная служба, открывшая порт 834. Чтобы проверить, не связан ли этот порт с какой-либо известной службой, введите:
cat /etc/services | grep 834
Эта команда не возвращает результата. Это означает, что хотя порт находится в зарезервированном диапазоне (от 0 до 1023) и для его открытия нужны права root, он не связан ни с одной известной службой.
Затем проверьте, что о нём сообщит команда netstat или lsof . Чтобы проверить порт 834 с помощью netstat , выполните следующую команду:
netstat -anp | grep 834
Команда возвращает следующий результат:
tcp 0 0 0.0.0.0:834 0.0.0.0:* LISTEN 653/ypbind
То, что команда netstat показала этот порт, успокаивает, так как злоумышленник, открывший порт на взломанном компьютере, скорее всего, не захочет, чтобы эта команда его вывела. Кроме этого, параметр [p] показывает код процесса (PID) службы, открывшей порт. В данном случае открытый порт принадлежит RPC-службе ypbind (NIS), работающей совместно со службой portmap .
Команда lsof показывает похожие сведения, так как она также может связать открытые порты со службами:
lsof -i | grep 834
Ниже приведена значимая часть результатов команды:
ypbind 653 0 7u IPv4 1319 TCP *:834 (LISTEN) ypbind 655 0 7u IPv4 1319 TCP *:834 (LISTEN) ypbind 656 0 7u IPv4 1319 TCP *:834 (LISTEN) ypbind 657 0 7u IPv4 1319 TCP *:834 (LISTEN)
Эти инструменты позволяют узнать о состоянии работающих на компьютере служб многое. Они очень гибки и могут предоставить массу информации о сетевых службах и их конфигурации. Поэтому очень рекомендуется обратиться к страницам man, посвящённым lsof , netstat , nmap и services .
Команда NETSTAT — отображение статистики сетевых соединений
    Команда NETSTAT предназначена для получения сведений о состоянии сетевых соединений и слушаемых на данном компьютере портах TCP и UDP, а также, для отображения статистических данных по сетевым интерфейсам и протоколам.
Формат командной строки:
NETSTAT [-a] [-b] [-e] [-f] [-n] [-o] [-p протокол] [-r] [-s] [-t] [интервал]
Параметры командной строки:
-a — Отображение всех подключений и ожидающих портов.
-b — Отображение исполняемого файла, участвующего в создании каждого подключения, или ожидающего порта. Иногда известные исполняемые файлы содержат множественные независимые компоненты. Тогда отображается последовательность компонентов, участвующих в создании подключения, либо ожидающий порт. В этом случае имя исполняемого файла находится снизу в скобках [], сверху — компонент, который им вызывается, и так до тех пор, пока не достигается TCP/IP. Заметьте, что такой подход может занять много времени и требует достаточных разрешений.
-e — Отображение статистики Ethernet. Может применяться вместе с параметром -s.
-f — Отображение полного имени домена (FQDN) для внешних адресов.
-n — Отображение адресов и номеров портов в числовом формате.
-o — Отображение кода (ID) процесса каждого подключения.
-p протокол — Отображение подключений для протокола, задаваемых этим параметром. Допустимые значения: TCP, UDP, TCPv6 или UDPv6. Используется вместе с параметром -s для отображения статистики по протоколам. Допустимые значения: IP, IPv6, ICMP, ICMPv6, TCP, TCPv6, UDP или UDPv6.
-r — Отображение содержимого таблицы маршрутов.
-s — Отображение статистики протокола. По умолчанию статистика отображается для протоколов IP, IPv6, ICMP, ICMPv6, TCP, TCPv6, UDP и UDPv6. Параметр -p позволяет указать подмножество выводимых данных.
-t — Отображение текущего подключения в состоянии переноса нагрузки с процессора на сетевой адаптер при передаче данных ( «offload» ).
-v — Подробный вывод информации, если это возможно.
интервал — Повторный вывод статистических данных через указанный интервал в секундах. Для прекращения вывода данных нажмите клавиши CTRL+C. Если параметр не задан, сведения о текущей конфигурации выводятся один раз.
На практике, утилиту netstat.exe удобно использовать в цепочке с командами постраничного вывода ( more ), перенаправления стандартного вывода в файл ( > ) и поиска текста в результатах вывода ( find ).
netstat -a | more — отобразить все соединения в постраничном режиме вывода на экран.
netstat -a -n| more — то же, что и в предыдущем примере, но с отображением номеров портов и IP-адресов в числовом формате. В отличие от предыдущего примера, команда netstat с параметром -t отрабатывает намного быстрее.
netstat -a -f | more — то же, что и в предыдущем примере, но с отображением полных DNS-имен узлов, участвующих в соединениии.
netstat -a > C:netstatall.txt — отобразить все соединения с записью результатов в файл C:netstatall.txt.
netstat -a | find /I «LISTENING» — отобразить все соединения со статусом LISTENING, т.е. отобразить список сетевых интерфейсов и портов, ожидающих входящие соединения ( «слушаемых» портов ). Ключ /I в команде find указывает, что при поиске текста, не нужно учитывать регистр символов.
netstat -a | find /I «listening» > C:listening.txt — отобразить все соединения со статусом LISTENING с записью результатов в файл C:listening.txt.
Пример отображаемой информации:
LISTENING
LISTENING
ESTABLISHED
ESTABLISHED
Локальный адрес — локальный IP-адрес участвующий в соединении или связанный со службой, ожидающей входящие соединения (слушающей порт). Если в качестве адреса отображается 0.0.0.0 , то это означает — «любой адрес», т.е в соединении могут использоваться все IP-адреса существующие на данном компьютере. Адрес 127.0.0.1 — это петлевой интерфейс, используемый в качестве средства IP протокола для взаимодействия между процессами без реальной передачи данных.
Внешний адрес Внешний IP-адрес, участвующий в создании соединения.
Состояние — состояние соединения. Состояние Listening говорит о том, что строка состояния отображает информацию о сетевой службе, ожидающей входящие соединения по соответствующему протоколу на адрес и порт, отображаемые в колонке «Локальный адрес «. Состояние ESTABLISHED указывает на активное соединение. В колонке «Состояние» для соединений по протоколу TCP может отображаться текущий этап TCP-сессии определяемый по обработке значений флагов в заголовке TCP — пакета (Syn, Ask, Fin . ). Возможные состояния:
CLOSE_WAIT — ожидание закрытия соединения.
CLOSED — соединение закрыто.
ESTABLISHED — соединение установлено.
LISTENING — ожидается соединение (слушается порт)
TIME_WAIT — превышение времени ответа.
Имя программного модуля, связанного с данным соединением отображается, если задан параметр -b в командной строке при запуске netstat.exe.
netstat -a -b — получить список всех сетевых соединений и связанных с ними программ.
TCP 192.168.0.3:3389 89.22.52.11:5779 ESTABLISHED
CryptSvc
[svchost.exe]
В данном примере отображается информация о соединении, в создании которого участвуют программные компоненты CryptSvc и svchost.exe .
netstat -ab — параметры командной строки можно объединять. Параметр -ab эквивалентен -a -b
netstat -e — получить статистические данные для обмена по протоколу Ethernet. Отображается суммарные значения принятых и полученных байт для всех сетевых адаптеров Ethernet.
netstat -e -v — кроме суммарной статистики, отображается информация об обмене данными через отдельные сетевые интерфейсы.
netstat -e -s — дополнительно к статистике Ethernet, отображается статистика для протоколов IP , ICMP , TCP , UDP
Получено пакетов Получено ошибок в заголовках Получено ошибок в адресах Направлено датаграмм Получено неизвестных протоколов Отброшено полученных пакетов Доставлено полученных пакетов Запросов на вывод Отброшено маршрутов Отброшено выходных пакетов Выходных пакетов без маршрута Требуется сборка Успешная сборка Сбоев при сборке Успешно фрагментировано датаграмм Сбоев при фрагментации датаграмм Создано фрагментов | = 10877781 = 0 = 27307 = 0 = 0 = 448 = 11384479 = 11919871 = 0 = 1517 = 6 = 0 = 0 = 0 = 5918 = 0 = 11836 |
Сообщений Ошибок ‘Назначение недостижимо’ Превышений времени Ошибок в параметрах Просьб «снизить скорость» Переадресовано Ответных пакетов Эхо-сообщений Отметок времени Ответы на отметки времени Масок адресов Ответов на маски адресов Маршрутизатор Маршрутизатор | Получено 11892 0 10461 613 0 0 0 818 0 0 0 0 0 0 0 | Отправлено 1374 0 528 0 0 0 0 0 846 0 0 0 0 0 0 |
Статистика TCP для IPv4
Активных открыто Пассивных открыто Сбоев при подключении Сброшено подключений Текущих подключений Получено сегментов Отправлено сегментов Повторно отправлено сегментов | = 225128 = 12675 = 108237 = 1871 = 42 = 8606912 = 8138192 = 403595 |
Статистика TCP для IPv6
Активных открыто Пассивных открыто Сбоев при подключении Сброшено подключений Текущих подключений Получено сегментов Отправлено сегментов Повторно отправлено сегментов | = 64 = 64 = 10164 = 4 = 4 = 3341 = 3341 = 0 |
Статистика UDP для IPv4
Получено датаграмм Отсутствие портов Ошибки при получении Отправлено датаграмм | = 4714809 = 448 = 0 = 5332065 |
Статистика UDP для IPv6
Получено датаграмм Отсутствие портов Ошибки при получении Отправлено датаграмм | = 419 = 0 = 0 = 391 |
netstat -s -p icmp — получить статистику только по протоколу ICMP
Пример отображаемых статистических данных:
Сообщений Ошибок ‘Назначение недостижимо’ Превышений времени Ошибок в параметрах Просьб «снизить скорость» Переадресовано Ответных пакетов Эхо-сообщений Отметок времени Ответы на отметки времени Масок адресов Ответов на маски адресов Маршрутизатор Маршрутизатор | Получено 12092 0 10654 619 0 0 0 819 0 0 0 0 0 0 0 | Отправлено 1375 0 528 0 0 0 0 0 847 0 0 0 0 0 0 |
Для циклического опроса состояния сетевых соединений используется запуск программы с указанием интервала вывода статистических данных в секундах.
netstat -e 3 — отображать статистику по Ethernet с интервалом 3 секунды.
netstat –f 10 — каждые 10 секунд отображать статистику сетевых соединений с использованием полных DNS-имен узлов.
netstat -n 5 | find /i «Established» — каждые 5 секунд отображать статистику по установленным соединениям.
Командная строка для просмотра конкретного порта
Есть ли способ проверить состояние конкретного порта из командной строки Windows? Я знаю, что могу использовать netstat для проверки всех портов, но netstat работает медленно, а просмотр конкретного порта, скорее всего, нет.
13 ответов
- Открытие порта на Ubuntu
Я пытаюсь открыть порт на моей машине Ubuntu, чтобы позволить мне подключить Mongo с помощью внешней программы. Я запустил это командная строка для открытия нового порта: sudo iptables -A INPUT -p tcp —dport 27017 -j ACCEPT но когда я запустил это, чтобы проверить, существует ли новое правило.
Visual Studio показывает точное использование командной строки для компилятора и связывания проекта C++ в разделе свойства проекта -> C/C++ — > Командная строка и Компоновщик — >Командная строка, но я не смог найти аналогичную страницу свойств для проектов C#. Кто-нибудь знает, как лучше всего.
Вот простое решение поиска портов.
Вы можете использовать netstat в сочетании с флагами -np и каналом для команд find или findstr .
Основное использование как таковое:
Так, например, чтобы проверить порт 80 на TCP, вы можете сделать следующее: netstat -np TCP | find «80» , который в конечном итоге выдает следующий вид вывода:
Как вы можете видеть, это показывает только соединения на порту 80 для протокола TCP.
здесь o представляет процесс ID. теперь вы можете делать все, что угодно, с процессом ID. Для завершения процесса, например, используйте:
когда у меня возникают проблемы с WAMP apache , я использую этот код, чтобы найти, какая программа использует порт 80.
3068 -это PID, поэтому я могу найти его в диспетчере задач и остановить этот процесс.
Как уже отмечалось в другом месте: используйте netstat с соответствующими переключателями, а затем отфильтруйте результаты с помощью find[str]
Чтобы найти иностранный порт, вы могли бы использовать:
Чтобы найти локальный порт, вы можете использовать:
Где N — номер порта, который вас интересует.
-n гарантирует, что все порты будут числовыми, т. е. не будут возвращены как переведенные в имена служб.
-a обеспечит поиск по всем соединениям (TCP, UDP, прослушивание. )
В строке find необходимо включить двоеточие в качестве квалификатора порта, в противном случае номер может совпадать с локальными или иностранными адресами.
При необходимости вы можете еще больше сузить поиск, используя другие переключатели netstat.
Дальнейшее чтение (^0^)
это даст вам количество активных сокетов на определенном IP и порт(номер порта сервера)
- Командная строка для просмотра содержимого общего объекта Module(lib*.so)
Что такое командная строка для просмотра содержимого модуля общего объекта (lib*.so)? Например, как мы используем: ar -t lib*.a для archives(lib*.a) и он отображает все объектные файлы в библиотеке. EDIT1 Пример ar -t lib*.a дает мне дисплей: asset.o sldep.o
Мы пытаемся реализовать кнопки масштабирования поверх карты, созданной в D3, — по сути, так же, как это работает на Google maps. Событие масштабирования может быть отправлено программно с помощью d3ZoomBehavior.scale(myNewScale); d3ZoomBehavior.event(myContainer); и карта будет масштабироваться.
Для пользователя Windows 8 : Откройте командную строку, введите netstat-an | find «your port number» , введите .
Если ответ приходит как LISTENING , то порт используется, иначе он свободен .
Чтобы найти иностранный порт (IPv4 или IPv6), вы можете использовать:
Чтобы найти локальный порт (IPv4 или IPv6), вы можете использовать:
Где N — номер порта, который вас интересует. Переключатель «/r» указывает ему обработать его как регулярное выражение. Переключатель «/c» позволяет findstr включать пробелы в строки поиска вместо того, чтобы рассматривать пробел как разделитель строк поиска. Это дополнительное пространство предотвращает неправильное обращение с более длинными портами — например, «:80» против «:8080» и другие проблемы с портами.
Список удаленных подключений к локальному серверу RDP, например:
Или посмотреть, кто прикасается к вашему DNS:
Если вы хотите исключить локальные порты, вы можете использовать ряд исключений с «/v» и escape-символами с обратной косой чертой:
Для порта 80 команда будет выглядеть следующим образом : netstat -an | find «80» Для порта n команда будет следующей : netstat-an | find «n»
Здесь netstat-это инструкция для вашей машины
-a : Отображает все соединения и порты прослушивания -n : Отображает все адреса и инструкции в числовом формате (это необходимо, поскольку выходные данные из-a могут содержать имена машин)
Затем выполните команду find для «Pattern Match» вывода предыдущей команды.
Это поможет вам
В RHEL 7 я использую эту команду для фильтрации нескольких портов в состоянии прослушивания:
Эта команда покажет все порты и их адрес назначения:
Используйте команду lsof «lsof -i tcp:port #», вот пример.
Похожие вопросы:
есть ли способ захватить ширину порта просмотра развернутого окна браузера? (окно, очевидно, не обязательно должно быть развернуто при чтении в этом значении)
Как настроить локальный сервер таким образом , чтобы всякий раз, когда кто-то подключается к серверу по указанному номеру порта, командная строка python должна отображаться в указанном месте на.
Возможный дубликат: командная строка не открывается при вызове консольного приложения (.exe) из веб-приложения c# Я работаю с консольным приложением, в котором я не скрыл командную строку. Я вызываю.
Я пытаюсь открыть порт на моей машине Ubuntu, чтобы позволить мне подключить Mongo с помощью внешней программы. Я запустил это командная строка для открытия нового порта: sudo iptables -A INPUT -p.
Visual Studio показывает точное использование командной строки для компилятора и связывания проекта C++ в разделе свойства проекта -> C/C++ — > Командная строка и Компоновщик — >Командная строка, но.
Что такое командная строка для просмотра содержимого модуля общего объекта (lib*.so)? Например, как мы используем: ar -t lib*.a для archives(lib*.a) и он отображает все объектные файлы в библиотеке.
Мы пытаемся реализовать кнопки масштабирования поверх карты, созданной в D3, — по сути, так же, как это работает на Google maps. Событие масштабирования может быть отправлено программно с помощью.
Что такое командная строка записи для просмотра и компиляции файлов .less. Я хочу посмотреть папку LSS-файлов на наличие каких-либо изменений и скомпилировать ее в css. Я попытался использовать.
Как посмотреть какие порты открыты на компьютере, и кто их использует
Думаю, если Вы нашли эту статью и собираетесь проверить какие порты открыты на ПК, то объяснять что такое порты, для чего они нужны и как используются различными программами, не нужно. Перейдем сразу к делу.
Чтобы проверить состояние портов, необходимо открыть командную строку. Для этого используйте шорткат Win+R, в появившемся окошке наберите cmd и нажмите Ввод:
В окне командной строки наберите команду netstat -a (перед знаком минус не забудьте поставить пробел), нажмите Ввод. После быстрого сканирования Вы сможете посмотреть какие сокеты открыты на Вашем ПК и в каком состоянии они находятся:
Как видим, для каждого активного сокета указывается протокол, локальный и внешний адрес, а также состояние протокола. Вот список и значение самых распространенных состояний:
- LISTENING – значит, что порт ожидает входящих соединений
- ESTABLISHED – соединение установлено
- CLOSE_WAIT – ожидание закрытия вследствие отключения удаленной стороны
- TIME_WAIT – порт закрыт, но еще ожидает входящие пакеты для обработки
- SYN_SENT – установка соединения
Возле номера каждого сокета в квадратных скобках указана программа, которая его использует (исполняемое имя файла).
Если Вы обнаружили, что какой-то порт использует программа, которую Вы не запускали и которая похожа на троян или вирус, то его следует закрыть. Закрыть порт можно при помощи фаервола. Однако гораздо быстрей и эффективней будет использовать небольшую бесплатную программу под названием Windows Worms Doors Cleaner (WWDC), которую Вы можете скачать прямо сейчас (51Kb).
После запуска она покажет список открытых сокетов, которые представляют опасность, и которые специалисты в области информационной защиты настоятельно рекомендуют держать отключенными: 135, 445, 137-139. Чтобы сделать их неактивными, просто нажмите кнопки справа от каждого красного значка:
После вступлений изменений в силу Вы получите такую картину:
Преимущество программы WWDC перед фаерволами состоит в том, что она не просто блокирует открытые порты, но закрывает их, отключая службы, которые их используют. Это, как Вы понимаете, гораздо эффективнее, потому что устраняет источник проблемы, а не симптомы.