Перехват трафика на Cisco ASA

Предисловие

…Есть сервер приложения. На нем вертится это самое приложение. Сам сервер на всякий случай спрятан от пользователей за фаерволом.

Звонит однажды администратор приложения сетевому администратору и говорит:

— Я вчера запустил новую фишку в своей программе, но у пользователей она не работает. Наверное, твой фаервол режет такой необходимый для юзеров трафик.

— Хорошо – говорит сетевой админ. – Скажи мне, какие порты использует твоя новая фишка.

— TCP/abxy и TCP/abxz

— эти порты открыты на фаерволе. У тебя что то не так на сервере.

— На сервере все в порядке. Это на твоем сетевом железе что то не так.

Один из способов решения проблемы — посмотреть и проанализировать интересующий обоих администраторов трафик. В данном случае можно обойтись без снифера так как cisco ASA умеет перехватывать проходящий через нее трафик. О том, как это сделать рассказано в этой статье.

Примеры настройки для Cisco ASA5510.

Процесс состоит из нескольких этапов:

— создание access-list-ов, описывающих трафик, который нужно перехватить

— запуск перехватчиков

— просмотр перехваченных данных

Схема соединения, рассматриваемых ниже примеров, представлена на рисунке.

 

Сначала создаем access-list, в котором описываем трафик, который собираемся перехватывать.

asa1(config)#

asa1(config)#access-list CAPT1 extended permit ip host 10.1.1.10 host 192.168.1.4

asa1(config)#access-list CAPT1 extended permit ip host 192.168.1.4 host 10.1.1.10

asa1(config)#

Согласно этому листу, будем перехватывать весь ip трафик, идущий в обоих направлениях между 10.1.1.10 и 192.168.1.4. При необходимости, можно ограничиться только нужными протоколами и портами.

Теперь стартуем перехват пакетов с помощью команды capture

asa1#

asa1#capture CA1 interface outside access-list CAPT1

asa1#

Здесь CA1 – это имя перехватчика. outside – имя интерфейса, на котором будем перехватывать пакеты.

По-хорошему, надо запустить еще один перехватчик – на интерфейсе ‘DMZ’.

asa1#

asa1#capture CA2 interface DMZ access-list CAPT1

asa1#

В результате мы будем иметь данные о трафике на обоих интерфейсах. Если эти данные будут различаться, можно будет сделать вывод о том, что ASA действительно не пропускает определенный трафик. Дело в том, что команда capture перехватывает трафик до того, как к нему будут применены какие либо политики безопасности. Пусть, например, access-list на входе интерфейса outside не пропускает любые ICMP пакеты. Тем не менее, перехватчик, настроенный на этом интерфейсе, увидит ‘следы’ от команды ‘ping’

Проверим состояние перехватчиков

asa1#

asa1#sh capture

capture CA1 type raw-data access-list CAPT1 interface outside [Capturing - 0 bytes]

capture CA2 type raw-data access-list CAPT1 interface DMZ[Capturing - 0 bytes]

asa1#

Теперь запустим ping с компьютера пользователя в сторону сервера.

C:\>ping 192.168.1.4

Pinging 192.168.1.4with 32 bytes of data:

Reply from 192.168.1.4: bytes=32 time=1ms TTL=128

Reply from 192.168.1.4: bytes=32 time=1ms TTL=128

Reply from 192.168.1.4: bytes=32 time=1ms TTL=128

Reply from 192.168.1.4: bytes=32 time=1ms TTL=128

Ping statistics for 192.168.1.4:

Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),

Approximate round trip times in milli-seconds:

Minimum = 1ms, Maximum = 1ms, Average = 1ms

C:\>

Еще раз проверим состояние перехватчиков.

asa1#

asa1#sh capture

capture CA1 type raw-data access-list CAPT1 interface outside [Capturing - 720 bytes]

capture CA2 type raw-data access-list CAPT1 interface DMZ[Capturing - 720 bytes]

asa1#

Судя по тому, что количество перехваченных байт теперь больше 0, в буферах перехватчиков появились данные. Посмотрим, что они из себя представляют.

asa1#

asa1#sh capture CA1

8 packets captured

