Проверить занятые порты linux. Как открыть порт в Linux

Владимир Молочков (В. Новгород)

Выявление сетевых уязвимостей сканированием портов ПК

Злоумышленники используют сканирование портов ПК для того, чтобы воспользоваться ресурсами чужого ПК в Сети. При этом необходимо указать IP адрес ПК и открытый port, к примеру, 195.34.34.30:23. После этого происходит соединение с удаленным ПК с некоторой вероятностью входа в этот ПК.

Одна из функций администратора сети (сисадмина) — выявить недостатки в функционировании сети и устранить их. Для этого нужно просканировать сеть и закрыть (блокировать) все необязательные (открытые без необходимости) сетевые порты. Ниже, для примера, представлены службы TCP/IP, которые можно отключить:

  • finger — получение информации о пользователях
  • talk — возможность обмена данными по сети между пользователями
  • bootp — предоставление клиентам информации о сети
  • systat — получение информации о системе
  • netstat — получение информации о сети, такой как текущие соединения
  • rusersd — получение информации о пользователях, зарегистрированных в данный момент

Просмотр активных подключений утилитой Netstat

Команда netstat обладает набором ключей для отображения портов, находящихся в активном и/или пассивном состоянии. С ее помощью можно получить список серверных приложений, работающих на данном компьютере. Большинство серверов находится в режиме LISTEN — ожидание запроса на соединение. Состояние CLOSE_WAIT означает, что соединение разорвано. TIME_WAIT — соединение ожидает разрыва. Если соединение находится в состоянии SYN_SENT, то это означает наличие процесса, который пытается, установить соединение с сервером. ESTABLISHED - соединения установлены, т.е. сетевые службы работают (используются).
Итак, команда netstat показывает содержимое различных структур данных, связанных с сетью, в различных форматах в зависимости от указанных опций. Для сокетов (программных интерфейсов) TCP допустимы следующие значения состояния:

  • CLOSED — Закрыт. Сокет не используется.
  • LISTEN — Ожидает входящих соединений.
  • SYN_SENT — Активно пытается установить соединение.
  • SYN_RECEIVED — Идет начальная синхронизация соединения.
  • ESTABLISHED — Соединение установлено.
  • CLOSE_WAIT — Удаленная сторона отключилась; ожидание закрытия сокета.
  • FIN_WAIT_1 — Сокет закрыт; отключение соединения.
  • CLOSING — Сокет закрыт, затем удаленная сторона отключилась; ожидание подтверждения.
  • LAST_ACK — Удаленная сторона отключилась, затем сокет закрыт; ожидание подтверждения.
  • FIN_WAIT_2 — Сокет закрыт; ожидание отключения удаленной стороны.
  • TIME_WAIT — Сокет закрыт, но ожидает пакеты, ещё находящиеся в сети для обработки

Обнаружение открытых на ПК портов утилитой Netstat
Для выполнения практического задания на компьютере необходимо выполнить команду Пуск > Выполнить. Откроется окно Запуск программы, в нем введите команду cmd.

Чтобы вывести все активные подключения TCP и прослушиваемые компьютером порты TCP/ UDP введите команду netstat. Мы видим, что с Локального адреса (это ваш ПК) прослушиваются 6 портов. Они нужны для поддержки сети. На двух портах мы видим режим ESTABLISHED - соединения установлены, т.е. сетевые службы работают (используются). Четыре порта используются в режиме TIME_WAIT — соединение ожидает разрыва.

Запустите на вашем ПК Интернет и зайдите, например, на www.yandex.ru. Снова выполните команду netstat. Как видим, добавилось несколько новых активных портов с их различными состояниями.

Команда netstat имеет следующие опции.

