Checkpoints
Writing packets to a file
/ 100
Знакомство с tcpdump
Введение
На этом занятии вы познакомитесь с программой tcpdump и некоторыми ее функциями. Это основное средство анализа сети для специалистов в области информационной безопасности и сетевых технологий. Как специалисту по ИТ-поддержке, вам важно уметь пользоваться этой программой на случай, если придется разбираться в данных TCP/IP. Она поможет представить сетевой трафик в таком виде, чтобы было удобнее анализировать его и устранять неполадки.
На выполнение заданий отводится 60 минут.
Что вам предстоит сделать
- Основные сведения. Вы узнаете, как использовать программу tcpdump, что означают некоторые ее параметры и как интерпретировать получаемые результаты.
- Перехват пакетов. Вы научитесь сохранять перехваченные пакеты в файлы и читать их.
Для некоторых заданий на этом занятии потребуется ещё один терминал, потому откройте второе окно терминала. Так вы сможете выбирать разные SSH-подключения к ВМ.
Подготовка к выполнению заданий
Начните практическое занятие
Чтобы получить доступ к материалам, которые находятся в операционной системе виртуальной машины, необходимо запустить практическое занятие. Нажмите зеленую кнопку Start Lab (Начать занятие).
После нажатия кнопки Start Lab (Начать занятие) в левой части экрана появятся все сведения о подключении по SSH. Вы увидите следующий интерфейс:
Доступ к виртуальной машине
Ниже мы перечислили три способа подключения в зависимости от операционной системы вашего устройства.
Способ 1: подключение к виртуальной машине для пользователей Windows
Чтобы подключиться, вам предстоит использовать клиент PuTTY Secure Shell (SSH) и внешний IP-адрес виртуальной машины.
Скачайте файл ключа PPK
Вы можете скачать закрытый ключ виртуальной машины в формате PPK, совместимом с PuTTY, на странице запуска практического занятия в Qwiklabs. Нажмите Скачать PPK.
Подключитесь к виртуальной машине по протоколу SSH с помощью клиента PuTTY
-
В поле Host Name (or IP address) (Имя хоста или IP-адрес) введите значение username@external_ip_address.
-
В списке Category (Категория) раскройте меню SSH.
-
Нажмите Auth (Аутентификация), но не раскрывайте этот пункт.
-
В окне Private key file for authentication (Закрытый ключ для аутентификации) выберите файл PPK, который вы скачали, и дважды нажмите на него.
-
Нажмите кнопку Open (Открыть).
- Когда вам будет предложено разрешить первое подключение к этому удаленному SSH-серверу, нажмите Yes (Да). Поскольку вы используете для аутентификации пару ключей, вам не нужно вводить пароль.
Распространенные проблемы
Если PuTTY не может подключиться к вашей виртуальной машине Linux, убедитесь в следующем:
-
Вы ввели значение <username>@<external ip address> в PuTTY.
-
Вы скачали новый PPK-файл для этого практического занятия из Qwiklabs.
-
Вы используете скачанный файл PPK в PuTTY.
Способ 2: подключение к виртуальной машине по протоколу SSH для пользователей macOS и Linux
Скачайте закрытый ключ виртуальной машины
Вы можете скачать закрытый ключ виртуальной машины в формате PEM на странице запуска практического занятия в Qwiklabs. Нажмите Download PEM (Скачать PEM).
Подключитесь к виртуальной машине, используя терминал
Терминал – это программа, которая запускает текстовый интерфейс для ввода команд. Вы будете использовать свой терминал в качестве клиента SSH для подключения к виртуальной машине Linux, предоставленной в рамках занятия.
-
Откройте терминал.
-
Чтобы открыть терминал на компьютере с Linux, используйте сочетание клавиш Ctrl + Alt + t.
-
Чтобы открыть терминал на компьютере с macOS, введите сочетание клавиш Cmd + Пробел, а затем введите слово терминал.
-
-
Введите указанные ниже команды.
Вероятнее всего, вы найдете PEM-файл в папке для загрузок. Если вы не меняли настройки загрузок в своей системе, то путь к ключу PEM будет выглядеть так: ~/Downloads/qwikLABS-XXXXX.pem
chmod 600 ~/Downloads/qwikLABS-XXXXX.pem
ssh -i ~/Downloads/qwikLABS-XXXXX.pem username@External Ip Address
Способ 3: подключение к виртуальной машине по протоколу SSH для пользователей Chrome OS
Скачайте закрытый ключ виртуальной машины
Вы можете скачать закрытый ключ виртуальной машины в формате PEM на странице запуска практического занятия в Qwiklabs. Нажмите Download PEM (Скачать PEM).
Подключитесь к виртуальной машине
-
Добавьте приложение Secure Shell в браузер Chrome.
-
Откройте приложение Secure Shell и нажмите New Connection (Новое подключение).
-
В разделе username (имя пользователя) введите имя пользователя, которое указано на доступной в рамках занятия панели сведений о подключении. В разделе hostname (имя хоста) введите внешний IP-адрес экземпляра виртуальной машины, который указан на доступной в рамках занятия панели сведений о подключении.
-
В разделе Identity (Идентификатор) импортируйте скачанный ключ PEM, нажав кнопку Import (Импортировать). Выберите ключ PEM и нажмите кнопку OPEN (ОТКРЫТЬ).
-
После загрузки ключа нажмите кнопку [ENTER] Connect (Подключиться) ниже.
-
Чтобы продолжить, отвечайте yes (да) во всех окнах с запросами.
-
Вы успешно подключились к виртуальной машине с Linux.
Теперь вы можете продолжить практическое занятие.
Использование tcpdump
Вы выполните несколько заданий с помощью tcpdump. Начнем с основных функций, а затем перейдем к чуть более сложным темам.
Основные функции
Начнем с описания tcpdump и запустим программу без всяких параметров. Обратите внимание, что для захвата трафика с помощью tcpdump
требуются права пользователя root или администратора, поэтому любая команда должна начинаться с sudo
. Требуется по меньшей мере указать контролируемый интерфейс с помощью параметра -i
. Возможно, вы захотите узнать имя первичного сетевого интерфейса с помощью команды ip link
. В данном случае мы во всех примерах используем интерфейс ens4
, но на вашем собственном компьютере это может быть не так.
Чтобы начать контролировать трафик интерфейса с помощью tcpdump
, введите команду, указанную ниже.
Внимание!. Эта команда будет направлять на ваш терминал постоянный поток текста по мере прочтения новых пакетов. Остановить его можно комбинацией клавиш Ctrl + C.
sudo tcpdump -i ens4
По этой команде некоторая базовая информация о найденных пакетах будет выводиться непосредственно на стандартное выходное устройство. Это будет продолжаться до тех пор, пока вы не укажете, что нужно остановиться. Чтобы остановить поток, в любой момент нажмите Ctrl + C.
Вы видите, что после остановки tcpdump
выводит сводные данные о перехваченных пакетах с указанием количества перехваченных, отфильтрованных и потерянных пакетов:
По умолчанию tcpdump выполняет некоторый базовый анализ протокола. Чтобы включить детальный анализ и получить более подробные сведения, используйте параметр -v
. По умолчанию tcpdump также пытается выполнять обратный DNS-запрос для преобразования IP-адресов в имена хостов, а также заменять номера портов на связанные с ними общепринятые имена служб. Эту функцию можно отключить с помощью параметра -n
. Рекомендуется использовать этот параметр, чтобы не генерировать избыточный трафик из-за DNS-запросов и ускорить анализ. Введите команду, указанную ниже.
Внимание!. Эта команда будет направлять на ваш терминал постоянный поток текста по мере прочтения новых пакетов. Остановить его можно комбинацией клавиш Ctrl + C.
sudo tcpdump -i ens4 -vn
Вы видите, что в выходных данных содержится более подробная информация о каждом пакете:
Без параметра детализации программа 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
Вы увидите на экране следующий результат:
Здесь используется утилита dig
, чтобы запросить у заданного DNS-сервера (в нашем случае 8.8.8.8) запись A
для указанного домена (в нашем случае example.com).
Вернувшись к исходному терминалу, вы должны увидеть два перехваченных пакета, поскольку весь остальной трафик должен быть исключен по нашим правилам фильтрации:
Первый пакет – это DNS-запрос, который является нашим обращением к серверу со второго терминала. Обратите внимание, что в данном случае это UDP-трафик. Анализ DNS-запроса, выполненныйtcpdump
, идет сразу после поля UDP checksum
. Сначала идет идентификатор DNS, за ним следуют некоторые параметры UDP, затем тип запроса. В нашем случае это A?
, что означает, что мы запрашиваем запись A
. Далее приводится имя интересующего нас домена (example.com
).
Второй пакет – это ответ сервера, который содержит идентификатор DNS исходного запроса, за которым следует сам запрос. После этого идет ответ на запрос, который содержит IP-адрес, связанный с доменным именем.
Теперь можно остановить сеанс 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
и выводит его на экран. Результат должен выглядеть таким образом. (Обратите внимание, что здесь показана только первая часть выходных данных.)
После этого закройте окно второго терминала и вернитесь к исходному терминалу, где выполняется перехват. Остановите его, нажав Ctrl + C. Вы должны увидеть сводные данные о количестве перехваченных пакетов:
Кроме того, должен быть создан двоичный файл http.pcap
, в котором находятся только что перехваченные пакеты. Не пытайтесь вывести содержимое этого файла на экран. Поскольку это двоичный файл, он будет отображаться в виде бессвязного набора символов, который невозможно прочитать.
Где-то в этом файле содержится информация о пакетах, созданных при извлечении кода HTML сайта example.com
. Теперь мы можем прочитать данные из этого файла с помощью tcpdump, используя следующую команду:
tcpdump -r http.pcap -nv
Обратите внимание, что для чтения пакетов из файла нам не требуется программа sudo
. Также заметьте, что tcpdump записывает в файл полные пакеты, а не только текстовый анализ, который выводится на экран в процессе обычной работы. Например, где-то в выходных данных вы должны увидеть код HTML, который был возвращен в качестве тела исходного запроса на другом терминале:
Нажмите Check my progress (Проверить статус выполнения), чтобы узнать, справились ли вы с заданием.
Заключение
Поздравляем! Вы успешно воспользовались программой tcpdump для мониторинга сети на базовом уровне, в том числе используя фильтры для выделения нужного трафика. Кроме того, вы научились интерпретировать информацию о пакетах, которую выводит tcpdump, а также сохранять и загружать сводную информацию о пакетах, перехваченных во время сеанса.
Как завершить практическое занятие
Выполнив практическое занятие, нажмите End Lab (Завершить занятие). Платформа Qwiklabs удалит список ресурсов, которыми вы пользовались, и выполнит очистку аккаунта.
Вам будет предложено оценить удобство выполнения задания. Выберите нужное количество звезд, введите комментарий и нажмите Submit(Отправить).
Какой оценке соответствует то или иное количество звезд:
- 1 звезда = "Очень плохо"
- 2 звезды = "Плохо"
- 3 звезды = "Затрудняюсь ответить"
- 4 звезды = "Хорошо"
- 5 звезд = "Отлично"
Если вы не хотите оценивать занятие, просто закройте диалоговое окно.
Отправлять отзывы, предложения или исправления можно на вкладке Support (Поддержка).