Cisco ASA/Troubleshooting

Материал из Xgu.ru

Перейти к: навигация, поиск
Автор: Наташа Самойленко

На этой странице описываются механизмы и команды, которые могут использоваться для поиска неисправностей при настройке Cisco ASA.

Основное внимание уделено использованию команд capture и packet-tracer:

  • capture — позволяет перехватывать трафик, который проходит через ASA для дальнейшего анализа,
  • packet-tracer — позволяет сгенерировать пакет и показать каким образом ASA его обрабатывает (порядок выполнения различных действий и результат).

Кроме того рассматриваются такие вопросы:

  • обработка пакетов ICMP,
  • настройка логирования,
  • просмотр настроек,
  • удаление настроек,
  • debug.


Содержание

[править] Capture

Топология, которая используется для примеров на этой странице

Команда capture позволяет перехватывать трафик, который проходит через ASA для дальнейшего анализа.

Icon-caution.gif

Так как для примера выбрана тестовая среда, то количество трафика передаваемого через ASA, небольшое. В реальной сети более предпочтительно будет задавать точные критерии для перехвата трафика.

[править] Синтаксис команды

Пример использования команды 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

Note-icon.gif

В зависимости от того какой браузер используется и какие алгоритмы поддерживает 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 обрабатывала пакет).

Note-icon.gif

В некоторых случаях команда show capture с параметрами count и packet-number отрабатывает некорректно и отображает не указанные пакеты, а все пакеты в capture или их часть. Очистка 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] 

Note-icon.gif

Правила capture в процессе демонстрации вывода команд очищались, поэтому между различными командами вывод может не соответствовать.

Просмотр пакетов перехваченных правилом 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):


[править] Пример просмотра информации в браузере

Для того чтобы просмотреть информацию с помощью браузера необходимо зайти по ссылке:

https://192.168.1.1/admin/capture/web_cap

capture web.png

[править] Пример просмотра информации в Wireshark

Чтобы сохранить файл и затем открыть его с помощью анализатора трафика:

https://192.168.1.1/admin/capture/web_cap/pcap

capture wireshark.png

[править] Удаление перехваченного трафика

Удаление трафика перехваченного правилом test:

ASA1(config)# clear capture test 

[править] Удаление правил capture

Удалить полностью правило capture:

ASA1(config)# no capture test

[править] Примеры использования

[править] 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

[править] Packet tracer

Команда packet-tracer позволяет проверить как ASA обработает пакет не генерируя при этом реальный трафик с соответствующих хостов. ASA сама создает пакет и пропускает его через себя. Вывод команды аналогичен выводу команды show capture с параметром trace (при создании правила capture тоже должен быть указан параметр trace).

В результате выполнения команды будет отображен порядок обработки указанного пакета внутри ASA и результат обработки.

Note-icon.gif

Не стоит путать утилиту с одноименным симулятором сети Cisco Packet Tracer.

В этом разделе описывается утилита ASA packet-tracer. Команда появилась в версии 7.2(1) и доступна на PIX и ASA.

Capture позволяет перехватить трафик проходящий через ASA. Однако, при тестировании настроек или поиске неисправностей не всегда есть возможность или не всегда удобно для проверки генерировать соответствующий трафик через ASA.

При поиске неисправностей packet tracer один из самых удобных инструментов. Он не разрешит ситуации с какими-то неправильными настройками на других устройствах, но, по крайней мере, позволяет проверить пройдет ли пакет через ASA и, если нет, то почему он был отброшен.

Так как packet-tracer генерирует указанный пакет, то информацию о нём можно посмотреть в различной статистике, счётчиках, таблицах трансляции. Например, если необходимо проверить работу ACL, то packet-tracer покажет прошел трафик или нет и, кроме того, в соответствующем правиле изменятся счетчики ACL в команде show access-list.

Кроме того, команда packet-tracer может использоваться в связке с capture. Даже если при перехвате трафика не использовался параметр trace, с помощью packet-tracer можно получить аналогичный вывод для реального пакета.