Ключи для команды netstat:
-a — Показывать состояние всех сокетов; обычно сокеты, используемые серверными процессами, не показываются.
-A — Показывать адреса любых управляющих блоков протокола, связанных с сокетами; используется для отладки.
-i — Показывать состояние автоматически сконфигурированных (auto-configured) интерфейсов. Интерфейсы, статически сконфигурированные в системе, но не найденные во время загрузки, не показываются.
-n — Показывать сетевые адреса как числа. netstat обычно показывает адреса как символы. Эту опцию можно использовать с любым форматом показа.
-r — Показать таблицы маршрутизации. При использовании с опцией -s, показывает статистику маршрутизации.
-s — Показать статистическую информацию по протоколам. При использовании с опцией -r, показывает статистику маршрутизации.
-f семейство_адресов — Ограничить показ статистики или адресов управляющих блоков только указанным семейством_адресов, в качестве которого можно указывать:
inet Для семейства адресов AF_INET, или unix Для семейства адресов AF_UNIX.
-I интерфейс — Выделить информацию об указанном интерфейсе в отдельный столбец; по умолчанию (для третьей формы команды) используется интерфейс с наибольшим объёмом переданной информации с момента последней перезагрузки системы. В качестве интерфейса можно указывать любой из интерфейсов, перечисленных в файле конфигурации системы, например, emd1 или lo0.

P — Показать статистическую информацию по протоколам. При использовании с опцией -r, показывает статистику маршрутизации.

Программа NetStat Agent

Представьте ситуацию: ваше Интернет-соединение стало работать медленно, компьютер постоянно что-то качает из Сети. Вам поможет программа NetStat Agent. С ее помощью вы сможете найти причину проблемы и заблокировать ее. Иначе говоря, NetStat Agent — полезный набор инструментов для мониторинга Интернет соединений и диагностики сети. Программа позволяет отслеживать TCP и UDP соединения на ПК, закрывать нежелательные соединения, завершать процессы, обновлять и освобождать DHCP настройки адаптера, просматривать сетевую статистику для адаптеров и TCP/IP протоколов, а также строить графики для команд Ping и TraceRoute.

В состав программы NetStat Agent вошли следующие утилиты:

  • NetStat — отслеживает TCP и UDP соединения ПК (отображает географическое положение удаленного сервера и имя хоста).
  • IPConfig — отображает свойства сетевых адаптеров и конфигурацию сети.
  • Ping — позволяет проверить доступность хоста в сети.
  • TraceRoute — определяет маршрут между вашим компьютером и конечным хостом, сообщая все IP-адреса маршрутизаторов.
  • DNS Query — подключается к DNS серверу и находит всю информацию о домене (IP адрес сервера, MX-записи (Mail Exchange) и др.).
  • Route — отображает и позволяет изменять IP маршруты на ПК.
  • ARP — отслеживает ARP изменения в локальной таблице.
  • Whois — позволяет получить всю доступную информацию об IP-адресе или домене.
  • HTTP Checker — помогает проверить, доступны ли Ваши веб-сайты.
  • Statistics — показывает статистику сетевых интерфейсов и TCP/IP протоколов.

Сканер портов Nmap (Zenmap)

Nmap — популярный сканер портов, который обследует сеть и проводит аудит защиты. Использовался в фильме «Матрица: Перезагрузка» при взломе компьютера. Наша задача не взломать, а защитить ПК, поскольку одно и то же оружие можно использовать как для защиты, так и для нападения. Иначе говоря, сканером портов nmap можно определить открытые порты компьютера, а для безопасности сети пользователям рекомендуется закрыть доступ к этим портам с помощью брандмауэра.

Обычно для того, чтобы просканировать все порты какого-либо компьютера в сети вводится команда nmap –p1-65535 IP-адрес_компьютера или nmap –sV IP-адрес компьютера, а для сканирования сайта — команда nmap –sS –sV –O -P0 адрес сайта.

Монитор портов TCPView

TCPView показывает все процессы, использующие Интернет-соединения. Запустив TCPView, можно узнать, какой порт открыт и какое приложение его использует, а при необходимости и немедленно разорвать соединение.

Просмотрите активные сетевые подключения локального ПК с помощью монитора портов tpiview. Определите потенциально возможные угрозы (какие порты открыты, и какие приложения их используют). При необходимости можно закрыть установленное приложением TCP-соединение или процесс правой кнопкой мыши

Оcновы офисной политики безопасности

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

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

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

Что такое Netstat?

Это такое приложение, с помощью которого можно узнать, что происходит в данный момент в Сети. Для запуска используется командная строка. В ней же при запуске Netstat используются дополнительные ключи и параметры.

Стоит отметить, что название утилиты образовано из двух составляющих - network statistics, то есть сетевая статистика, что, в принципе, логично. Среди информации, которую показывает программа, можно выделить статистику подключений маршрутизации.

