Знакомство с tcpdump

Lab 1 hour universal_currency_alt 5 Credits show_chart Introductory
info This lab may incorporate AI tools to support your learning.
This content is not yet optimized for mobile devices.
For the best experience, please visit us on a desktop computer using a link sent by email.

Введение

На этом занятии вы познакомитесь с программой tcpdump и некоторыми ее функциями. Это основное средство анализа сети для специалистов в области информационной безопасности и сетевых технологий. Как специалисту по ИТ-поддержке, вам важно уметь пользоваться этой программой на случай, если придется разбираться в данных TCP/IP. Она поможет представить сетевой трафик в таком виде, чтобы было удобнее анализировать его и устранять неполадки.

На выполнение заданий отводится 60 минут.

Что вам предстоит сделать

  • Основные сведения. Вы узнаете, как использовать программу tcpdump, что означают некоторые ее параметры и как интерпретировать получаемые результаты.
  • Перехват пакетов. Вы научитесь сохранять перехваченные пакеты в файлы и читать их.

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

Подготовка к выполнению заданий

Начните практическое занятие

Чтобы получить доступ к материалам, которые находятся в операционной системе виртуальной машины, необходимо запустить практическое занятие. Нажмите зеленую кнопку Start Lab (Начать занятие).

Примечание. Чтобы пройти это практическое занятие, вы должны будете начать работу с виртуальной машиной Linux с помощью локального SSH-клиента вместо Google Console. В рамках этого занятия вам недоступна кнопка Open GCP Console (Открыть GCP Console).

Начать занятие

После нажатия кнопки Start Lab (Начать занятие) в левой части экрана появятся все сведения о подключении по SSH. Вы увидите следующий интерфейс:

Сведения о подключении

Доступ к виртуальной машине

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

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

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

Чтобы подключиться, вам предстоит использовать клиент PuTTY Secure Shell (SSH) и внешний IP-адрес виртуальной машины.

Скачайте файл ключа PPK

Вы можете скачать закрытый ключ виртуальной машины в формате PPK, совместимом с PuTTY, на странице запуска практического занятия в Qwiklabs. Нажмите Скачать PPK.

PPK

Подключитесь к виртуальной машине по протоколу SSH с помощью клиента PuTTY

  1. Скачайте PuTTY.

  2. В поле Host Name (or IP address) (Имя хоста или IP-адрес) введите значение username@external_ip_address.

Примечание. Замените элементы username и external_ip_address значениями, предоставленными вам в рамках занятия.

Putty_1

  1. В списке Category (Категория) раскройте меню SSH.

  2. Нажмите Auth (Аутентификация), но не раскрывайте этот пункт.

  3. В окне Private key file for authentication (Закрытый ключ для аутентификации) выберите файл PPK, который вы скачали, и дважды нажмите на него.

  4. Нажмите кнопку Open (Открыть).

Примечание. Чтобы импортировать файл PPK в PuTTY, используйте доступную в этом инструменте функцию Browse (Обзор). Такие файлы используются только в PuTTY. Их не следует открывать напрямую.

Putty_2

  1. Когда вам будет предложено разрешить первое подключение к этому удаленному SSH-серверу, нажмите Yes (Да). Поскольку вы используете для аутентификации пару ключей, вам не нужно вводить пароль.

Распространенные проблемы

Если PuTTY не может подключиться к вашей виртуальной машине Linux, убедитесь в следующем:

  • Вы ввели значение <username>@<external ip address> в PuTTY.

  • Вы скачали новый PPK-файл для этого практического занятия из Qwiklabs.

  • Вы используете скачанный файл PPK в PuTTY.

Способ 2: подключение к виртуальной машине по протоколу SSH для пользователей macOS и Linux

Скачайте закрытый ключ виртуальной машины

Вы можете скачать закрытый ключ виртуальной машины в формате PEM на странице запуска практического занятия в Qwiklabs. Нажмите Download PEM (Скачать PEM).

PEM

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

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

  1. Откройте терминал.

    • Чтобы открыть терминал на компьютере с Linux, используйте сочетание клавиш Ctrl + Alt + t.

    • Чтобы открыть терминал на компьютере с macOS, введите сочетание клавиш Cmd + Пробел, а затем введите слово терминал.

  2. Введите указанные ниже команды.

Примечание. Измените имя скачанного PEM-файла и путь к нему, имя пользователя и внешний IP-адрес.

Вероятнее всего, вы найдете PEM-файл в папке для загрузок. Если вы не меняли настройки загрузок в своей системе, то путь к ключу PEM будет выглядеть так: ~/Downloads/qwikLABS-XXXXX.pem

chmod 600 ~/Downloads/qwikLABS-XXXXX.pem
ssh -i ~/Downloads/qwikLABS-XXXXX.pem username@External Ip Address

SSH

Способ 3: подключение к виртуальной машине по протоколу SSH для пользователей Chrome OS

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

Скачайте закрытый ключ виртуальной машины

