Deltaconfig.ru

Как сделать capture на Cisco ASA

Read the article FEW WORDS ABOUT CAPTURING PACKETS ON CISCO ASA in English

На межсетевых экранах Cisco ASA есть прекрасный инструмент для захвата и анализа проходящего через него трафика под названием capture. Иногда это называется «сделать dump трафика» или «сниффер траффика».
Для включения capture  необходимо всего 2 параметра:

Шаг 1. Целевой трафик

Интересующие пакеты указываются при помощи самого обычного списка доступа (access list). Для примера рассмотрим трафик хоста 192.168.10.100. Создается список доступа из двух строк, где адрес хоста выступает последовательно сначала источником, потом назначением.
FW-DELTACONFIG-1(config)#
access-list ACL_CAP extended permit ip host 192.168.10.100 any
access-list ACL_CAP extended permit ip any host 192.168.10.100


})Если требуется что-то более конкретное, то «any» из примера выше заменяется на адрес другого хоста или даже сеть, а протокол «ip» на интересующий. Например интересует трафик по протоколу TCP между хостами 192.168.10.100 и 1.1.1.1
FW-DELTACONFIG-1(config)#
access-list ACL_CAP extended permit tcp host 192.168.10.100 host 1.1.1.1
access-list ACL_CAP extended permit tcp host 1.1.1.1  host 192.168.10.100

Важно!
Ограничений на этот список доступа нет – он никак не блокирует трафик, проходящий через устройство, и можно добавить сколько угодно строк. Однако анализировать полученные результаты будет тем сложнее, чем больше разнообразных пакетов будет захвачено. Обычно на практике удобнее всего захватывать трафик по протоколу ip (все соединения) между двумя конкретными хостами.

Шаг 2. Указание интерфейса и дополнительных параметров

После того, как определились с трафиком, который нужно захватить, включаем capture на ближайшем к источнику(!) интерфейсе. Если трафик, указанный в списке доступа (access list) появится на интерфейсе, то обязательно будет захвачен и записан в буфер даже в том случае, если есть явное запрещающее правило и межсетевой экран не пропустит пакет дальше.
Синтаксис команды capture:
Capture «название» access-list «список доступа с нужным трафиком» interface «имя интерфейса»
Допустим, что у межсетевого экрана Cisco ASA 2 интерфейса:

Для примера: хост с адресом 192.168.10.100 не может попасть на веб сервер с адресом 10.0.0.20. Для того, чтобы понять причину создадим соответствующий список доступа и включим capture на внутреннем интерфейсе inside.
FW-DELTACONFIG-1(config)#
access-list ACL_CAP extended permit ip host 192.168.10.100 host 10.0.0.1
access-list ACL_CAP extended permit ip host 10.0.0.1 host 192.168.10.100
capture capmy access-list ACL_CAP interface inside

capmy – произвольное название для capture
ACL_CAP – список доступа (access list), указывающий интересующий нас трафик
Inside – интерфейс, на котором включен захват пакетов.
После включения capture запускаем с хоста 192.168.10.100 ping (icmp запрос) до адреса веб сервера 10.0.0.20 и дожидаемся окончания процесса. В файле capture должны появиться строки про интересующий нас трафик.

Шаг 3. Посмотреть результат

Просмотр всех настроенных capture выполняется командой sh capture
FW-DELTACONFIG-1# sh capture
capture capmy type raw-data access-list ACL_CAP interface inside [Capturing - 720 bytes]

Просмотреть содержимое захваченных пакетов можно командой show capture «название»
FW-DELTACONFIG-1# sh capture capmy
8 packets captured
1: 16:34:59.149223 192.168.10.100 > 10.0.0.20: icmp: echo request
2: 16:34:59.222690 10.0.0.20 > 192.168.10.100: icmp: echo reply
3: 16:35:00.150123 192.168.10.100 > 10.0.0.20: icmp: echo request
4: 16:35:00.223163 10.0.0.20 > 192.168.10.100: icmp: echo reply
5: 16:35:01.153236 192.168.10.100 > 10.0.0.20: icmp: echo request
6: 16:35:01.241122 10.0.0.20 > 192.168.10.100: icmp: echo reply
7: 16:35:02.155265 192.168.10.100 > 10.0.0.20: icmp: echo request
8: 16:35:02.228259 10.0.0.20 > 192.168.10.100: icmp: echo reply
8 packets shown

Из вывода команды следует, что через интерфейс межсетевого экрана в одну сторону (192.168.10.100 > 10.0.0.20) проходят icmp запросы хоста 192.168.10.100, в другую (10.0.0.20 > 192.168.10.100) идут ответы от хоста 10.0.0.20.
Далее запустим из командной строки компьютера с адресом 192.168.10.100 команду telnet 10.0.0.20 80 для проверки связи по 80 порту TCP (ведь это же веб сервер)

Проверим какой трафик попал в capture
FW-DELTACONFIG-1# sh cap capmy
11 packets captured
/… вырезано … /
8: 16:47:48.350613 10.0.0.20 > 192.168.10.100: icmp: echo reply
9: 16:47:51.322065 192.168.10.100.62990 > 10.0.0.20.80: S 3496653167:3496653167(0) win 8192 <mss 1460,nop,wscale 2,nop,nop,sackOK>
10: 16:47:54.317335 192.168.10.100.62990 > 10.0.0.20.80: S 3496653167:3496653167(0) win 8192 <mss 1460,nop,wscale 2,nop,nop,sackOK>
11: 16:48:00.318739 192.168.10.100.62990 > 10.0.0.20.80: S 3496653167:3496653167(0) win 8192 <mss 1460,nop,nop,sackOK>
11 packets shown