1: 15:39:53.928647 10.1.1.10 > 192.168.1.4: icmp: echo request

2: 15:39:53.928952 192.168.1.4 > 10.1.1.10: icmp: echo reply

3: 15:39:54.921384 10.1.1.10 > 192.168.1.4: icmp: echo request

4: 15:39:54.921690 192.168.1.4 > 10.1.1.10: icmp: echo reply

5: 15:39:55.921384 10.1.1.10 > 192.168.1.4: icmp: echo request

6: 15:39:55.921674 192.168.1.4 > 10.1.1.10: icmp: echo reply

7: 15:39:56.921430 10.1.1.10 > 192.168.1.4: icmp: echo request

8: 15:39:56.921720 192.168.1.4 > 10.1.1.10: icmp: echo reply

8 packets shown

asa1#
asa1#sh capture CA2

8 packets captured

1: 15:39:53.928815 10.1.1.10 > 192.168.1.4: icmp: echo request

2: 15:39:53.928937 192.168.1.4 > 10.1.1.10: icmp: echo reply

3: 15:39:54.921522 10.1.1.10 > 192.168.1.4: icmp: echo request

4: 15:39:54.921659 192.168.1.4 > 10.1.1.10: icmp: echo reply

5: 15:39:55.921522 10.1.1.10 > 192.168.1.4: icmp: echo request

6: 15:39:55.921644 192.168.1.4 > 10.1.1.10: icmp: echo reply

7: 15:39:56.921552 10.1.1.10 > 192.168.1.4: icmp: echo request

8: 15:39:56.921705 192.168.1.4 > 10.1.1.10: icmp: echo reply

8 packets shown

asa1#

Мы получили две ‘фотографии’ прохождения пакетов через интерфейсы фаервола. Можем, даже, сказать, что на прохождение от ‘outside’ до ‘DMZ’ пакетам требуется 120 — 170 мкс, а в обратном направлении — 15 -30 мкс.

Теперь попробуем открыть WEB станицу с сервера 192.168.1.4 и посмотрим, на перехваченный трафик:

asa1#

asa1# sh cap CA1

35 packets captured

1: 14:09:43.657238 10.1.1.10.3029 > 192.168.1.4.80: S 517995293:517995293(0) win 65535

2: 14:09:43.657558 192.168.1.4.80 > 10.1.1.10.3029: S 2097782201:2097782201(0) ack 517995294 win 8192

3: 14:09:43.657924 10.1.1.10.3029 > 192.168.1.4.80: . ack 2097782202 win 65535

4: 14:09:43.658092 10.1.1.10.3029 > 192.168.1.4.80: P 517995294:517995577(283) ack 2097782202 win 65535

5: 14:09:43.658245 192.168.1.4.80 > 10.1.1.10.3029: P 2097782202:2097782203(1) ack 517995577 win 8191

. . . . . .

. . . . . .

asa1#

Для того, что бы увидеть содержимое пакетов данных, воспользуемся командой ‘show capture CA1 dump’.

asa1# sh cap CA1 dump

35 packets captured

1: 14:09:43.657238 10.1.1.10.3029 > 192.168.1.4.80: S 517995293:517995293(0) win 65535

0x0000 4500 0030 f378 4000 7f06 40bd 9bf8 ef39 E..0.x@...@....9

0x0010 0a19 3247 0bd5 0050 1edf fb1d 0000 0000 ..2G...P........

0x0020 7002 ffff 9633 0000 0204 04ec 0101 0402 p....3..........

2: 14:09:43.657558 192.168.1.4.80 > 10.1.1.10.3029: S 2097782201:2097782201(0) ack 517995294 win 8192

0x0000 4500 002c 1db4 0000 ff06 d685 0a19 3247 E..,..........2G

0x0010 9bf8 ef39 0050 0bd5 7d09 9db9 1edf fb1e ...9.P..}.......

