Полезным инструментом для захвата трафика на входе в и на выходе из определенного интерфейса является CAPTURE. Команда capture позволяет создать фильтр, который будет отлавливать необходимые пакеты в соответствии с заданными параметрами. Фильтр составляется по аналогии с ACL, синтаксис команды очень похож.
Фактически команда capture представляет собой встроенный сниффер трафика, с помощью которого можно провести анализ потоков трафика и выявить проблемы как на самом устройстве, так и на участках рядом с ним.
Рассмотрим простой сценарий, когда capture может оказаться полезной. На рисунке ниже представлена схема, в которой на границе зоны ответственности заказчика установлена Cisco ASA, а перед подключением к провайдеру имеется некоторое оборудование-"черный ящик", доступа к которому у заказчика нет, но зато достоверно известно, что этот "черный ящик" занимается в том числе фильтрацией трафика и межсетевым экранированием.
Необходимо проверить доступность сервера извне, со стороны сети Интернет. Предположим, что с помощью приложения telnet мы пытаемся пройти на 666 порт TCP этого сервера и видим отказ. Беглый просмотр конфига пограничного межсетевого экрана не выявил никаких проблем. Для дальнейшей диагностики схемы и поиска проблемы воспользуемся захватом трафика.
В EXEC режиме (режим привилегированного пользователя) Создаем правило захвата трафика:
Проверка пойманного трафика осуществляется с помощью команды show capture doom. Активация захвата происходит сразу после ввода команды. Команда show capture без указания названия процесса захвата выведет все запущенные процессы на экран.
В EXEC режиме (режим привилегированного пользователя) Создаем правило захвата трафика:
asa#capture doom interface OUTSIDE match tcp any any eq 666Команду стоит интерпретировать так: запустить процесс захвата трафика под названием doom, который будет осуществлять на интерфейсе OUTSIDE захват трафика от любых пользователей по порту получателя 666/TCP.
Проверка пойманного трафика осуществляется с помощью команды show capture doom. Активация захвата происходит сразу после ввода команды. Команда show capture без указания названия процесса захвата выведет все запущенные процессы на экран.
asa# show capture
capture doom type raw-data interface OUTSIDE [Capturing - 0 bytes]
match tcp any any eq 666
asa# show capture doom
0 packet captured
0 packet shown
asa#
Проводим проверку порта с помощью telnet: open <Внешний адрес сервера> 666. В результате на ASA видим следующую картину:
asa# sh capture
capture doom type raw-data interface MGMT [Capturing - 242 bytes]
match tcp any any eq 666
asa# sh capture doom
3 packets captured
1: 01:42:40.248201 <Адрес отправителя>.39357 > <Внешний адрес сервера>.666: S 4272333389:4272333389(0) win 8192 <mss 1366,nop,wscale 2,nop,nop,sackOK>
2: 01:42:43.249269 <Адрес отправителя>.39357 > <Внешний адрес сервера>.666: S 4272333389:4272333389(0) win 8192 <mss 1366,nop,wscale 2,nop,nop,sackOK>
3: 01:42:49.243517 <Адрес отправителя>.39357 > <Внешний адрес сервера>.666: S 4272333389:4272333389(0) win 8192 <mss 1366,nop,nop,sackOK>
3 packets shown
asa#
Видно, что трафик доходит до интерфейса, значит, на промежуточных устройствах все в порядке. В случае, если трафик не был захвачен, необходимо проверить правила фильтрации на вышестоящих устройствах.
Команда захвата трафика поддерживает до 5 условий в пределах одного процесса. Условия можно прописывать с помощью команды match:
capture <имя> match <условие1> match <условие2> ... match <условие5>
Другие параметры, доступные при настройке захвата:
access-list <acl-name> — перехватывать пакеты, которые совпадают с указанным ACL; ACL позволяет обойти ограничение на количество условий, указываемых напрямую в команде с посмощью match;
buffer <buffer-size> — настроить размер буфера (в байтах) в который помещаются перехваченные пакеты. По умолчанию размер буфера 512 Kb;
circular-buffer — циклическое затирание буфера после его наполнения. По умолчанию буфер не перезаписывается;
ethernet-type <type> — перехватывать Ethernet-пакеты определенного типа. По умолчанию IP;
headers-only — перехватывать только заголовки L2, L3 и L4 уровней без самих данных;
interface <intf-name> — перехватывать пакеты на указанном интерфейсе;
packet-length <length> — максимальный размер данных, который будет перехвачен из каждого пакета. По умолчанию 68 байт, возможные значения от 14 до 9216 байт;
real-time — отображать перехватываемые пакеты в реальном времени;
trace [trace-count <count>] — позволяет отслеживать каким образом ASA обрабатывает пакеты внутри себя (если этот параметр не указан при задании правила, то при просмотре информации опция trace не будет отображать как ASA обрабатывала пакет). Параметр trace-count позволяет задать максимальное количество пакетов, которые будут отслеживаться. По умолчанию 50, диапазон значений от 1 до 1000;
type — перехватывать пакеты указанного типа:
asp-drop — перехватывать пакеты отброшенные по определенной причине, выбранной из списка возможных;
inline-tag - перехват пакетов с L2 SGT-меткой (которую можно задать или оставить поле пустым, перехватывая любые метки);
isakmp — перехватывать зашифрованные и расшифрованные пакеты ISAKMP;
lacp - перехват входящих и исходящих данных L2 LACP на одном или нескольких интерфейсах;
raw-data — перехватывать входящие и исходящие пакеты на одном или боле интерфейсах. Значение по умолчанию,
tls-proxy — перехватывать зашифрованные входящие и исходящие данные от TLS proxy на одном или более интерфейсах;
webvpn user <username> — перехватывать пакеты WebVPN для конкретного пользователя.
buffer <buffer-size> — настроить размер буфера (в байтах) в который помещаются перехваченные пакеты. По умолчанию размер буфера 512 Kb;
circular-buffer — циклическое затирание буфера после его наполнения. По умолчанию буфер не перезаписывается;
ethernet-type <type> — перехватывать Ethernet-пакеты определенного типа. По умолчанию IP;
headers-only — перехватывать только заголовки L2, L3 и L4 уровней без самих данных;
interface <intf-name> — перехватывать пакеты на указанном интерфейсе;
packet-length <length> — максимальный размер данных, который будет перехвачен из каждого пакета. По умолчанию 68 байт, возможные значения от 14 до 9216 байт;
real-time — отображать перехватываемые пакеты в реальном времени;
trace [trace-count <count>] — позволяет отслеживать каким образом ASA обрабатывает пакеты внутри себя (если этот параметр не указан при задании правила, то при просмотре информации опция trace не будет отображать как ASA обрабатывала пакет). Параметр trace-count позволяет задать максимальное количество пакетов, которые будут отслеживаться. По умолчанию 50, диапазон значений от 1 до 1000;
type — перехватывать пакеты указанного типа:
asp-drop — перехватывать пакеты отброшенные по определенной причине, выбранной из списка возможных;
inline-tag - перехват пакетов с L2 SGT-меткой (которую можно задать или оставить поле пустым, перехватывая любые метки);
isakmp — перехватывать зашифрованные и расшифрованные пакеты ISAKMP;
lacp - перехват входящих и исходящих данных L2 LACP на одном или нескольких интерфейсах;
raw-data — перехватывать входящие и исходящие пакеты на одном или боле интерфейсах. Значение по умолчанию,
tls-proxy — перехватывать зашифрованные входящие и исходящие данные от TLS proxy на одном или более интерфейсах;
webvpn user <username> — перехватывать пакеты WebVPN для конкретного пользователя.
Настраиваемые параметры захвата не сохраняются в конфигурации устройства и удаляются после перезагрузки. Для остановки захвата на время необходимо после ввода команды capture и имени процесса указать параметр stop.
Помимо просмотра захваченного трафика в консоли (при этом существует несколько параметров отображения в зависимости от требуемой степени детализации) существует возможность просмотра захваченного трафика в браузере и в WireShark или ином сниффере, способном открыть файлы типа pcap.
Для того, чтобы открыть дамп трафика в браузере, необходимо настроить доступ по https на устройство. В случае, если сервер работает, необходимо ввести следующую ссылку: Для того, чотбы с помощью браузера скачать дамп трафика, необходимо к указанной выше ссылке добавить /pcap:https://<Адрес устройства>/admin/capture/<Имя дампа>
https://<Адрес устройства>/admin/capture/<Имя дампа>/pcap
Сохраненный файл можно открыть в WireShark или ином сниффере.
Так же файл дампа трафика можно сохранить на внешнее или внутреннее хранилище. Для этого необходимо воспользоваться командой copy. Ниже представлены все варианты хранилищ, доступные для сохранения трафика:
asa# copy /pcap capture:doom ?
cluster: Copy to cluster: file system
disk0: Copy to disk0: file system
disk1: Copy to disk1: file system
flash: Copy to flash: file system
ftp: Copy to ftp: file system
scp: Copy to scp: file system
smb: Copy to smb: file system
tftp: Copy to tftp: file system
В заключении хотел бы отметить, что все тесты проводились на ASA с ОС версии 9.7. Указанные параметры, а так же списки доступных команд могут отличаться от версии к версии. Тем не менее суть работы захвата трафика остается неизменной.
Комментариев нет:
Отправить комментарий