Note-icon.gif

Утилита packet tracer доступна и в веб-интерфейсе ASDM.

[править] Синтаксис команды

Синтаксис команды немного меняется в зависимости от того пакет какого протокола надо сгенерировать. Тут описаны общие параметры, а в следующих разделах синтаксис команды для соответствующих протоколов.

ASA1# packet-tracer input <intf-name> <protocol> <sIP> <protocol-param> <dIP> [detailed|xml]

Общие параметры команды packet-tracer:

  • intf-name — имя интерфейса ASA через который входит пакет,
  • protocol — протокол, который будет использоваться:
    • TCP,
    • UDP,
    • RAW IP,
    • ICMP,
  • protocol-param — параметры, которые зависят от того какой протокол был выбран. Описаны далее в соответствующих разделах,
  • sIP — IP-адрес отправителя,
  • dIP — IP-адрес получателя,
  • detailed — более подробный вывод команды,
  • xml — вывод результата в формате xml.

[править] Для TCP/UDP

ASA1# packet-tracer input <intf-name> <tcp|udp> <sIP> <sport> <dIP> <dport> [detailed|xml]

Параметры для TCP/UDP:

  • tcp|udp — соответственно протокол TCP или UDP,
  • sport — TCP или UDP порт отправителя,
  • dport — TCP или UDP порт получателя.

[править] Для RAW IP

ASA1# packet-tracer input <intf-name> rawip <sIP> <protocol-id> <dIP> [detailed|xml]

Параметры для rawip:

  • rawip — пакет RAW IP,
  • protocol-id — номер протокола в IP-пакете.

[править] Для ICMP

ASA1# packet-tracer input <intf-name> icmp <sIP> <type> <code> [identifier] <dIP> [detailed|xml]

Параметры для ICMP:

  • type — тип сообщения ICMP,
  • code — код сообщения ICMP,
  • identifier — идентификатор сообщения ICMP (опциональный параметр, который может быть полезен, если существует перехваченный трафик и есть необходимость проверить прохождение конкретного пакета).

[править] Примеры использования (пакет прошел через ASA)

Вывод команды может отличаться не только в зависимости от настроек ASA, то и в зависимости от того существует ли пакет указанный в packet-tracer в capture, существует ли такая сессия через ASA.

Packet tracer в первую очередь всегда проверяет не перехвачен ли пакет capture и нет ли существующей активной сессии. Если реального пакета нет, то он сам генерирует пакет.

Note-icon.gif

Синтаксис команды достаточно простой и интуитивно понятный. В большинстве случаев достаточно просто попробовать её пару раз и использовать в дальнейшей работе.

Далее подробно расписаны варианты вывода команды packet-tracer, в зависимости от различных условий. В случае если вывод команды отличается от ожидаемого (например, есть только указание о том, что трафик разрешен и не показаны детальные шаги), тут можно найти объяснение такого поведения команды.

[править] Реального пакета нет (базовые настройка ASA)

Packet tracer позволяет проверить как ASA обработает определенный пакет не генерируя реальный трафик. Необходимо просто задать параметры пакета в packet-tracer.

Например, необходимо проверить пропустит ли ASA HTTP-соединение с хоста inhost на outhost:


[править] Реального пакета нет (настроен ACL на интерфейсе inside, NAT, статический маршрут)

Например, на ASA выполнены такие настройки:

access-list permit_web extended permit tcp 192.168.1.0 255.255.255.0 any eq www 
access-group permit_web in interface inside 

nat (inside) 1 0.0.0.0 0.0.0.0
global (outside) 1 interface

route outside 192.168.100.0 255.255.255.0 192.168.3.10

Например, необходимо проверить пропустит ли ASA HTTP-соединение с хоста inhost на хост 192.168.100.10:


Так как ASA пропустила пакет через себя, то в ней остается информация о нём. В данном примере информация будет в:

  • таблице трансляций,
  • таблице соединений,
  • счетчиках ACL.