Команды и ключи

Синтаксис ключей и параметров команды довольно обширен. Это позволяет получить сетевую статистику на самых разных уровнях. Далее пойдет описание команды Netstat, ее параметры и ключи:

  • -a - запуск с данным параметром выведет на экран все активные подключения TCP, а также порты TCP и UDP, прослушиваемые системой;
  • -e - отображение расширенной статистики Ethernet, например, о перемещении байтов и пакетов;
  • -n - параметр позволяет показать активные подключения TCP с адресами и номерами портов;
  • -o - так же, как и предыдущий ключ, выводит активные TCP подключения, но в статистику добавлены коды процессов, по ним уже можно точно определить, какое именно приложение использует подключение;
  • -p - отображение информации по определенному протоколу, указанному в параметре. Среди значений может быть tcp, udp, tcpv6 и udpv6;


  • -s - вывод на экран статистики по протоколу, по умолчанию отобразятся все известные типы;
  • -r - данный ключ выведет содержимое таблицы маршрутизации IP, параметр равносилен использованию команды route;
  • интервал - в общей строке команды можно использовать значение интервала, через который будет происходить отображение выбранной статистики; если он опущен, то информация отобразится всего один раз;
  • /? - выведет справочную информацию по команде Netstat.

Использование Netstat в Windows

Для того чтобы вывести на экран командной строки все соединения, при этом разместив их на нескольких страницах, нужно использовать такой синтаксис: «-a | more». Если нужно сохранить всю статистику в определенный файл, нужно использовать « -a > C:\имя файла». Таким образом, в файл, указанный по данному пути, будет записана вся собранная информация.

Результатом работы может выступать небольшая таблица, которая содержит следующие типы данных:

  • Имя. Здесь указывается название найденного активного протокола.
  • Локальный адрес. IP-адрес и порт, использующиеся локальным сервисом для создания соединения. Среди значений может встречаться 0.0.0.0, что означает любой доступный адрес или 127.0.0.1. Это говорит о локальной петле.
  • Внешний адрес. IP и порт внешней службы в сети, с которой установлено соединение.


  • Состояние. Показывает текущий статус соединения. Может принимать разные значения. Например, Listening говорит о том, что служба «слушает» и ждет входящего подключения. Established означает активное соединение.

Netstat, запущенная с ключами -a и -b, покажет все сетевые подключения, а также связанные с ними программы. Это очень удобно, если нужно вычислить, какая программа активно использует трафик и куда отсылает данные.

Дополнительные состояния соединений

Помимо указанных выше состояний соединений, имеются и дополнительные:

  • closed - как следует из названия, соединение находится в закрытом виде;
  • syn_sent - происходит активная попытка установить подключение;
  • syn_received - показывает начальный этап синхронизации;
  • close_wait - удаленный сервер отключен, и происходит завершение соединения.

Использование Netstat в Linux

Применение утилиты в среде Linux, по сути, мало чем отличается от Windows. Есть всего лишь небольшие отличия в параметрах команды. Описание команды Netstat и ее параметров с примерами:

  • Чтобы отобразить все порты, нужно использовать команду - «netstat -a».
  • Все то же самое, но только типа TCP - «-at».
  • UDP порты - «-au».
  • Отобразить в Netstat открытые порты - «-l». Их состояние будет отражено как Listening.
  • Отобразить в Netstat открытые порты TCP - «netstat -lt.
  • Вывод идентификатора процесса и его имени - «netstat -p».
  • Показать статистику для отдельного протокола сети - «netstat -s».


Иногда, чтобы получить более полную информацию о каком-либо сетевом соединении, нужно совместить Netstat с некоторыи командами и утилитами Linux. Например, так:

netstat -ap | grep ssh

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

netstat -an | grep `:80`

Также для Netstat в Linux имеется универсальный набор ключей, способный отобразить все необходимое сразу. Выглядит он так: netstat -lnptux. В наборе данных будут отражены все протоколы TCP, UDP, UNIX Socket, названия процессов и их идентификаторов.

Несколько примеров для определения атаки типа DoS или DDoS

Следующая команда позволит узнать, сколько подключений активно на каждом IP-адресе:

