…Есть сервер приложения. На нем вертится это самое приложение. Сам сервер на всякий случай спрятан от пользователей за фаерволом.
Звонит однажды администратор приложения сетевому администратору и говорит:
— Я вчера запустил новую фишку в своей программе, но у пользователей она не работает. Наверное, твой фаервол режет такой необходимый для юзеров трафик.
— Хорошо – говорит сетевой админ. – Скажи мне, какие порты использует твоя новая фишка.
— 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 предоставляет мощное средство мониторинга, которое поможет найти ошибки в настройке сетевых устройств.
