antiCisco blogs


блоги по технологиям и оборудованию cisco от инструкторов

Опубликовано 9 Апрель , 2010

Это первая статья из цикла статей посвященных поиску неисправностей при настройке 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
 

Метки: , ,
Опубликовано: Безопасность cisco

 

4 комментария “ASA. Troubleshooting. Часть 1: capture”

comment rss - Trackback

  1. По-моему, отформатировать в нашем формате удалось блестяще!

    Спасибо, Наташ! Пишите еще 🙂
    Лично я буду ждать!

  2. Dmitry1:

    Наталья, подскажите пожалуйста что означают цифры после 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 года. 🙂

» Оставить комментарий

Вы должны войти чтобы прокомментировать.