Поиск по сайту:

15 полезных примеров команд Sockstat для поиска открытых портов во FreeBSD


Sockstat — это универсальная утилита командной строки, используемая для отображения сетевых и системных открытых сокетов во FreeBSD. В основном команда sockstat установлена во FreeBSD по умолчанию и обычно используется для отображения имен процессов, открывших определенный сетевой порт в системе FreeBSD.

Однако sockstat также может отображать список открытых сокетов на основе версии протокола (обе версии IP), состояния соединения и того, какие порты связывает и прослушивает демон или программа.

Читайте также: 20 полезных примеров команды netstat для проверки сетевых подключений

Он также может отображать сокеты межпроцессного взаимодействия, обычно известные как сокеты домена Unix или IPC. Команда Sockstat в сочетании с фильтром grep или утилитой awk оказывается мощным инструментом для локального сетевого стека.

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

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

Требования

  1. Руководство по установке FreeBSD 11.1

1. Перечислите все открытые порты во FreeBSD.

Просто выполненная без каких-либо опций или переключателей команда sockstat отобразит все открытые сокеты в системе FreeBSD, как показано на снимке экрана ниже.

sockstat

Значения, отображаемые в выводе sockstat, описываются следующим образом:

  • USER: владелец (учетная запись пользователя) сокета.
  • COMMAND: команда, открывающая сокет.
  • PID: идентификатор процесса команды, которой принадлежит сокет.
  • FD: номер файлового дескриптора сокета.
  • PROTO: транспортный протокол (обычно TCP/UDP), связанный с открытым сокетом или типом сокета в случае сокетов домена unix (дейтаграмма, поток или seqpac) для сокетов UNIX.
  • ЛОКАЛЬНЫЙ АДРЕС: представляет локальный IP-адрес для IP-сокетов. В случае сокетов Unix он представляет имя файла конечной точки, прикрепленное к сокету. “?? Обозначение ” подразумевает, что конечная точка сокета не может быть распознана или установлена.
  • ИНОСТРАННЫЙ АДРЕС: удаленный IP-адрес, к которому подключен сокет.

2. Список прослушиваемых или открытых портов во FreeBSD

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

sockstat -l

3. Список открытых портов IPv4 во FreeBSD

Чтобы отобразить все открытые сокеты только для протокола IPv4, введите команду с флагом -4, как показано в примере ниже.

sockstat -4

4. Список открытых портов IPv6 во FreeBSD

Как и в версии IPv4, вы также можете отображать открытые сетевые сокеты только для IPv6, введя команду, как показано ниже.

sockstat -6

5. Перечислите открытые порты TCP или UDP во FreeBSD.

Чтобы отобразить сетевые сокеты, основанные только на указанном сетевом протоколе, например TCP или UDP, используйте флаг -P, за которым следует флаг имя аргумента протокола.

Имена протоколов можно найти, проверив содержимое файла /etc/protocols. В настоящее время протокол ICMP не поддерживается инструментом Sockstat.

Показать только TCP-сокеты
sockstat -P tcp

Показать только сокеты UDP
sockstat -P udp

Соедините оба протокола.

sockstat –P tcp,udp

6. Перечислите номера портов TCP и UDP.

Если вы хотите отобразить все открытые сокеты TCP или UDP IP на основе номера локального или удаленного порта, используйте приведенные ниже командные флаги и синтаксис, как показано на снимке экрана ниже.

sockstat -P tcp -p 443             [Show TCP HTTPS Port]
sockstat -P udp -p 53              [Show UDP DNS Port] 
sockstat -P tcp -p 443,53,80,21    [Show Both TCP and UDP]

7. Список открытых и подключенных портов во FreeBSD

Чтобы отобразить все открытые и подключенные сокеты, используйте флаг -c. Как показано в примерах ниже, вы можете просмотреть все сокеты, подключенные по HTTPS, или все сокеты, подключенные по TCP, введя команды.

sockstat -P tcp -p 443 -c
sockstat -P tcp -c

8. Список портов прослушивания сети во FreeBSD

Чтобы вывести список всех открытых TCP-сокетов в состоянии прослушивания, добавьте флаги -l и -s, как показано в примере ниже. Будучи протоколом без установления соединения, UDP не сохраняет никакой информации о состоянии соединения.

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

sockstat -46 -l -s

9. Список сокетов Unix и именованных каналов

Сокеты домена Unix, а также другие формы локального межпроцессного взаимодействия, такие как именованные каналы, могут отображаться с помощью команды sockstat с использованием флага -u, как показано на рисунке ниже.

sockstat -u

10. Список портов, открытых приложением во FreeBSD

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

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

sockstat -46 | grep nginx

Чтобы отобразить только подключенные сокеты, связанные с веб-сервером Nginx, введите следующую команду.

sockstat -46 -c| grep nginx

11. Список подключенных протоколов HTTPS

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

sockstat -46 -s -P TCP -p 443 -c

12. Список удаленных HTTP-сокетов

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

sockstat -46 -c | egrep '80|443' | awk '{print $7}' | uniq -c | sort -nr
sockstat -46 -c -p 80,443 | grep -v ADDRESS|awk '{print $7}' | uniq -c | sort -nr

13. Найдите самые высокие HTTP-запросы по IP-адресам.

Если вы хотите узнать, сколько HTTP-соединений запрашивается каждым удаленным IP-адресом, введите команду ниже. Эта команда может быть очень полезна, если вы хотите определить, подвергается ли ваш веб-сервер какой-либо DDOS-атаке. В случае подозрений следует изучить IP-адреса с самой высокой частотой запросов.

sockstat -46 -c | egrep '80|443' | awk '{print $7}' | cut -d: -f1 | uniq -c | sort –nr

14. Список открытых сокетов DNS

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

sockstat -46 -P tcp –p 53 -s

15. Запрос TCP DNS в локальном домене

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

dig +tcp  www.domain.com  @127.0.0.1

Вот и все! Наряду с утилитами командной строки netstat и lsof, командная строка sockstat — это мощная утилита, используемая для получения сетевой информации и устранения неполадок в различных аспектах сетевого стека FreeBSD, а также процессов и служб, связанных с сетью.

Аналог команды sockstat во FreeBSD в Linux представлен командой netstat или новой командой ss. Хотите верьте, хотите нет, но на основе утилиты sockstat вы можете найти аналогичное приложение, разработанное для ОС Android, под названием SockStat – Simple Netstat GUI.