netstat -naltp | grep ESTABLISHED | awk "{print $5}" | awk -F: "{print $1}" | sort -n | uniq -c

Определяем большое количество запросов с одного IP-адреса:

netstat -na | grep:80 | sort

Определяем точное количество запросов, полученных на одно соединение:

netstat -np | grep SYN_RECV | wc -l

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

Заключение

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


Netstat можно использовать при заражении системы каким-либо вирусным программным обеспечением. Она способна показать все приложения с большой активностью подозрительного сетевого трафика. Это поможет на ранних этапах выявить вредное ПО и нейтрализовать его или же защитить сервер от нежелательного вторжения злоумышленников.

Выводы

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

Всем привет ранее я начал рассказ про сетевые утилиты системного администратора в статье "Утилита pathping или как диагностировать проблему на маршруте до сайта. Сетевые утилиты 3 часть ", движемся дальше и разбираем еще одну утилиту netstat или, как определить какие порты слушает ваш компьютер. Данная программка, будет не заменимым инструментом в багаже софта, любого системного инженера, поможет ему провести быструю диагностику ситуации и обнаружить ряд всевозможных проблем с сервисами и их доступностью.

Команды netstat

Netstat - Отображение активных подключений TCP , портов, прослушиваемых компьютером, статистики Ethernet, таблицы маршрутизации IP, статистики IPv4 (для протоколов IP, ICMP, TCP и UDP) и IPv6 (для протоколов IPv6, ICMPv6, TCP через IPv6 и UDP через IPv6)

Представим ситуацию вы установили например MSM LSI утилиту для просмотра параметров RAID контроллера, запускаете утилиту, но ничего она не находит, потому что закрыт порт а какой вы не в курсе, и не всегда в инете можно быстро найти информацию об этом, для этого вы и может запустить netstat и посмотреть какой порт слушает ваш сервер с MSM процессом.

Открываем командную строку Windows и вводим netstat ?. У вас выскочит справка утилиты.


C:\Users\sem>netstat ?

Отображение статистики протокола и текущих сетевых подключений TCP/IP.

NETSTAT [-a] [-b] [-e] [-f] [-n] [-o] [-p протокол] [-r] [-s] [-x] [-t]
[интервал]

  • -a Отображение всех подключений и портов прослушивания.
  • -b Отображение исполняемого файла, участвующего в создании
  • каждого подключения или порта прослушивания. Иногда известные исполняемые файлы содержат множество независимых компонентов. Тогда отображается последовательность компонентов, участвующих в создании подключения или порта прослушивания. В этом случае имя исполняемого файла находится снизу в скобках , сверху находится вызванный им компонент, и так до тех пор, пока не достигнут TCP/IP. Заметьте, что такой подход может занять много времени и требует достаточных разрешений.
  • -e Отображение статистики Ethernet. Может применяться вместе с параметром -s.
  • -f Отображение полного имени домена () для внешних адресов.
  • -n Отображение адресов и номеров портов в числовом формате.
  • -o Отображение ИД процесса каждого подключения.
  • -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 Отображение состояния разгрузки для текущего подключения.
  • -x Отображение подключений, прослушивателей и общих конечных точек NetworkDirect.
  • -y Отображение шаблона подключений TCP для всех подключений. Не может использоваться вместе с другими параметрами. interval Повторное отображение выбранной статистики с паузой между отображениями, заданной интервалом в секундах. Чтобы прекратить повторное отображение статистики, нажмите клавиши CTRL+C. Если этот параметр опущен, netstat напечатает текущую информацию о конфигурации один раз.

Давайте посмотрим интересные ключи утилиты netstat. Первое что вводим

и у нас на экране появится статистика сетевых пакетов ethernet.


Если добавим ключ -s то получим статистику по протоколам.

Очень полезно посмотреть все что слушает ваш хост для этого пишем

Вывод команды содержит Тип протокола либо TCP либо UDP, локальный адрес с портом который слушается и внешний адрес с портом и состояние действия.

Для полного понимания информации, предоставляемой этой командой, необходимо понять принципы установки соединения в протоколе TCP/IP. Вот основные этапы процесса установки соединения TCP/IP:

1. При попытке установить соединение клиент отправляет сообщение SYN серверу.

2. Сервер отвечает собственным сообщением SYN и подтверждением (ACK).