К предыдущему выводу добавились 3 строки с номерами 9. 10 и 11. Обратите внимание, что трафик (192.168.10.100.62990 > 10.0.0.20.80) идет только в сторону сервера 10.0.0.20 и не зафиксировано ни одного ответного пакета.

Шаг 4. Анализ

Получается, что ping проходит в обе стороны, однако TCP соединение по 80 порту не функционирует — нет обратных пакетов. При этом принципиально связность между хостами есть (все объекты функционируют, маршрутизация в порядке).Отмечу, что capture пока показывает трафик только с одного  интерфейса Cisco ASA (inside) и пока еще не понятна причина, почему не проходит соединение.
Сделаем вторую capture на другом интерфейсе dmz, ближайшем к адресу назначения для полноты картины.
Список доступа используем тот же, но укажем другое название capture  и интерфейс.
FW-DELTACONFIG-1(config)#
capture capmy_dmz access-list ACL_CAP interface dmz

После этого вновь запустим трафик по 80 порту с хоста 192.168.10.100 и посмотрим результат обоих capture
FW-DELTACONFIG-1# sh cap capmy
14 packets captured
/… вырезано … /
11: 16:48:00.318739 192.168.10.100.62990 > 10.0.0.20.80: S 3496653167:3496653167(0) win 8192 <mss 1460,nop,nop,sackOK>
12: 16:50:59.577332 10.0.66.144.56775 > 10.185.45.173.80: S 1159823597:1159823597(0) win 8192 <mss 1460,nop,wscale 2,nop,nop,sackOK>
13: 16:50:02.577240 10.0.66.144.56775 > 10.185.45.173.80: S 1159823597:1159823597(0) win 8192 <mss 1460,nop,wscale 2,nop,nop,sackOK>
14: 16:50:08.577500 10.0.66.144.56775 > 10.185.45.173.80: S 1159823597:1159823597(0) win 8192 <mss 1460,nop,nop,sackOK>
14 packets shown

FW-DELTACONFIG-1# sh cap capmy_dmz
3 packets captured
1: 16:50:59.577332 10.0.66.144.56775 > 10.185.45.173.80: S 1159823597:1159823597(0) win 8192 <mss 1460,nop,wscale 2,nop,nop,sackOK>
2: 16:50:02.577240 10.0.66.144.56775 > 10.185.45.173.80: S 1159823597:1159823597(0) win 8192 <mss 1460,nop,wscale 2,nop,nop,sackOK>
3: 16:50:08.577500 10.0.66.144.56775 > 10.185.45.173.80: S 1159823597:1159823597(0) win 8192 <mss 1460,nop,nop,sackOK>
3 packets shown

Видно, что те же самые пакеты появились и на втором интерфейсе dmz, ближайшем к адресу назначения 10.0.0.20. Это значит, что трафик успешно прошел через межсетевой экран, однако в данном случае не отвечает сервер и проблему нужно искать уже на нем.  Может быть не запущена служба www сервиса или же включен брандмауэр.

Шаг 5. Очистить результаты

Обратите внимание, что в первой capture на интерфейсе inside отображается информация о 14 пакетах, а во второй из-за того, что включили позже, только о трех последних. Дабы уравнять счетчики и очистить результаты используется командой clear capture «название»
FW-DELTACONFIG-1# clear cap capmy_dmz
FW-DELTACONFIG-1# clear cap capmy

Шаг 6. Как получить файл capture

Иногда требуется не только посмотреть на пакеты, но и изучить их более детально. Например, в такой программе как Wireshark или аналогичных анализаторах трафика.
Есть много вариантов как скачать файлик (ftp, usb…), но в статье рассмотрю самый простой и проверенный вариант – через TFTP сервер. Для этого:

Будет запрошено имя capture, которую требуется скачать (Source capture name), адрес tftp сервера (Address or name of remote host) и под каким именем сохранить файл capture (Destination filename)
FW-DELTACONFIG-1# copy /pcap capture: tftp:
Source capture name []? capmy
Address or name of remote host []? 192.168.10.100
Destination filename [capmy]?
!!!

Теперь можно открыть файл в анализаторе трафика Wireshark или передать для анализа кому-то еще.

Шаг 7. Дополнительные опции

Файл capture по умолчанию занимает 512 кбайт оперативной памяти Cisco ASA. Если нужно проанализировать не пару пакетов, а обычный «рабочий» трафик, то буфер переполняется очень быстро. Для решения этой проблемы есть 2 варианта

FW-DELTACONFIG-1(config)#
capture capmy access-list ACL_CAP interface inside buffer 1000000

Важно!
Будьте крайне осторожны с буфером, так как будет занята оперативная память(!) устройства. Крайне не рекомендую занимать более 10 Мбайт памяти. После того, как закончили анализ трафика, удаляйте старые capture командой no cap «название»

FW-DELTACONFIG-1(config)#
capture capmy access-list ACL_CAP interface inside headers-only

Также может быть полезен параметр circular-buffer, который разрешает постоянную перезапись буфера.
Допустимо комбинировать в одной строке capture и размер буфера и захватывать только заголовки пакетов и перезаписывать их.
capture capmy access-list ACL_CAP buffer 3000000 interface inside headers-only circular-buffer
К сожалению эта статья не может полностью включить в себя все нюансы настройки capture и, особенно, дальнейший анализ трафика, так как создана с целью ознакомления с этой функцией.

Перейти к оглавлению