Вы можете скачать закрытый ключ виртуальной машины в формате PEM на странице запуска практического занятия в Qwiklabs. Нажмите Download PEM (Скачать PEM).

PEM

Подключитесь к виртуальной машине

  1. Добавьте приложение Secure Shell в браузер Chrome.

  2. Откройте приложение Secure Shell и нажмите New Connection (Новое подключение).

    new-connection-button

  3. В разделе username (имя пользователя) введите имя пользователя, которое указано на доступной в рамках занятия панели сведений о подключении. В разделе hostname (имя хоста) введите внешний IP-адрес экземпляра виртуальной машины, который указан на доступной в рамках занятия панели сведений о подключении.

    username-hostname-fields

  4. В разделе Identity (Идентификатор) импортируйте скачанный ключ PEM, нажав кнопку Import (Импортировать). Выберите ключ PEM и нажмите кнопку OPEN (ОТКРЫТЬ).

Примечание. Если после импортирования ключ по-прежнему недоступен, обновите приложение и выберите его в раскрывающемся меню Identity (Идентификация).
  1. После загрузки ключа нажмите кнопку [ENTER] Connect (Подключиться) ниже.

    import-button

  2. Чтобы продолжить, отвечайте yes (да) во всех окнах с запросами.

  3. Вы успешно подключились к виртуальной машине с Linux.

Теперь вы можете продолжить практическое занятие.

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

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

Основные функции

Начнем с описания tcpdump и запустим программу без всяких параметров. Обратите внимание, что для захвата трафика с помощью tcpdump требуются права пользователя root или администратора, поэтому любая команда должна начинаться с sudo. Требуется по меньшей мере указать контролируемый интерфейс с помощью параметра -i. Возможно, вы захотите узнать имя первичного сетевого интерфейса с помощью команды ip link. В данном случае мы во всех примерах используем интерфейс ens4, но на вашем собственном компьютере это может быть не так.

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

Внимание!. Эта команда будет направлять на ваш терминал постоянный поток текста по мере прочтения новых пакетов. Остановить его можно комбинацией клавиш Ctrl + C.

sudo tcpdump -i ens4

По этой команде некоторая базовая информация о найденных пакетах будет выводиться непосредственно на стандартное выходное устройство. Это будет продолжаться до тех пор, пока вы не укажете, что нужно остановиться. Чтобы остановить поток, в любой момент нажмите Ctrl + C.

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

e62459231285086a.png

По умолчанию tcpdump выполняет некоторый базовый анализ протокола. Чтобы включить детальный анализ и получить более подробные сведения, используйте параметр -v. По умолчанию tcpdump также пытается выполнять обратный DNS-запрос для преобразования IP-адресов в имена хостов, а также заменять номера портов на связанные с ними общепринятые имена служб. Эту функцию можно отключить с помощью параметра -n. Рекомендуется использовать этот параметр, чтобы не генерировать избыточный трафик из-за DNS-запросов и ускорить анализ. Введите команду, указанную ниже.

Внимание!. Эта команда будет направлять на ваш терминал постоянный поток текста по мере прочтения новых пакетов. Остановить его можно комбинацией клавиш Ctrl + C.

sudo tcpdump -i ens4 -vn

Вы видите, что в выходных данных содержится более подробная информация о каждом пакете:

e74637cc70c05cc3.png

Без параметра детализации программа tcpdump показывает нам только:

  • протокол 3-го уровня, адреса и порты источника и адресата;
  • данные TCP, в частности флаги, порядковые номера и номера подтверждений, размер окна и параметры.

При наличии параметра детализации вы также увидите такие данные IP-заголовка, как время жизни, идентификатор пакета, параметры и флаги.

Фильтрация

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

Итак, давайте введем команду. Как и в предыдущем случае, она будет выполняться до нажатия Ctrl + C, но теперь вы не увидите выходных данных.

sudo tcpdump -i ens4 -vn host 8.8.8.8 and port 53

Проанализируем, из чего состоит этот фильтр и что он делает. Параметр host 8.8.8.8 указывает, что нам нужны только пакеты с заданным IP-адресом источника или адресата (в данном случае 8.8.8.8). Если нас интересует трафик только в одном направлении, мы можем добавить указатель направления dst или src (адресат и источник соответственно). Если указатель направления опустить, то будет контролироваться трафик в любом направлении.

Фрагмент port 53 означает, что нас интересуют только пакеты с заданным портом источника и адресата (в данном случае DNS). Два условия фильтра объединены логическим оператором and (И). Это означает, что пакет будет захвачен в том случае, если выполняются условия обоих фильтров.

Двигаемся дальше и подключим второй терминал, следуя инструкциям в разделе Accessing the virtual machine (Доступ к виртуальной машине). Нажмите на раздел Accessing the virtual machine на панели навигации справа и введите следующую команду:

dig @8.8.8.8 A example.com

Вы увидите на экране следующий результат:

e5f29bb1a837ebc6.png