Таблица трансляций:

ASA1(config)# sh xlate                                  
1 in use, 1 most used
PAT Global 192.168.3.1(60927) Local inhost(40000) 

Таблица соединений:

ASA1(config)# sh conn                                   
1 in use, 9 most used
TCP outside 192.168.100.10:80 inside inhost:40000, idle 0:00:06, bytes 0, flags E

Статистика ACL (команда packet-tracer выполнялась один раз):

ASA1(config)# sh access-list permit_web
access-list permit_web; 1 elements; name hash: 0xdf51b9bc
access-list permit_web line 1 extended permit tcp 192.168.1.0 255.255.255.0 any eq www (hitcnt=1) 0x68878a0f 

[править] Существует активная сессия

Если через ASA установлена сессия и в packet-tracer задаются параметры совпадающие с ней, то вывод будет указывать только на то, что такая сессия существует, а путь пакета через ASA отображен не будет. В данном примере правил capture нет.

Существующие сессии через ASA (параметры существующей сессии будут использоваться в правиле packet-tracer):

ASA1# sh conn                                                           
8 in use, 9 most used
TCP dmz dmzhost:80 inside inhost:58827, idle 0:00:00, bytes 1270, flags UIO

Вывод packet-tracer:

ASA1# packet-tracer input inside tcp 192.168.1.10 58827 192.168.2.10 80 

Phase: 1
Type: FLOW-LOOKUP
Subtype: 
Result: ALLOW
Config:
Additional Information:
Found flow with id 76, using existing flow

Result:
input-interface: inside
input-status: up
input-line-status: up
Action: allow

[править] Пакет перехвачен capture

В данном примере через ASA была установлена сессия и её вывод был перехвачен capture. Существующие сессии очищены для того чтобы продемонстрировать вывод packet-tracer в этом случае. Вывод указывает на то, что пакет обнаружен в capture (Type: CAPTURE) и показывает каким образом ASA обрабатывала пакет.

Проверка того, что информация перехвачена capture:

ASA1# sh capture 
capture web_cap type raw-data access-list web interface inside [Capturing - 49546 bytes]

Очистка сессий:

ASA1# clear conn                                      
6 connection(s) deleted.

Просмотр первого пакета сессии (параметры перехваченной сессии будут затем использоваться в правиле packet-tracer):

ASA1# sh capture web_cap count 1                                        

176 packets captured

   1: 10:54:35.317061 192.168.1.10.58831 > 192.168.2.10.80: S 1880536908:1880536908(0) win 65535 <mss 1460,nop,wsca 

Вывод packet-tracer:

[править] Существует активная сессия и пакет перехвачен capture

В данном примере через ASA была установлена сессия и её вывод был перехвачен capture. Отображены существующие сессии. Вывод packet-tracer указывает на то, что пакет обнаружен в capture (Type: CAPTURE).

Проверка того, что информация перехвачена capture:

ASA1# sh capture 
capture web_cap type raw-data access-list web interface inside [Capturing - 48613 bytes] 

Просмотр существующих сессий:

ASA1# sh conn
7 in use, 7 most used
TCP dmz dmzhost:80 inside inhost:58811, idle 0:00:04, bytes 1649, flags UIO

Просмотр первого пакета сессии (параметры перехваченной сессии будут затем использоваться в правиле packet-tracer):

ASA1# sh capture web_cap count 1

173 packets captured

   1: 10:49:48.527728 192.168.1.10.58811 > 192.168.2.10.80: S 2703056722:2703056722(0) win 65535 <mss 1460,nop,wsca 

Вывод packet-tracer:


[править] Примеры использования (пакет не прошел через ASA)

Как правило, в тех случаях когда пакет не проходит через ASA, по выводу packet-tracer можно определить в чём проблема. Однако, не всегда вывод очевиден.

