Как использовать tcpdump для мониторинга нашей сети

{title}

В этом уроке мы увидим, как работать с tcpdump . Это инструмент с открытым исходным кодом для командной строки, он служит для мониторинга сети, мы можем понимать его как анализатор пакетов, которые проходят через сеть, в которой вы запускаете программу. Он используется в средах Unix, хотя есть вариант для Windows, называемый WinDump. Вам может быть интересен учебник по EtherApe, который представляет собой инструмент для визуального отображения состояния нашей сети.

Учебное пособие будет работать из Linux, в частности в Ubuntu 16.04, для того, чтобы инструмент работал, нам нужно запускать его с высокими привилегиями, за исключением определенных опций, которые потребуются.

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

 tcpdump [-aAbdDefhHIJKlLnNOpqRStuUvxX #] [-B размер] [-c count] [-C file_size] [-E что-то: секретный] [-F файл] [-G секунд] [-i секунд] [-i интерфейс] [-j tstamptype] [- M secret] [--number] [-Q in | out | inout] [-r файл] [-s snaplen] [- точность метки времени] [--immediate-mode] [тип -T] [ --version] [-V file] [-w file] [-W filecount] [-y datalinktype] [-z команда] [-Z пользователь] [выражение] 
Этот инструмент имеет большое количество параметров, которые мы можем использовать, здесь мы увидим некоторые.

Некоторые параметры tcpdump

  • -A : печать пакетов в коде ASCII.
  • -x : вывести пакеты в шестнадцатеричном формате.
  • -D : показывает доступные интерфейсы.
  • -c номер: он закроет программу, когда указанное количество пакетов было перехвачено.
  • -i интерфейс: программа прослушивает указанный интерфейс.
  • -I : переводит интерфейс в режим монитора.
  • -p : не переводит интерфейс в случайный режим.
  • -f файл : вывод сохраняется в указанном нами файле.
  • -h : Показать справку для использования.

Если мы хотим увидеть все доступные параметры, в Linux мы используем:

 man tcpdump 
Использование этой команды является более полным, чем помощь, предоставляемая параметром -h или --help, которая показывает только следующее:

{title}

Давайте посмотрим 10 примеров, чтобы начать работу с этим мощным инструментом.

примечание

Практически во всех примерах вы увидите, что sudo используется перед tcpdump, как было сказано ранее, необходимо запустить его с высокими привилегиями, если вы используете терминал в качестве пользователя root, вам не нужно ничего помещать перед tcpdump. Если вы хотите остановить захват, вы можете объединить ключи:

CTRL + C

Пример 1
Простейший пример с использованием параметра -A . Для этого мы выполняем:

 tcpdump -A 

{title}

Давайте рассмотрим пример с дополнительным содержанием.

Пример 2
Теперь мы собираемся отфильтровать по хосту и добавить подробный режим с параметром –v :

 sudo tcpdump host 192.168.66.130 -v 
Ниже приведено изображение, на котором используется предыдущая команда:

{title}

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

Пример 3
В этом примере мы рассмотрим пакеты одного хоста, только на этот раз пакеты, связанные с портом 80:

 Хост sudo tcpdump 192.168.66.130 и порт 80 -v 
Если мы посмотрим на захват, то увидим нечто похожее на следующее:

{title}

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

Пример 4
Мы собираемся использовать пример 3, и мы собираемся изменить его, мы хотим отфильтровать пакеты с источником 192.168.66.130, которые получают назначение к порту 80:

 sudo tcpdump src host 192.168.66.130 и dst port 80 -v 
Мы видим, что мы использовали условное выражение, и, так что два условия выполнены, мы также можем использовать или, если мы хотим, чтобы было выполнено только одно из них. Если мы посмотрим на скриншоты, мы увидим POST-запрос.

{title}

Обратимся к пятому примеру.

Пример 5
Мы будем захватывать пакеты с указанием интерфейса:

 sudo tcpdump -i ens33 

$config[ads_text5] not found

примечание

Ваш интерфейс, вероятно, eth0, вы можете увидеть его с помощью команды ifconfig, но также с параметром -D tcpdump это того стоит, мы увидим это в следующем примере.

Ниже вы можете увидеть изображение захвата.

{title}

Давайте перейдем к следующему.

Пример 6
В этом примере все, что мы собираемся сделать, это показать доступные интерфейсы, для этого мы выполним:

 tcpdump -D 
Для этого случая не обязательно быть пользователем root.

{title}

Давай продолжим

Пример 7
Мы хотим перехватить 3 пакета, которые идут на порт 1987, и когда это происходит, программа останавливается:

 sudo tcpdump -c 3 dst port 1987 
На следующем рисунке видно, что захвачены только 3 пакета:

$config[ads_text6] not found

{title}

Давайте посмотрим несколько других примеров.

Пример 8
Когда мы заинтересованы в получении всех пакетов трафика tcp, которые не идут на определенный порт, например, порт 80, мы выполним следующее:

 sudo tcpdump не порт 80 и tcp 
Вывод аналогичен, поэтому в этом примере захват не установлен. Давайте перейдем к предпоследнему примеру.

Пример 9
Мы собираемся захватить 2 пакета определенного интерфейса и покажем их в шестнадцатеричном формате, для этого мы должны выполнить:

 sudo tcpdump -i ens33 -x -c 2 
Ниже вы можете увидеть результат:

{title}

Хорошо, давайте перейдем к последнему примеру учебника.

Пример 10
В этом примере мы сохраним захват в файле для просмотра позже. Перехват ограничен 3 пакетами и указан интерфейс, поэтому мы выполним:

 sudo tcpdump -w test.pcap -i ens33 -c 3 
Давайте посмотрим на скриншот:

{title}

$config[ads_text5] not found

Если мы хотим прочитать этот файл сейчас, мы должны выполнить:

 tcpdump -r test.pcap 
Мы можем оценить это на следующем изображении:

{title}

К настоящему моменту учебник по tcpdump уже есть, у него много возможностей и много опций, поэтому, чтобы научиться обращаться с этим инструментом, лучше всего практиковаться и открывать все его функции понемногу. Вам также может быть интересно почитать что-нибудь об инструменте netcat, поэтому вот ссылка на учебник с примерами:

Как использовать Netcat

  • 0

$config[ads_text5] not found