3. После этого клиент отправляет сообщение ACK обратно на сервер, завершая процесс установки соединения.

Процесс разрыва соединения состоит из следующих этапов:

1. Клиент сообщает "Я закончил", отправляя сообщение FIN серверу. На этом этапе клиент только принимает данные от сервера, но сам ничего не отправляет.

2. После этого сервер отправляет сообщение ACK и отправляет собственное сообщение FIN клиенту.

3. После этого клиент отправляет сообщение ACK серверу, подтверждая запрос сервера FIN.

4. При получении сообщения ACK от клиента сервер закрывает соединение.

Понимание этапов процесса установки и разрыва соединения позволяет более прозрачно интерпретировать состояния соединений в выводе команды netstat. Соединения в списке могут находиться в следующих состояниях.

  • CLOSE_WAIT - указывает на пассивную фазу закрытия соединения, которая начинается после получения сервером сообщения FIN от клиента.
  • CLOSED - соединение прервано и закрыто сервером.
  • ESTABLISHED - клиент установил соединение с сервером, получив от сервера сообщение SYN.
  • FIN_WAIT_1 - клиент инициировал закрытие соединения (отправил сообщение FIN).
  • FIN_WAIT_2 - клиент получил сообщения ACK и FIN от сервера.
  • LAST_ACK - сервер отправил сообщение FIN клиенту.
  • LISTEN - сервер готов принимать входящие соединения.
  • SYN_RECEIVED - сервер получил сообщение SYN от клиента и отправил ему ответ.
  • TIMED_WAIT - клиент отправил сообщение FIN серверу и ожидает ответа на это сообщение.
  • YN_SEND - указанное соединение активно и открыто.

Если добавить ключ -f то будут разрешаться имена удаленных внешних ресурсов


также можно вывести только TCP порты

netstat -afp tcp


Или UDP порты

netstat -afp udp

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

Немного теории

Порт выражается числом от 0 до 65535. Многие значения зарегистрированы для служебных нужд, некоторые можно использовать произвольно. Порт определяет собой своеобразное уточнение адреса. К примеру, некоторый ресурс имеет запущенный у себя веб-сервер.

Чтобы знать, куда конкретно обратиться, компьютер, запрашивающий с него информацию, должен знать как минимум IP. Но если на ресурсе есть несколько различных служб, как понять, куда именно нужно переслать запрос? Вот тут и пригодится порт. Зная его номер, компьютер, используя IP-адрес и порт, сможет точно послать запрос на сервер.

Сложности в работе

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

Перечень наиболее популярных значений портов

Диапазон номеров от 0 до 1023 служит для использования системными программами и приложениями:

  • 21 - используется протоколом передачи данных FTP;
  • 22 - служба безопасной оболочки SSH;
  • 23 - Telnet;
  • 25 - протокол для передачи почтовых сообщений;
  • 80 - передача HTTP трафика. Используется веб-серверами;
  • 110 - POP3 (еще один почтовый протокол).

Данные значения зарезервированы и используются системой по умолчанию. Многие из оставшихся портов можно задействовать по своему усмотрению.


Как в Linux проверить открытые порты

Для этого имеются встроенные инструменты. Они показывают, какие порты в Linux открыты. Первый из них — netstat.

Пример его использования: sudo netstat -ntulp

Следующий за самой командой набор ключей представляет собой дополнительные параметры:

  • -l. Означает, что нужно показать только те порты, которые в данный момент прослушиваются;
  • -p. Более подробное отражение информации о приложении, использующем порт. В частности, отобразятся его название и ID процесса;
  • -t. Включить в список TCP порты;
  • -u. То же самое, только с UDP;
  • -n. Означает что адреса IP будут показаны в виде чисел.

Как открыть порт в Linux

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


Для открытия используется утилита iptables. Чтобы проверить, имеется ли она вообще в системе, нужно набрать в консоли команду: iptables --list

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

iptables -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT

Здесь ключ А означает, что нужно добавить новое правило в существующую цепочку. INPUT показывает, что открытый порт будет входящим. Ключ -p говорит, что дальше указывается тип протокола, в данном случае TCP. Dport означает порт назначения, здесь - 53. Ну и ACCEPT — разрешающие соединения.

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