Если вывод packet-tracer не очевиден, то можно посмотреть в последней строке вывода причину по которой был отброшен трафик и почитать описание этих причин для команды show asp drop:

Drop-reason: (acl-drop) Flow is denied by configured rule

Чаще всего, более информативный вывод будет в описании той стадии где packet-tracer отбросил пакет.

Так, например, для приведенного примера финальной причины в виде acl-drop, на промежуточной стадии обработки пакета причина более очевидна. На ASA включен nat-control, а для интерфейса dmz нет соответствующего правила трансляции:

Phase: 8
Type: NAT
Subtype: rpf-check
Result: DROP
Config:
nat (dmz) 0 0.0.0.0 0.0.0.0
nat-control
  match ip dmz any outside any
    no translation group, implicit deny
    policy_hits = 0
Additional Information:

[править] Implicit Rule

Если в выводе packet-tracer указано, что причина по которой отброшен трафик Implicit Rule, то это значит, что сработало какое-то "невидимое" правило или правило по умолчанию. Например, это может быть ситуация, когда трафик идёт с более безопасного интерфейса на менее безопасный и не настроены соответствующие ACL на внешнем интерфейсе, которые бы пропускали трафик.

Вывод может быть, например, такой:

Phase: 4
Type: ACCESS-LIST
Subtype: 
Result: DROP
Config:
Implicit Rule
Additional Information:

Эта же причина может встречаться в случае, если на интерфейсе настроен ACL, который запрещает трафик и в конце ACL не указано правило deny ip any any.

Например, на интерфейсе outside настроен такой ACL:

access-list ICMP extended permit icmp any any
access-group ICMP in interface outside

Если теперь указать в packet-tracer пакет, который запрещён ACL, то вывод будет таким:

ASA1(config)# packet-tracer input outside udp 192.168.3.10 50000 192.168.1.10 22

Phase: 1
Type: FLOW-LOOKUP
Subtype: 
Result: ALLOW
Config:
Additional Information:
Found no matching flow, creating a new flow

Phase: 2
Type: ROUTE-LOOKUP
Subtype: input
Result: ALLOW
Config:
Additional Information:
in   192.168.1.0     255.255.255.0   inside

Phase: 3
Type: ACCESS-LIST
Subtype: 
Result: DROP
Config:
Implicit Rule
Additional Information:

Result:       
input-interface: outside
input-status: up
input-line-status: up
output-interface: inside
output-status: up
output-line-status: up
Action: drop
Drop-reason: (acl-drop) Flow is denied by configured rule

Если изменить ACL и добавить в конце правило deny ip any any, то в выводе будет явно видно на каком ACL был отброшен трафик.

Измененный ACL на интерфейсе outside:

access-list ICMP extended permit icmp any any 
access-list ICMP extended deny ip any any
access-group ICMP in interface outside

Вывод packet-tracer:

ASA1(config)# packet-tracer input outside udp 192.168.3.10 50000 192.168.1.10 22

Phase: 1
Type: FLOW-LOOKUP
Subtype: 
Result: ALLOW
Config:
Additional Information:
Found no matching flow, creating a new flow

Phase: 2
Type: ROUTE-LOOKUP
Subtype: input
Result: ALLOW
Config:
Additional Information:
in   192.168.1.0     255.255.255.0   inside

Phase: 3
Type: ACCESS-LIST
Subtype: log
Result: DROP
Config:
access-group ICMP in interface outside
access-list ICMP extended deny ip any any 
Additional Information:
              
Result:
input-interface: outside
input-status: up
input-line-status: up
output-interface: inside
output-status: up
output-line-status: up
Action: drop
Drop-reason: (acl-drop) Flow is denied by configured rule

[править] ICMP

[править] Сквозной ICMP-трафик

[править] С более безопасного интерфейса на менее безопасный

По умолчанию ASA пропускает через себя трафик только с более безопасного интерфейса на менее безопасный. Поэтому если, например, с хоста inhost отправить ICMP-запрос на хост outhost, то ASA отбросит ответ на outside интерфейсе.