0x0020 6012 2000 6fee 0000 0204 0564 `. .o......d

3: 14:09:43.657924 10.1.1.10.3029 > 192.168.1.4.80: . ack 2097782202 win 65535

0x0000 4500 0028 f37a 4000 7f06 40c3 9bf8 ef39 E..(.z@...@....9

0x0010 0a19 3247 0bd5 0050 1edf fb1e 7d09 9dba ..2G...P....}...

0x0020 5010 ffff a75b 0000 P....[..

4: 14:09:43.658092 10.1.1.10.3029 > 192.168.1.4.80: P 517995294:517995577(283) ack 2097782202 win 65535

0x0000 4500 0143 f37b 4000 7f06 3fa7 9bf8 ef39 E..C.{@...?....9

0x0010 0a19 3247 0bd5 0050 1edf fb1e 7d09 9dba ..2G...P....}...

0x0020 5018 ffff 24a9 0000 4745 5420 2f20 4854 P...$...GET / HT

0x0030 5450 2f31 2e31 0d0a 4163 6365 7074 3a20 TP/1.1..Accept:

0x0040 2a2f 2a0d 0a41 6363 6570 742d 4c61 6e67 */*..Accept-Lang

0x0050 7561 6765 3a20 7275 0d0a 4163 6365 7074 uage: ru..Accept

0x0060 2d45 6e63 6f64 696e 673a 2067 7a69 702c -Encoding: gzip,

0x0070 2064 6566 6c61 7465 0d0a 5573 6572 2d41 deflate..User-A

0x0080 6765 6e74 3a20 4d6f 7a69 6c6c 612f 342e gent: Mozilla/4.

0x0090 3020 2863 6f6d 7061 7469 626c 653b 204d 0 (compatible; M

0x00a0 5349 4520 362e 303b 2057 696e 646f 7773 SIE 6.0; Windows

0x00b0 204e 5420 352e 313b 2053 5631 3b20 2e4e NT 5.1; SV1; .N

0x00c0 4554 2043 4c52 2031 2e31 2e34 3332 323b ET CLR 1.1.4322;

0x00d0 2049 6e66 6f50 6174 682e 323b 202e 4e45 InfoPath.2; .NE

0x00e0 5420 434c 5220 322e 302e 3530 3732 373b T CLR 2.0.50727;

0x00f0 202e 4e45 5420 434c 5220 332e 302e 3034 .NET CLR 3.0.04

0x0100 3530 362e 3330 3b20 4d53 2d52 5443 204c 506.30; MS-RTC L

0x0110 4d20 3829 0d0a 486f 7374 3a20 3130 2e32 M 8)..Host: 10.2

0x0120 352e 3530 2e37 310d 0a43 6f6e 6e65 6374 5.50.71..Connect

0x0130 696f 6e3a 204b 6565 702d 416c 6976 650d ion: Keep-Alive.

0x0140 0a0d 0a ...

. . . . . .

. . . . . .

asa1#

В этом коротком фрагменте мы видим, как браузер начинает открывать WEB страницу.

Таким образом, наша цель – перехватить и просмотреть пользовательский трафик, достигнута.

По умолчанию размер буфера, в котором перехватчики хранят данные, – 500Кбайт. Через некоторое время буферы заполнятся, и новые данные перестанут запоминаться.

asa1#

asa1# sh capture

capture CA1 type raw-data access-list CAPT1 interface outside [Buffer Full - 524208 bytes]

capture CA2 type raw-data access-list CAPT1 interface DMZ[Buffer Full - 524208 bytes]

asa1#

Для очистки буфера используется команда ‘clear capture’.

asa1#

asa1# clear capture CA1

asa1# sh capture

capture CA1 type raw-data access-list CAPT1 interface outside [Capturing - 0 bytes]

capture CA2 type raw-data access-list CAPT1 interface DMZ[Capturing - 0 bytes]

asa1#

Для полной остановки и удаления перехватчиков нужно выполнить команду ‘no capture’.

asa1#

asa1# no capture CA1

asa1# no capture CA2

asa1#

asa1# sh capture

asa1#

Теперь можно удалить ставший ненужным access-list CAPT1.

asa1(config)#

asa1(config)#no access-list CAPT1 extended permit ip host 10.1.1.10 host 192.168.1.4

asa1(config)#no access-list CAPT1 extended permit ip host 192.168.1.4 host 10.1.1.10

asa1(config)#

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

Добавить комментарий

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