Здесь используется утилита dig, чтобы запросить у заданного DNS-сервера (в нашем случае 8.8.8.8) запись A для указанного домена (в нашем случае example.com).

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

b6a4cefaba5b53ef.png

Первый пакет – это DNS-запрос, который является нашим обращением к серверу со второго терминала. Обратите внимание, что в данном случае это UDP-трафик. Анализ DNS-запроса, выполненныйtcpdump, идет сразу после поля UDP checksum. Сначала идет идентификатор DNS, за ним следуют некоторые параметры UDP, затем тип запроса. В нашем случае это A?, что означает, что мы запрашиваем запись A. Далее приводится имя интересующего нас домена (example.com).

49bfc7a0a335ca52.png

Второй пакет – это ответ сервера, который содержит идентификатор DNS исходного запроса, за которым следует сам запрос. После этого идет ответ на запрос, который содержит IP-адрес, связанный с доменным именем.

8df52ed65c9b5f66.png

Теперь можно остановить сеанс tcpdump на первом терминале, нажав Ctrl + C. Оставьте окно второго терминала открытым, он вам скоро снова понадобится.

Далее посмотрим, как tcpdump записывает пакеты в файл и считывает их оттуда.

Сохранение перехваченных пакетов

На одном из терминалов введите команду:

sudo tcpdump -i ens4 port 80 -w http.pcap

По этой команде на нашем интерфейсе ens4 начинается перехват исключительно HTTP-трафика, на что указывает порт 80. Параметр -w указывает, что мы хотим записать перехваченные пакеты в файл http.pcap. Как и все прочие перехваты, этот будет выполняться вплоть до принудительной остановки нажатием Ctrl + C.

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

В окне второго терминала введите следующую команду для создания некоторого трафика:

curl example.com

Эта команда извлекает код HTML сайта example.com и выводит его на экран. Результат должен выглядеть таким образом. (Обратите внимание, что здесь показана только первая часть выходных данных.)

d261699311c8cdba.png

После этого закройте окно второго терминала и вернитесь к исходному терминалу, где выполняется перехват. Остановите его, нажав Ctrl + C. Вы должны увидеть сводные данные о количестве перехваченных пакетов:

aeacf2f21c2dea4f.png

Кроме того, должен быть создан двоичный файл http.pcap, в котором находятся только что перехваченные пакеты. Не пытайтесь вывести содержимое этого файла на экран. Поскольку это двоичный файл, он будет отображаться в виде бессвязного набора символов, который невозможно прочитать.

6649a448a7faef33.png

Где-то в этом файле содержится информация о пакетах, созданных при извлечении кода HTML сайта example.com. Теперь мы можем прочитать данные из этого файла с помощью tcpdump, используя следующую команду:

tcpdump -r http.pcap -nv

5b2f12f38410cce2.png

Обратите внимание, что для чтения пакетов из файла нам не требуется программа sudo. Также заметьте, что tcpdump записывает в файл полные пакеты, а не только текстовый анализ, который выводится на экран в процессе обычной работы. Например, где-то в выходных данных вы должны увидеть код HTML, который был возвращен в качестве тела исходного запроса на другом терминале:

6d7bb5d7e908c6e.png

Нажмите Check my progress (Проверить статус выполнения), чтобы узнать, справились ли вы с заданием.

Запись пакетов в файл

Заключение

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

Как завершить практическое занятие

Выполнив практическое занятие, нажмите End Lab (Завершить занятие). Платформа Qwiklabs удалит список ресурсов, которыми вы пользовались, и выполнит очистку аккаунта.

Вам будет предложено оценить удобство выполнения задания. Выберите нужное количество звезд, введите комментарий и нажмите Submit(Отправить).

Какой оценке соответствует то или иное количество звезд:

  • 1 звезда = "Очень плохо"
  • 2 звезды = "Плохо"
  • 3 звезды = "Затрудняюсь ответить"
  • 4 звезды = "Хорошо"
  • 5 звезд = "Отлично"

Если вы не хотите оценивать занятие, просто закройте диалоговое окно.

Отправлять отзывы, предложения или исправления можно на вкладке Support (Поддержка).

Before you begin

  1. Labs create a Google Cloud project and resources for a fixed time
  2. Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
  3. On the top left of your screen, click Start lab to begin

Use private browsing

  1. Copy the provided Username and Password for the lab
  2. Click Open console in private mode

Sign in to the Console

  1. Sign in using your lab credentials. Using other credentials might cause errors or incur charges.
  2. Accept the terms, and skip the recovery resource page
  3. Don't click End lab unless you've finished the lab or want to restart it, as it will clear your work and remove the project

This content is not currently available

We will notify you via email when it becomes available

Great!

We will contact you via email if it becomes available

One lab at a time

Confirm to end all existing labs and start this one

Use private browsing to run the lab

Using an Incognito or private browser window is the best way to run this lab. This prevents any conflicts between your personal account and the Student account, which may cause extra charges incurred to your personal account.