Для того чтобы ASA пропускала ICMP-ответы от хостов, которые находятся на менее безопасном интерфейсе, достаточно включить инспектирование ICMP. После включения инспектирования ASA пропускает ICMP-пакеты, входящие в менее безопасный интерфейс (outside), только в том случае, если они являются ответом на сессию инициированную с более безопасного интерфейса.

Пример настройки инспектирования ICMP:

ASA1(config)# policy-map global_policy
ASA1(config-pmap)# class inspection_default
ASA1(config-pmap-c)# inspect icmp 

После этого с хоста inhost можно пинговать хост outhost.

[править] С менее безопасного интерфейса на более безопасный

Если необходимо разрешить пинговать хосты на более безопасных интерфейсах, из сетей за менее безопасными интерфейсами, то необходимо применять к менее безопасным интерфейсам ACL.

Например, для того чтобы с outhost можно было пинговать inhost:

ASA1(config)# access-list ICMP extended permit icmp any any 
ASA1(config)# access-group ICMP in interface outside

[править] ICMP и интерфейсы ASA

По умолчанию разрешены все ICMP-пакеты на интерфейсы ASA.

Icon-caution.gif

Интерфейсы ASA отвечают на ICMP-запросы только если они пришли из сетей находящихся на том же интерфейсе.

Например, если с хоста inhost пинговать интерфейс g0/0, то ответы приходить будут. А если интерфейс g0/2, то ответов не будет.

Команда debug icmp trace позволяет посмотреть какие ICMP-пакеты были отправлены на интерфейсы ASA и соответствующие ответы, но не отображает ICMP-пакеты проходящие сквозь ASA к другим хостам:

ASA1(config)# debug icmp trace 
# Удачный ping 192.168.1.1 с хоста inhost:
ICMP echo request from 192.168.1.10 to 192.168.1.1 ID=42759 seq=0 len=56
ICMP echo reply from 192.168.1.1 to 192.168.1.10 ID=42759 seq=0 len=56
ICMP echo request from 192.168.1.10 to 192.168.1.1 ID=42759 seq=1 len=56
ICMP echo reply from 192.168.1.1 to 192.168.1.10 ID=42759 seq=1 len=56
ICMP echo request from 192.168.1.10 to 192.168.1.1 ID=42759 seq=2 len=56
ICMP echo reply from 192.168.1.1 to 192.168.1.10 ID=42759 seq=2 len=56
# Неудачный ping 192.168.3.1 с хоста inhost:
ICMP echo request from 192.168.1.10 to 192.168.3.1 ID=43015 seq=0 len=56
ICMP echo request from 192.168.1.10 to 192.168.3.1 ID=43015 seq=1 len=56
ICMP echo request from 192.168.1.10 to 192.168.3.1 ID=43015 seq=2 len=56

Команда icmp позволяет указать правила для ICMP-пакетов, которые идут на интерфейсы ASA:

ASA1(config)# icmp <permit | deny> ip_address net_mask [icmp_type] if_name 
ASA1(config)# icmp permit any echo-reply inside


[править] Logging

Настройка адреса лог-сервера:

logging host inside 192.168.1.10

Какие сообщения будут отправляться на сервер:

logging trap warning

Включить в сообщения информацию о времени:

logging timestamp 

Включить логирование:

logging enable

Посмотреть настройки логирования:

show logging

Отображение лог-сообщений в Telnet или SSH-сессии:

logging monitor 6 
terminal monitor

[править] Debug

Команды отладки в ASA отличаются от аналогичных команд в IOS тем, что у них для регулировки степени подробности сообщений, используется значение уровня от 1 до 255. Чем больше число, тем более подробный будет вывод команд debug. По умолчанию устанавливается уровень 1. Далее это описано для команд debug относящихся к VPN.

[править] Отключение всех сообщений debug

Отключение всех сообщений debug:

ASA1(config)# un al

