Это первая статья из цикла статей посвященных поиску неисправностей при настройке Cisco ASA.
Команда capture позволяет перехватывать трафик, который проходит через ASA для дальнейшего анализа. После перехвата его можно проанализировать используя команды просмотра на самой ASA или, например, экспортировать перехваченную информацию в файл для просмотра с помощью Wireshark.
Примечание: Так как для примера выбрана тестовая среда, то количество трафика передаваемого через ASA, небольшое. В реальной сети более предпочтительно будет задавать точные критерии для перехвата трафика.
Синтаксис команды
Синтаксис команды интуитивно понятный. При создании правила capture можно указать какой трафик должен быть перехвачен. Различные параметры и их суть описаны ниже.
Пример использования команды capture для перехвата всего трафика, который идёт через интерфейс inside (test — имя для правила capture):
ASA1(config)# capture test interface inside
Параметры команды capture (некоторые параметры доступны не во всех версиях ОС):
- access-list <acl-name> — перехватывать пакеты, которые совпадают с указанным ACL;
- buffer <buffer-size> — настроить размер буфера (в байтах) в который помещаются перехваченные пакеты. По умолчанию размер буфера 512 Kb;
- circular-buffer — после заполнения буфера заполнять его сначала заново. По умолчанию буфер не перезаписывается;
- ethernet-type <type> — перехватывать Ethernet-пакеты определенного типа. По умолчанию IP;
- headers-only — перехватывать только заголовки 2, 3 и 4 уровней без данных. Доступен с версии 8.2;
- interface <intf-name> — перехватывать пакеты на указанном интерфейсе. Могут быть указаны такие интерфейсы:
- имя настроенного интерфейса,
- asa_dataplane,
- cplane;
- match — перехватывать пакеты совпадающие с указанными далее критериями (критерии аналогичны синтаксису ACL);
- packet-length <length> — максимальный размер данных, который будет перехвачен из каждого пакета. По умолчанию 68 байт, возможные значения от 14 до 9216 байт;
- real-time — отображать перехватываемые пакеты в реальном времени. Доступен с версии 8.2;
- trace [trace-count <count>] — позволяет отслеживать каким образом ASA обрабатывает пакеты внутри себя (если этот параметр не указан при задании правила, то при просмотре информации опция trace не будет отображать как ASA обрабатывала пакет). Параметр trace-count позволяет задать максимальное количество пакетов, которые будут отслеживаться. По умолчанию 50, диапазон значений от 1 до 1000;
- type — перехватывать пакеты указанного типа:
- asp-drop — перехватывать пакеты отброшенные по определенной причине,
- isakmp — перехватывать зашифрованные и расшифрованные пакеты ISAKMP,
- raw-data — перехватывать входящие и исходящие пакеты на одном или боле интерфейсах. Значение по умолчанию,
- tls-proxy — перехватывать зашифрованные входящие и исходящие данные от TLS proxy на одном или более интерфейсах. Доступен с версии 8.2,
- webvpn user <username> — перехватывать пакеты WebVPN для конкретного пользователя.
Просмотр информации
Правила capture не сохраняются в конфигурации ASA. Посмотреть настроенные правила можно командой show capture.
Кроме просмотра информации непосредственно в командной строке, функция capture позволяет просматривать перехваченную информацию с помощью браузера или анализатора трафика.
Для того чтобы просмотреть информацию с помощью браузера необходимо зайти по ссылке:
https://192.168.1.1/admin/capture/web_cap
Чтобы сохранить файл и затем открыть его с помощью анализатора трафика:
https://192.168.1.1/admin/capture/web_cap/pcap
Примечание: В зависимости от того какой браузер используется и какие алгоритмы поддерживает ASA, могут возникать проблемы с просмотром указанных страниц. Ошибка при открытии страницы будет в явном виде сообщать о несоответствии используемых алгоритмов.
Файл capture можно скопировать, например, на TFTP-сервер:
ASA1(config)# copy /pcap capture:web_cap tftp Source capture name [web_cap]? Address or name of remote host []? 192.168.25.254 Destination filename [web_cap]? !!!! 66 packets copied in 0.20 secs
Параметр /pcap опциональный, он используется если файл будет просматриваться с помощью анализатора трафика, например, Wireshark.
Параметры просмотра
Если необходимо указать более точные параметры чем те, которые использовались при перехвате трафика, то можно использовать фильтры в самой команде show capture.
Просмотр пакетов, которые были перехвачены конкретным правилом:
ASA1(config)# sh capture <capture-name>
Параметры команды show capture <capture-name>:
- access-list <acl-name> — показывать пакеты, которые совпадают с указанным ACL;
- count <number> — показывать указанное количество пакетов;
- decode — показывать decode information для каждого пакета;
- detail — показывать больше информации для каждого пакета;
- dump — показывать шестнадцатеричный dump для каждого пакета;
- packet-number <number> — показать пакет с указанным номером;
- trace — показать расширенную информацию об обработке пакеты внутри ASA (если этот параметр не указан при задании правила, то при просмотре информации опция trace не будет отображать как ASA обрабатывала пакет).
Примечание: В некоторых случаях команда show capture с параметрами count и packet-number отрабатывает некорректно и отображает не указанные пакеты, а все пакеты в capture или их часть. Очистка capture и повторная генерация трафика, как правило, помогают решить это. Закономерность такого поведения пока не удалось установить.
Пример использования для перехвата HTTP-трафика с inhost на dmzhost
Например, необходимо подробнее проанализировать HTTP-трафик от хоста inhost к хосту dmzhost.
Для указания какой трафик необходимо перехватить будет использоваться ACL. Так как необходимо перехватить трафик в двух направлениях, то в ACL два правила:
ASA1(config)# access-list web extended permit tcp host 192.168.1.10 host 192.168.2.10 eq www ASA1(config)# access-list web extended permit tcp host 192.168.2.10 eq www host 192.168.1.10
Правило capture создается с учётом того, что далее необходимо будет отследить порядок обработки трафика внутри ASA (параметр trace):
ASA1(config)# capture web_cap access-list web interface inside trace
Просмотр количества трафика перехваченного правилом:
ASA1(config)# sh capture capture web_cap type raw-data access-list web trace interface inside [Capturing - 22010 bytes]
Пакеты перехваченные правилом:
ASA1(config)# sh capture web_cap 75 packets captured 1: 15:59:51.054226 192.168.1.10.58364 > 192.168.2.10.80: S 2544769489:2544769489(0) win 65535 <mss 1460,nop,wscale 0, 2: 15:59:51.055005 192.168.2.10.80 > 192.168.1.10.58364: S 408641216:408641216(0) ack 2544769490 win 8192 <mss 512,no 3: 15:59:51.055111 192.168.1.10.58364 > 192.168.2.10.80: . ack 408641217 win 65535 <nop,nop,timestamp 184568469 42698 4: 15:59:51.076000 192.168.1.10.58364 > 192.168.2.10.80: P 2544769490:2544769738(248) ack 408641217 win 65535 <nop,no 5: 15:59:51.078304 192.168.2.10.80 > 192.168.1.10.58364: . ack 2544769738 win 8192 <nop,nop,timestamp 42698 184568469 6: 15:59:51.079143 192.168.2.10.80 > 192.168.1.10.58364: P 408641217:408641340(123) ack 2544769738 win 8192 <nop,nop, 7: 15:59:51.079265 192.168.1.10.58364 > 192.168.2.10.80: . ack 408641340 win 65535 <nop,nop,timestamp 184568469 42698 8: 15:59:51.279328 192.168.1.10.58365 > 192.168.2.10.80: S 1026544276:1026544276(0) win 65535 <mss 1460,nop,wscale 0, 9: 15:59:51.279801 192.168.1.10.58366 > 192.168.2.10.80: S 378730474:378730474(0) win 65535 <mss 1460,nop,wscale 0,no 10: 15:59:51.280136 192.168.2.10.80 > 192.168.1.10.58365: S 245503144:245503144(0) ack 1026544277 win 8192 <mss 512,no 11: 15:59:51.280243 192.168.1.10.58365 > 192.168.2.10.80: . ack 245503145 win 65535 <nop,nop,timestamp 184568469 42698 12: 15:59:51.280335 192.168.1.10.58365 > 192.168.2.10.80: P 1026544277:1026544731(454) ack 245503145 win 65535 <nop,no 13: 15:59:51.280411 192.168.1.10.58367 > 192.168.2.10.80: S 1755707239:1755707239(0) win 65535 <mss 1460,nop,wscale 0, 14: 15:59:51.281021 192.168.1.10.58368 > 192.168.2.10.80: S 584614813:584614813(0) win 65535 <mss 1460,nop,wscale 0,no 15: 15:59:51.283432 192.168.2.10.80 > 192.168.1.10.58366: S 4160183756:4160183756(0) ack 378730475 win 8192 <mss 512,n 16: 15:59:51.283554 192.168.1.10.58366 > 192.168.2.10.80: . ack 4160183757 win 65535 <nop,nop,timestamp 184568469 4269 17: 15:59:51.283615 192.168.1.10.58366 > 192.168.2.10.80: P 378730475:378730925(450) ack 4160183757 win 65535 <nop,nop 18: 15:59:51.283676 192.168.2.10.80 > 192.168.1.10.58365: . ack 1026544731 win 8192 <nop,nop,timestamp 42698 184568469 19: 15:59:51.283936 192.168.2.10.80 > 192.168.1.10.58365: . 245503145:245503645(500) ack 1026544731 win 8192 <nop,nop, 20: 15:59:51.284119 192.168.2.10.80 > 192.168.1.10.58365: . 245503645:245504145(500) ack 1026544731 win 8192 <nop,nop, 21: 15:59:51.284210 192.168.1.10.58365 > 192.168.2.10.80: . ack 245504145 win 65500 <nop,nop,timestamp 184568469 42698 22: 15:59:51.287414 192.168.2.10.80 > 192.168.1.10.58367: S 4286231431:4286231431(0) ack 1755707240 win 8192 <mss 512,
Показать 5 пакетов начиная с 10го:
ASA1(config)# sh capture web_cap packet-number 10 count 5 20 packets captured 10: 16:03:00.100306 192.168.2.10.80 > 192.168.1.10.58372: . 1180313251:1180313751(500) ack 1904325656 win 8192 <nop,no 11: 16:03:00.100489 192.168.2.10.80 > 192.168.1.10.58372: P 1180313751:1180313885(134) ack 1904325656 win 8192 <nop,no 12: 16:03:00.100565 192.168.1.10.58372 > 192.168.2.10.80: . ack 1180313885 win 65535 <nop,nop,timestamp 184568847 4307 13: 16:03:00.283020 192.168.1.10.58372 > 192.168.2.10.80: P 1904325656:1904325917(261) ack 1180313885 win 65535 <nop,n 14: 16:03:00.285690 192.168.2.10.80 > 192.168.1.10.58372: . ack 1904325917 win 8192 <nop,nop,timestamp 43076 184568847 5 packets shown
Примеры просмотра информации в командной строке
Примечание: Правила capture в процессе демонстрации вывода команд очищались, поэтому между различными командами вывод может не соответствовать.
Просмотр настроенных правил:
ASA1(config)# sh capture capture cap_icmp type raw-data access-list ICMP interface outside [Capturing - 0 bytes] capture cap_inside type raw-data interface inside [Capturing - 0 bytes]
Просмотр пакетов перехваченных правилом cap_inside, которое перехватывает весь трафик проходящий через интерфейс inside:
ASA1(config)# sh capture cap_inside 14 packets captured 1: 14:46:11.080623 192.168.1.10 > 192.168.3.10: icmp: echo request 2: 14:46:11.083247 192.168.3.10 > 192.168.1.10: icmp: echo reply 3: 14:46:12.080638 192.168.1.10 > 192.168.3.10: icmp: echo request 4: 14:46:12.081309 192.168.3.10 > 192.168.1.10: icmp: echo reply 5: 14:46:31.081569 192.168.1.10.58226 > 192.168.3.10.80: S 4052042955:4052042955(0) win 65535 <mss 1460,nop,wscale 0, 6: 14:46:31.081676 192.168.3.10.80 > 192.168.1.10.58226: R 0:0(0) ack 4052042956 win 65535 7: 14:46:38.426171 0.0.0.0.68 > 255.255.255.255.67: udp 300 8: 14:46:39.543947 0.0.0.0.68 > 255.255.255.255.67: udp 300 9: 14:46:41.782857 0.0.0.0.68 > 255.255.255.255.67: udp 300 10: 14:46:44.746955 192.168.1.10.58227 > 192.168.3.10.80: S 416086651:416086651(0) win 65535 <mss 1460,nop,wscale 0,no 11: 14:46:44.747062 192.168.3.10.80 > 192.168.1.10.58227: R 0:0(0) ack 416086652 win 65535 12: 14:46:45.322950 192.168.1.10.58228 > 192.168.3.10.80: S 787702359:787702359(0) win 65535 <mss 1460,nop,wscale 0,no 13: 14:46:45.323042 192.168.3.10.80 > 192.168.1.10.58228: R 0:0(0) ack 787702360 win 65535 14: 14:46:46.440452 0.0.0.0.68 > 255.255.255.255.67: udp 300 14 packets shown
Можно создать ACL и использовать его как фильтр для просмотра информации. Например, ACL ICMP используется для того чтобы просмотреть только ICMP-пакеты перехваченные на интерфейсе inside:
ASA1(config)# capture cap_inside interface inside ASA1(config)# access-list ICMP extended permit icmp any any ASA1(config)# sh capture cap_inside access-list ICMP 33 packets captured 1: 14:46:11.080623 192.168.1.10 > 192.168.3.10: icmp: echo request 2: 14:46:11.083247 192.168.3.10 > 192.168.1.10: icmp: echo reply 3: 14:46:12.080638 192.168.1.10 > 192.168.3.10: icmp: echo request 4: 14:46:12.081309 192.168.3.10 > 192.168.1.10: icmp: echo reply 30: 14:49:38.825610 192.168.1.10 > 192.168.3.10: icmp: echo request 31: 14:49:38.840853 192.168.3.10 > 192.168.1.10: icmp: echo reply 32: 14:49:39.825610 192.168.1.10 > 192.168.3.10: icmp: echo request 33: 14:49:39.826281 192.168.3.10 > 192.168.1.10: icmp: echo reply 8 packets shown
Посмотреть первые 5 перехваченных пакетов:
ASA1(config)# sh capture cap_inside count 5 10 packets captured 1: 15:03:16.716881 arp who-has 192.168.1.1 tell 192.168.1.10 2: 15:03:16.716942 arp reply 192.168.1.1 is-at 0:1b:d5:54:63:88 3: 15:03:16.717034 192.168.1.10 > 192.168.3.10: icmp: echo request 4: 15:03:16.719002 192.168.3.10 > 192.168.1.10: icmp: echo reply 5: 15:03:17.716851 192.168.1.10 > 192.168.3.10: icmp: echo request 5 packets shown
Посмотреть более подробную информацию о втором перехваченном пакете:
ASA1(config)# sh capture cap_inside packet-number 2 detail 18 packets captured 2: 15:03:16.716942 001b.d554.6388 0019.e337.46a0 0x0806 42: arp reply 192.168.1.1 is-at 0:1b:d5:54:63:88 1 packet shown
Посмотреть информацию о четвертом перехваченном пакете в виде шестнадцатеричного dump:
ASA1(config)# sh capture cap_inside packet-number 4 dump 20 packets captured 4: 15:03:16.719002 192.168.3.10 > 192.168.1.10: icmp: echo reply 0x0000 4500 0054 0023 0000 3f01 f621 c0a8 030a E..T.#..?..!.... 0x0010 c0a8 010a 0000 2c9e ff08 0000 a169 1e4b ......,......i.K 0x0020 1ba1 0e00 0809 0a0b 0c0d 0e0f 1011 1213 ................ 0x0030 1415 1617 1819 1a1b 1c1d 1e1f 2021 2223 ............ !"# 0x0040 2425 2627 2829 2a2b 2c2d 2e2f 3031 3233 $%&'()*+,-./0123 0x0050 3435 3637 4567 1 packet shown
Посмотреть информацию о том как ASA обрабатывала первый перехваченный пакет внутри себя (правило cap_inside было задано с параметром trace):
ASA1(config)# sh capture cap_inside packet-number 1 trace 14 packets captured 1: 15:29:21.787877 192.168.1.10 > 192.168.3.10: icmp: echo request Phase: 1 Type: CAPTURE Subtype: Result: ALLOW Config: Additional Information: MAC Access list Phase: 2 Type: ACCESS-LIST Subtype: Result: ALLOW Config: Implicit Rule Additional Information: MAC Access list Phase: 3 Type: FLOW-LOOKUP Subtype: Result: ALLOW Config: Additional Information: Found no matching flow, creating a new flow Phase: 4 Type: ROUTE-LOOKUP Subtype: input Result: ALLOW Config: Additional Information: in 192.168.3.0 255.255.255.0 outside Phase: 5 Type: CONN-SETTINGS Subtype: Result: ALLOW Config: class-map any match any policy-map global_policy class any set connection decrement-ttl service-policy global_policy global Additional Information: Phase: 6 Type: IP-OPTIONS Subtype: Result: ALLOW Config: Additional Information: Phase: 7 Type: INSPECT Subtype: np-inspect Result: ALLOW Config: class-map inspection_default match default-inspection-traffic policy-map global_policy class inspection_default inspect icmp service-policy global_policy global Additional Information: Phase: 8 Type: INSPECT Subtype: np-inspect Result: ALLOW Config: Additional Information: Phase: 9 Type: ACCESS-LIST Subtype: log Result: ALLOW Config: access-group ICMP out interface outside access-list ICMP extended permit icmp any any Additional Information: Phase: 10 Type: CAPTURE Subtype: Result: ALLOW Config: Additional Information: Phase: 11 Type: CAPTURE Subtype: Result: ALLOW Config: Additional Information: Phase: 12 Type: IP-OPTIONS Subtype: Result: ALLOW Config: Additional Information: Phase: 13 Type: FLOW-CREATION Subtype: Result: ALLOW Config: Additional Information: New flow created with id 21, packet dispatched to next module Phase: 14 Type: ROUTE-LOOKUP Subtype: output and adjacency Result: ALLOW Config: Additional Information: found next-hop 192.168.3.10 using egress ifc outside adjacency Active next-hop mac address 0015.60ea.4e00 hits 1 Phase: 15 Type: CAPTURE Subtype: Result: ALLOW Config: Additional Information: MAC Access list Result: output-interface: outside output-status: up output-line-status: up Action: allow 1 packet shown
Пример просмотра информации в браузере
Для того чтобы просмотреть информацию с помощью браузера необходимо зайти по ссылке:
https://192.168.1.1/admin/capture/web_cap
Пример просмотра информации в Wireshark
Чтобы сохранить файл и затем открыть его с помощью анализатора трафика
https://192.168.1.1/admin/capture/web_cap/pcap
Удаление перехваченного трафика и правил capture
Удаление трафика перехваченного правилом test:
ASA1(config)# clear capture test
Удалить полностью правило capture:
ASA1(config)# no capture test
Метки: ASA, capture, troubleshooting
Опубликовано: Безопасность cisco
По-моему, отформатировать в нашем формате удалось блестяще!
Спасибо, Наташ! Пишите еще 🙂
Лично я буду ждать!
Наталья, подскажите пожалуйста что означают цифры после udp в выводе?
например в рассмотренном случае:
7: 14:46:38.426171 0.0.0.0.68 > 255.255.255.255.67: udp 300
8: 14:46:39.543947 0.0.0.0.68 > 255.255.255.255.67: udp 300
9: 14:46:41.782857 0.0.0.0.68 > 255.255.255.255.67: udp 300
Дмитрий, извините, что долго отвечала.
Я вот тоже, к сожалению, не знаю, что эти цифры значат. Дождалась просто пока будет доступ к асе, чтобы попробовать еще раз.
По тестам понятней не стало.
У меня пока что получилось, что, например, для SNMP и TFTP, соответственно выделялись одни и те же номера.
Вот примеры:
ciscoasa#sh capture CAP
24: 20:49:38.990045 100.1.1.1.5933 > 100.1.1.2.69: udp 23
25: 20:49:53.990106 100.1.1.1.5933 > 100.1.1.2.69: udp 23
26: 20:50:08.990076 100.1.1.1.5933 > 100.1.1.2.69: udp 23
Более подобная информация:
ciscoasa# sh capture CAP detail
24: 20:49:38.990045 0000.abcd.ef02 0000.abcd.e202 0x0800 65: 100.1.1.1.5933 > 100.1.1.2.69: [udp sum ok] udp 23 (ttl 255, id 11624)
25: 20:49:53.990106 0000.abcd.ef02 0000.abcd.e202 0x0800 65: 100.1.1.1.5933 > 100.1.1.2.69: [udp sum ok] udp 23 (ttl 255, id 3872)
26: 20:50:08.990076 0000.abcd.ef02 0000.abcd.e202 0x0800 65: 100.1.1.1.5933 > 100.1.1.2.69: [udp sum ok] udp 23 (ttl 255, id 2016)
Вот я делала повторно для TFTP сегодня (и для SNMP):
143: 08:29:28.794682 100.1.1.1.37785 > 100.1.1.5.69: udp 23
144: 08:29:28.794758 100.1.1.1.37785 > 100.1.1.5.69: udp 23
145: 08:29:28.795094 100.1.1.5 > 100.1.1.1: icmp: 100.1.1.5 udp port 69 unreachable
158: 08:30:51.135964 100.1.1.1.162 > 100.1.1.5.162: udp 44
159: 08:30:51.136116 100.1.1.5 > 100.1.1.1: icmp: 100.1.1.5 udp port 162 unreachable
178: 08:45:20.547807 100.1.1.1.162 > 100.1.1.5.162: udp 44
181: 08:45:20.548189 100.1.1.5 > 100.1.1.1: icmp: 100.1.1.5 udp port 162 unreachable
Такое ощущение, что это какой-то внутренний идентификатор Cisco. Так что я пока что не разобралась что это такое.
Смотрела и wireshark на этот трафик, но не помогло.
Может ребята подскажут
Наташ, это число указывает на количество байт полезной нагрузки внутри UDP. То есть, например, я у себя в дампе вижу «udp 37». Это DNS запрос в моём случае. Смотрю на пакет в Wireshark, вижу, что поле length заголовка UDP=45. Из 45 отнимаю размер самого UDP-заголовка (8 байт) и получаю те самые 37 байт.
P.S. Зато я быстро ответил — спустя 3 года. 🙂