[править] Команды debug относящиеся к VPN

Отобразить сообщения относящиеся к работе PKI (например, при аутентификации по сертификатам):

debug crypto ca [messages | transactions] [level] 

Уровни в команде debug crypto ca:

  • 1 — выводит сообщение только в случае ошибки,
  • 2 — выводит предупреждения (warnings),
  • 3 — выводит информационные сообщения,
  • 4 и выше — показывает дополнительную информацию для поиска неисправностей.

Отобразить сообщения crypto engine:

debug crypto engine [level]

Отобразить сообщения относящиеся к работе IPsec:

debug crypto ipsec [level] 

Отобразить сообщения относящиеся к работе ISAKMP:

debug crypto isakmp [timers] [level] 

Параметры команды debug crypto isakmp:

  • timers — выводит сообщения об истечении таймеров ISAKMP,
  • level:
    • 1 — выводит сообщение только в случае ошибки,
    • 2-7 — показывает дополнительную информацию,
    • 254 — выводит расшифрованные сообщения ISAKMP,
    • 255 — выводит hexadecimal dumps пакетов ISAKMP.

[править] Фильтрация вывода команд debug

В ситуации когда на ASA настроены несколько туннелей, а нерабочий туннель один, сложно использовать команды debug без фильтрации. Количество отображаемой информации будет очень большим.

Для того чтобы отфильтровать вывод команд используется команда debug crypto condition:

debug crypto condition [[peer [address peer_addr] subnet subnet_mask]] | 
[user user_name] | [group group_name] | [spi spi] | [reset] 

Необходимо включить команду debug crypto condition с соответствующим параметром и команду отладки, вывод которой необходимо фильтровать.

Например, если необходимо посмотреть сообщения debug для первой фазы IPsec только для туннеля установленного с адресом 192.168.3.3:

debug crypto condition peer 192.168.3.3
debug crypto isakmp

Отключать debug надо в обратной последовательности: сначала основную команду, а потом команду фильтрации:

no debug crypto isakmp
no debug crypto condition 


asa# show crypto debug-condition

[править] Просмотр информации (команды show)

В ASA команды show можно выполнять из любого конфигурационного режима.

[править] Просмотр настроек

Посмотреть текущую конфигурацию:

ASA1# show running-config  

В ASA есть много настроек по умолчанию. Для того чтобы не загромождать конфигурационный файл, они не отображаются в выводе команды show run. Для просмотра всех команд конфигурационного файла используется команда show run all:

ASA1# show running-config [all] [command] 

Note-icon.gif

Иногда команды выводятся в выводе команды show run в одних версиях ОС, но исчезают в других. В таком случае следует поискать исчезнувшую команду в show run all. Возможно, она перешла в категорию скрытых команд.

Посмотреть стартовую конфигурацию:

ASA1# show startup-config

[править] Фильтрация вывода при просмотре настроек

Конфигурационный файл ASA можно просматривать частями.

Для этого могут использоваться фильтры аналогичные IOS:

ASA1# show run | include nat
nat (inside) 0 access-list test
nat (dmz1) 1 0.0.0.0 0.0.0.0

Однако в ASA есть более удобный вариант просмотра. Достаточно указать в команде show run в качестве параметра первое слово команды (или больше, для более точного вывода):

ASA1# show run nat
nat (inside) 0 access-list test
nat (dmz1) 1 0.0.0.0 0.0.0.0

Просмотр настроенных ACL:

ASA1# sh run access-list 
access-list test extended permit tcp 192.168.1.0 255.255.255.0 host dmzhost eq www 

Аналогично можно фильтровать вывод show run all:

ASA1# show run all class-map

[править] Счетчики пакетов

ASA1# show counters [all|context <name>|summary|top N] [detail] [protocol <name>[:counter_name]] [threshold N]

[править] Трансляция адресов

Просмотр трансляций адресов:

ASA1# show xlate

Очистка текущих трасляций:

ASA1# clear xlate

[править] Сессии

Просмотр информации о соединениях (полный синтаксис команды show conn):

ASA1# show conn

Просмотр подробной информации о соединениях:

ASA1# show conn detail

Просмотр информации о соединениях и значениях таймеров для локальных хостов:

ASA1# show local-host all

Запись создается для любого хоста, который передает трафик через ASA или на неё саму. Полный синтаксис команды на сайте Cisco show local-host.

[править] IPsec VPN

Информация об ISAKMP SA:

ASA1# show crypto isakmp sa [detail] 

Информация об IPsec SA:

ASA1# show crypto ipsec sa [entry | identity | map map-name | peer peer-addr] [detail] 

Сертификаты установленные на ASA (сертификаты соответствующие trustpoint и сертификаты ASA):

ASA1# show crypto ca certificates

Статистика IPsec:

ASA1# show crypto ipsec stats

Статистика ISAKMP:

ASA1# show crypto isakmp stats

Вывод статистической информации о hardware crypto accelerator MIB:

ASA1# show crypto accelerator statistics

[править] Подсказки по настройке VPN в CLI ASA

В Cisco ASA есть команда vpnsetup, которая позволяет посмотреть как настраивать различные виды VPN на ASA. В выводе команды показаны необходимые шаги и команды. Команда пригодится если под рукой нет документации или примера настройки.

Параметры команды (8.2):

  • ipsec-remote-access
  • l2tp-remote-access
  • site-to-site
  • ssl-remote-access

Пример вывода для site-to-site vpn:

asa1(config)# vpnsetup site-to-site steps

Steps to configure a simple site-to-site IKE/IPSec connection with examples:

1. Configure Interfaces

        interface GigabitEthernet0/0
         ip address 10.10.4.200 255.255.255.0
         nameif outside
         no shutdown

        interface GigabitEthernet0/1
         ip address 192.168.0.20 255.255.255.0
         nameif inside
         no shutdown

2. Configure ISAKMP policy

        crypto isakmp policy 10
         authentication pre-share
         encryption 3des
         hash sha

3. Configure transform-set

        crypto ipsec transform-set myset esp-3des esp-sha-hmac
              
4. Configure ACL

        access-list L2LAccessList extended permit ip 192.168.0.0 255.255.255.0 192.168.50.0 255.255.255.0

5. Configure Tunnel group

        tunnel-group 10.20.20.1 type ipsec-l2l
        tunnel-group 10.20.20.1 ipsec-attributes
         pre-shared-key P@rtn3rNetw0rk

6. Configure crypto map and attach to interface

        crypto map mymap 10 match address L2LAccessList
        crypto map mymap 10 set peer 10.10.4.108
        crypto map mymap 10 set transform-set myset
        crypto map mymap 10 set reverse-route
        crypto map mymap interface outside

7. Enable isakmp on interface

        crypto isakmp enable outside

Пример вывода для ipsec-remote-access:


Пример вывода для l2tp-remote-access:


Пример вывода для ssl-remote-access:


[править] Команда test

ASA поддерживает несколько команд test, которые позволяют проверять работу некоторых функций, с самой ASA.

Для проверки работы сервера аутентификации с ASA можно использовать команду test aaa-server:

asa# test aaa-server authentication radius_group host 192.168.1.1 username xguru password xguru
INFO: Attempting Authentication test to IP address <192.168.1.1> (timeout: 10 seconds)
INFO: Authentication Successful

[править] Удаление настроек

Для удаления каких-либо настроек может использоваться аналогичная команда с параметром no впереди. Кроме того, для удаления настроек можно использовать команду clear configure с соответствующими параметрами.

Например, удалить все правила nat настроенные на ASA:

ASA1(config)# clear configure nat

Соответственно, удаление текущей конфигурации:

ASA1(config)# clear configure all

Другой вариант восстановления конфигурации по умолчанию:

ASA1(config)# configure factory-default

[править] Дополнительная информация

VPN: