show vpn-sessiondb remote show vpn-sessiondb remote | include Username show ipsec sa show ipsec sa detail show ipsec sa | include access-list show ipsec sa | include crypto endpt show ipsec sa entry show ipsec sa entry detail show ipsec sa entry | include peer show ipsec sa entry | begin peer address: 192.168.1.10 show ipsec sa entry detail | begin peer address: 192.168.1.10 show ipsec sa peer 192.168.1.10 show ipsec sa peer 192.168.1.10 detail show ipsec stats show ipsec sa summary
Перехват трафика на 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 предоставляет мощное средство мониторинга, которое поможет найти ошибки в настройке сетевых устройств.
Настройка Internet Authentication Service (RADIUS) в Windows Server 2003
Устанавливаем службу Internet Authentication Service, которая в Windows Server выполняет роль RADIUS-сервера. Установка производится из меню Установка программ, дополнительные компоненты Windows.
Вводим настройки Cisco ASA 5510 — IP и пароль.. В свою очередь его прописываем на Cisco ASA:
aaa-server MS-AD protocol radius aaa-server MS-AD (inside) host 10.51.10.254 key CiscoDDD
Вводим настройка аутентификации.
Отключаем шифрование.
Теперь Cisco будет успешно авторизоваться на RADIUS-сервере.
ADSL на Cisco 857
Переходим в привилегированный режим, в котором выполняются все основные операции, следующей командой:
Router>enable Router#
Далее можно сразу приступить к конфигурированию маршрутизатора, но я предпочитаю очищать дефолтный конфиг и настраивать с ноля. Для этого выполняем следующую команду и перегружаем роутер:
Router#erase startup-config Router#reload
Далее подтверждаем желание перегрузиться и ждем…
В процессе загрузки маршрутизатор предложит войти в меню автоматической конфигурации, но мы вежливо отказываемся, ответив на вопрос no и дождавшись полной загрузки снова входим в привилегированный режим (на это раз вводить логин и пароль не нужно). Для входа в меню конфигурации роутера вводим команду:
Router#configure terminal Enter configuration commands, one per line. End with CNTL/Z. Router(config)#
Задаем имя роутера и доменное имя и добавляем пользователя:
Router(config)#hostname R1 R1(config)#ip domain-name mydomain R1(config)#username user privilege 15 password mypass
Теперь необходимо обеспечить элементарную безопасность роутера включив шифрование паролей, установив пароли на терминальное подключение и привилегированный режим а также включив ssh, который понадобиться в дальнейшем для управления маршрутизатором через сеть.
R1(config)#service password-encryption R1(config)#line con 0 R1(config-line)#password mypassword R1(config-line)#login R1(config-line)#exit R1(config)#enable secret mysecretpass R1(config)#crypto key generate rsa 1024 R1(config)#ip ssh time-out 120 R1(config)#ip ssh authentication-retries 3 R1(config)#line vty 0 4 R1(config-line)#transport input ssh R1(config-line)#login local
В результате у нас будет установлен пароль на терминальное подключение mypassword, установлен пароль на привилегированный режим mysecretpass, сгенерирован 1024-битный rsa ключ для аутентификации через ssh и разрешено удалённое подключение только через ssh (телнет выключен) для которого создан пользователь user с наивысшими правами и паролем mypass.
Также за ненадобностью отключаем возможность управление роутером через SDM а так же протокол CDP:
R1(config)#no ip http server R1(config)#no ip http secure-server R1(config)#no cdp run
Теперь нужно назначить ip адрес маршрутизаторы, дабы им можно было управлять не только через консоль, но и через сеть. Для этого назначаем vlan’у номер 1 ip адрес (можно создать и новый vlan, но тогда нужно будет порту, который смотрит в локальную сеть назначать новый vlan, т.к. по умолчанию всем 4 портам назначен первый vlan).
R1(config)#interface vlan1 R1(config-if)#ip address 192.168.1.1 255.255.255.0 R1(config-if)#ip nat inside R1(config-if)#no shutdown R1(config-if)#interface fastethernet 0 R1(config-if)#no shutdown R1(config-if)#exit
Все, теперь можно управлять маршрутизатором через ssh указав ip 192.168.1.1, подключив первый порт роутера (Fa0) к сети. Этот же адрес будет адресом шлюза по умолчанию в локальной сети.
Теперь переходим к настройке подключения к провайдеру.
R1(config)#interface atm0 R1(config-if)#description Connectet to Ukrtelecom's DSLAM R1(config-if)#no ip address R1(config-if)#logging event atm pvc state R1(config-if)#pvc 1/32 R1(config-if-atm-vc)#encapsulation aal5snap R1(config-if-atm-vc)#pppoe-client dial-pool-number 1 R1(config-if-atm-vc)#exit R1(config-if)#interface Dialer0 R1(config-if)#description ISP PPPoE R1(config-if)#ip address negotiated R1(config-if)#ip nat outside R1(config-if)#ip mtu 1492 R1(config-if)#encapsulation ppp R1(config-if)#dialer pool 1 R1(config-if)#ppp authentication pap callin R1(config-if)#ppp pap sent-username ppplogin@dsl.ukrtel.net password ppppass R1(config-if)#exit R1(config)#ip route 0.0.0.0 0.0.0.0 Dialer0
А теперь по-подробней: дня начала конфигурируем atm интерфейс, задав нужные параметры pvc и указываем тип инкапсуляции, далее настраиваем виртуальный интерфейс Dialer0, указав что ip получаем по DHCP от провайдера (ip address negotiated), включаем нат, указываем размер mtu, тип инкапсуляции (ppp), авторизации (ppp authentication pap callin) ну и задаем сами параметры авторизации — логин и пароль (ppplogin@dsl.ukrtel.net и ppppass соответственно). Напоследок назначаем маршрут по умолчанию.
Теперь настраиваем NAT и если необходимо, пробрасываем порт на внутреннюю машинку:
R1(config)#ip nat inside source list 1 interface Dialer0 overload R1(config)#access-list 1 permit 192.168.1.0 0.0.0.255 R1(config)#ip nat inside source static tcp 192.168.1.2 80 interface Dialer0 80
Также необходимо на локальном интерфейсе (в нашем случае Fa0) указать размер mtu, выполнив команду:
R1(config-if)#ip tcp adjust-mss 1452
Все, настройка закончена… можно приступать к тестированию.
Для этого на компьютере, подключённом к локальной сети настраиваем параметры сети, указав шлюз по умолчанию — ip маршрутизатора, а днс — ip адреса OpenDNS (давненько пользуюсь, удобный сервис) либо DNS своего провайдера.
На этом все. На самом деле настроек гораздо больше, но в большинстве случаев должно хватить и этого.
Надеюсь кому-то эта статейка будет полезна. Комментарии, критика и пожелания приветствуются 🙂
P.S. Писал по памяти глядя на рабочие конфиги, так что могут быть неточности. Все настройки производились на Cisco 857, но по идее должны работать и на остальных 800-й серии, которые поддерживают ADSL. Для включения ssh необходим IOS advsecurityk9
URL фильтрация в Cisco ASA
Одной из возможностей Cisco ASA является фильтрация по URL.
Что это значит? Это значит, что мы можем настроить наше устройство таким образом, чтоб запретить или наоборот разрешить вход пользователю по определенному URL, либо его содержанию.
Фильтрация URL, способом как это будет показано ниже, подходит для небольших офисов, небольшого количества правил. Если вы планируете пользоваться фильтрацией в больших компания и использовать большое количество правил, то рекомендуется использовать отдельные продукты, такие как WebSense или N2H2, которые замечательно интегрируются вместе с Cisco ASA.
Рассмотрим более подробно на примерах.
Допустим мы хотим заблокировать ресурс mail.ru (для нашей компании это стало актуально, потому как «работники» стали много проводить рабочего времени на этом ресурсе, играются, ну и так далее.), ну и всеми любимые одноклассники (на работе нужно работать )
Для начала нужно описать регулярным выражением тот url, или его содержимое, с которым мы будем в дальнейшем работать (тоесть блокировать).
В режиме глобальной конфигурации:
[cc lang=»bash»]
regex blockmailru «mail.ru»
regex blockodnoklassniki.ru «odnoklassniki.ru»
[/cc]
Затем создаем class-map:
[cc lang=»bash»]
class-map type inspect http match-any block-url-class
match request header host regex blackmailru
match request header host regex blockodnoklassniki.ru
[/cc]
После создаем policy-map. Эта политика будет просто дропать соединения:
[cc lang=»bash»]
policy-map type inspect http block-url-policy
parametrs
class block-url-class
drop-connection log
policy-map global_policy
class inspection_default
inspect http block-url-policy
[/cc]
Ну и «привязываем» нашу политику:
[cc lang=»text»]
service-policy global_policy global
[/cc]
Теперь пробуем зайти на эти два сайта. Если все настроено верно, то соединение с ресурсом не будет установлено.
К слову о regex. Для того чтобы проверить наше регулярное выражение, можно использовать test regex, например:
[cc lang=»text»]
ciscoasa# test regex http://mail.ru mail.ru
INFO: Regular expression match succeeded.
ciscoasa#
[/cc]
http://mail.ru – это пользовательский запрос
mail.ru – это наше регулярное выражение.
Ну и собственно устройство нам говорит, что данный запрос попадает под наше выражение.
[cc lang=»text»]
ciscoasa# test regex http://mail.ru maail.ru
INFO: Regular expression match failed.
ciscoasa#
[/cc]
Здесь соответственно не попадает.
Описанными действиями мы запретили посещение сайтов абсолютно всем пользователям.
Предположим, что необходимо дать доступ для некоторых пользователей, например начальнику или еще кому, не важно.
Пусть наш разрешенный хост имеет адрес 10.0.0.20.
Создадим access-list, в котором запретим применять url фильтры для данной машины.
[cc lang=»text»]
access-list userregex extended deny tcp host 10.0.0.20 any eq www
access-list userregex extended permit tcp any any eq www
[/cc]
Далее создадим class-map:
[cc lang=»text»]
class-map block-users-class
match access-list userregex
[/cc]
Теперь создадим policy-map
[cc lang=»text»]
policy-map block-users-url-policy
class block-users-class
inspect http block-url-policy
[/cc]
И «привяжем» эту политику на интерфейс, который «смотрит» в локальную сеть – inside
[cc lang=»text»]
service-policy block-users-url-policy interface inside
[/cc]
Если все настроено верно, то теперь мы получим: Всем пользователям кроме хоста 10.0.0.20 будет запрещен доступ на mail.ru, odnoklassniki.ru.
Что и требовалось.
Может возникнуть такая ситуация, когда нужно дать доступ только к одному URL. Для этого немного модифицируем наш class-map
[cc lang=»text»]
class-map type inspect http match-any block-url-class
match not request header host regex blackmailru
[/cc]
Всё остальное остается прежним. Таким образом мы дали доступ только на описанный в соответствующем regex URL.
Для того, чтоб запретить доступ к тому или иному URL , который содержит скажем слово «music», мы можем написать class-map таким образом:
[cc lang=»text»]
class-map type inspect http match-all allow-url-class
match request uri regex music
regex music «/music/»
[/cc]
Теперь Вы сами можете сделать достаточно гибкие правила для URL фильтрации используя Cisco ASA и не используя какие-либо внешние продукты, такие как WebSenser, squid, и так далее.
Для создания собственных регулярных выражений, ознакомьтесь здесь
Включение SSH на Cisco ASA 5510
Once you are done with the basic configuration of Cisco ASA 5510, the next step is to enable SSH access from remote computers internally or externally, Steps involved in configuring SSH is as follows
[cc lang=»text»]
Firewall_5510# config t
Firewall_5510(config)# enable password xxxxx(your password)
[/cc]
Enable password is necessary to enable ssh access
[cc lang=»text»]
Firewall_5510(config)# username test password test123
[/cc]
User name and password for connecting using ssh
[cc lang=»text»]
Firewall_5510(config)# aaa authentication ssh console LOCAL
[/cc]
Different authentication can be configured, like RADIUS, TACACS+, etc.., here we specified Local authentication with user name and password mentioned above
[cc lang=»text»]
Firewall_5510(config)# ssh 192.168.x.x 255.255.255.o inside
[/cc]
Permit ssh access to firewall from specified ip or subnet, inside
[cc lang=»text»]
Firewall_5510(config)# domain-name TEST.ORG
[/cc]
Domain name of your company. RSA key is generated using domain name + firewall name combination
[cc lang=»text»]
Firewall_5510(config)# crypto key generate rsa modulus 1024
[/cc]
Generate RSA key
You are done !!!!!!!!!!!!!!!!!!!!!!
now the firewall can be accessed from inside network……………………
Авторизация пользователей на Cisco ASA5510
Классическая авторизация пользователей. Пример конфигурации Cisco ASA5510.
Предисловие
Это третья часть статьи, посвященной применению авторизации для выборочного ограничения доступа пользователей к сетевым ресурсам и сервисам. Здесь рассматривается конфигурация ASA5510 .
Конфигурация

Здесь представлена конфигурация фаервола для примера, описанного в первой части статьи. Некоторые строки, используемые в реальной конфигурации, но не имеющие отношения к рассматриваемому вопросу, здесь пропущены. Строки, имеющие непосредственное отношение к авторизации выделены жирным шрифтом. В тексте есть короткие комментарии. Некоторые важные моменты более подробно рассмотрены ниже.
[cc lang=»bash»]
!
hostname firewall1
!
! — Список серверов —
names
name 192.168.1.100 FTP_server_1
name 192.168.1.101 FTP_server_2
name 192.168.1.102 TS_server
name 192.168.1.103 DMZ_DB_server
name 10.1.1.10 OUT_DB_server
!
!
interface Management0/0
shutdown
nameif management
security-level 100
management-only
no ip address
!
interface Ethernet0/0
description OUT
speed 100
duplex full
nameif outside
security-level 0
ip address 10.1.1.250 255.255.255.0
no shutdown
!
interface Ethernet0/1
description DMZ
speed 100
duplex full
nameif DMZ
security-level 50
ip address 192.168.1.254 255.255.255.0
no shutdown
!
interface Ethernet0/2
shutdown
no nameif
no security-level
no ip address
!
interface Ethernet0/3
shutdown
no nameif
no security-level
no ip address
!
!
! — Список сетевых групп —
object-group network DMZ_net
network-object 192.168.1.0 255.255.255.0
object-group network FTP_servers
network-object host FTP_server_1
network-object host FTP_server_2
!
!
access-list OUT_IN remark ***OUT->DMZ***
access-list OUT_IN remark ***ftp traffic to FTP servers***
access-list OUT_IN extended permit tcp any object-group FTP_servers eq ftp
access-list OUT_IN extended permit tcp any object-group FTP_servers eq ftp-data
access-list OUT_IN remark ***RDP traffic to DMZ servers***
access-list OUT_IN extended permit tcp any object-group DMZ_net eq 3389
access-list OUT_IN remark ***DB traffic between DB servers***
access-list OUT_IN extended permit tcp host OUT_DB_server host DMZ_DB_server eq 1526
access-list OUT_IN remark ***Virtual Telnet for Authentication*** access-list OUT_IN extended permit tcp any host 10.2.2.2 eq https
access-list OUT_IN extended deny ip any any log
!
!
access-list DMZ_IN remark ***DMZ->OUT***
access-list DMZ_IN remark ***ftp traffic from FTP servers***
access-list DMZ_IN extended permit tcp object-group FTP_servers eq ftp any
access-list DMZ_IN extended permit tcp object-group FTP_servers eq ftp-data any
access-list DMZ_IN remark ***RDP traffic from DMZ servers***
access-list DMZ_IN extended permit tcp object-group DMZ_net eq 3389 any
access-list DMZ_IN remark ***DB traffic between DB servers***
access-list DMZ_IN extended permit tcp host DMZ_DB_server eq 1526 host OUT_DB_server
access-list DMZ_IN remark ***Virtual Telnet for Authentication*** access-list DMZ_IN extended permit tcp host 10.2.2.2 eq https any
access-list DMZ_IN extended deny ip any any log
!
!
logging enable
logging buffered informational
!
!
! — NAT не используем, —
! — адреса транслируются сами в себя —
nat (DMZ) 0 192.168.1.0 255.255.255.0
static (outside,DMZ) 10.1.1.0 10.1.1.0 netmask 255.255.255.0
! — Без этой строки WEB страница аутентификации не откроется —
static (outside,DMZ) 10.2.2.2 10.2.2.2 netmask 255.255.255.255
!
!
access-group OUT_IN in interface outside
access-group DMZ_IN in interface DMZ
route outside 0.0.0.0 0.0.0.0 10.1.1.254 1
timeout xlate 4:00:00
timeout conn 1:00:00 half-closed 0:10:00 udp 0:02:00 icmp 0:00:02
timeout sunrpc 0:10:00 h323 0:05:00 h225 1:00:00 mgcp 0:05:00 mgcp-pat 0:05:00
timeout sip 0:30:00 sip_media 0:02:00 sip-invite 0:03:00 sip-disconnect 0:02:00
! — Определяем таймаут аутентификации —
timeout uauth 4:00:00 absolute
!
!
! — Указываем TACACS+ сервер —
aaa-server ACS_1 protocol tacacs+
aaa-server ACS_1 (DMZ) host 192.168.1.4
key test
!
! — Для управления фаерволом потребуется —
! — аутентифицироваться на TACACS+ сервере. —
! — Если TACACS+ сервер не доступен, —
! — можно зайти локальным пользователем. —
aaa authentication serial console ACS_1 LOCAL
aaa authentication enable console ACS_1 LOCAL
aaa authentication ssh console ACS_1 LOCAL
!
!
! — Говорим, что весь входящий с наружи трафик —
! — требует аутентификации. —
aaa authentication include ip outside 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 ACS_1
! — Исключение для трафика серверов БД —
aaa authentication exclude tcp/1526 outside DMZ_DB_server 255.255.255.255 OUT_DB_server 255.255.255.255 ACS_1
!
!
! — Говорим, что весь входящий с наружи трафик —
! — требует авторизации. —
aaa authorization include ip outside 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 ACS_1
! — Исключение для трафика серверов БД —
aaa authorization exclude tcp/1526 outside DMZ_DB_server 255.255.255.255 OUT_DB_server 255.255.255.255 ACS_1
!
!
! — Без этой строки WEB страница аутентификации не откроется —
aaa authentication include https outside 10.2.2.2 255.255.255.255 0.0.0.0 0.0.0.0 ACS_1
aaa proxy-limit 128
!
! — Без этой строки WEB страница аутентификации —
! — будет иметь намного худший вид —
aaa authentication listener https outside port 1443 redirect
! — Указываем виртуальный адрес WEB страницы аутентификации —
virtual telnet 10.2.2.2
telnet timeout 5
ssh 10.1.1.0 255.255.255.0 outside
ssh timeout 5
ssh version 2
console timeout 5
!
no threat-detection basic-threat
no threat-detection statistics access-list
ssl encryption des-sha1 rc4-md5
!
! — Локальный пользователь для управления —
! — фаерволом на случай, когда —
! — TACACS+ сервер не доступен, —
username admin1 password test privilege 15
!
!
[/cc]
Комментарий к конфигурации
aaa-server ACS_1 protocol tacacs+ aaa-server ACS_1 (DMZ) host 192.168.1.4 key test
Этими строками мы говорим фаерволу, что AAA сервером является TACACS+ сервер, указываем его ip адрес и ключ.
aaa authentication include ip outside 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 ACS_1 aaa authorization include ip outside 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 ACS_1
Здесь говорим, что весь трафик, приходящий на интерфейс outside должен пройти аутентификацию и авторизацию.
aaa authentication exclude tcp/1526 outside DMZ_DB_server 255.255.255.255 OUT_DB_server 255.255.255.255 ACS_1 aaa authorization exclude tcp/1526 outside DMZ_DB_server 255.255.255.255 OUT_DB_server 255.255.255.255 ACS_1
Делаем исключение для трафика серверов БД. Этот трафик должен проходить без аутентификации и авторизации.
Virtual Telnet
Вы, наверное, заметили, что почти половина выделенных строк связана с ip адресом 10.2.2.2. Это виртуальный адрес WEB страницы, с помощью которой пользователь проходит аутентификацию и авторизацию. Разберемся с этим поподробнее.
Когда пользователь открывает HTTP, HTTPS, FTP и Telnet сессию, требующую аутентификации или авторизации, у него в браузере или в окне FTP или Telnet сессии появляется приглашение для ввода логина и пароля. Когда пользователь пытается открыть сессию по другим портам, например RDP соединение, предложение для ввода пароля не появляется, сессия закрывается по таймауту, а в логе фаервола появится запись “User must authenticate before using this service”.
Прежде чем открывать RDP сессию, пользователь должен авторизоваться на фаерволе. Но как это сделать? Где вводить логин и пароль? Для этого и нужен Virtual Telnet.
Несмотря на название, это совсем не telnet. Это дополнительная https сессия. Для пользователя процесс аутентификации выглядит следующим образом:
Пользователь запускает браузер и набирает в строке адреса https://10.2.2.2.
После подтверждения доверия сертификату, откроется следующее окно.
Обратите внимание, что изначально открывалась страница с адресом 10.2.2.2. А теперь ASA перенаправила пользователя на реальный ip адрес — 10.1.1.250. Подробнее об этом — чуть ниже.
Для продолжения надо нажать кнопку «Log in now».
В следующем окне надо ввести логин и пароль и нажать кнопку «Continue».
Если на фаерволе и ACS сервере все настроено корректно, и пользователь верно ввел логин с паролем, откроется страница как на следующем рисунке.
Теперь пользователь может открывать любые разрешенные ему соединения, пароль больше вводить не потребуется. Окно браузера можно закрыть. По завершении сеанса работы пользователь может разлогиниться. Для этого нужно снова открыть страницу аутентификации. Там отображается статус пользователя на фаерволе и указано сколько времени прошло после регистрации ( смотрите предыдущий рисунок ). Для закрытия авторизации достаточно нажать logoff.
Явно разлогиниваться не обязательно. Если в течении определенного времени все соединения открытые пользователем простаивают, фаервол сам закроет авторизацию.
Тайм аут определяется командой :
timeout uauth 4:00:00 absolute
Если пользователь логинился несколько часов назад, и теперь сомневается действтельна ли его ранее открытая регистрация или нет, он должен открыть страницу аутентификации. Там он увидит свой статус.
Для того, что бы описанный механизм работал, в конфигурации фаервола должны присутствовать следующее строки :
virtual telnet 10.2.2.2
Здесь указан виртуальный ip адрес страницы аутентификации. Именно его пользователи набирают в адресной строке браузера. Точнее они должны набрать https://10.2.2.2. Https страница загружается с фаервола. Для повышения безопасности используется не реальный ip адрес интерфейса фаервола, а виртуальный.
Это адрес надо указать в нескольких местах в конфигурации фаервола. В аксес листах должен быть открыт https трафик на виртуальный адрес страницы аутентификации.
access-list OUT_IN extended permit tcp any host 10.2.2.2 eq https access-list DMZ_IN extended permit tcp host 10.2.2.2 eq https any
Кроме того, для этого адреса надо явно прописать команду :
aaa authentication include https outside 10.2.2.2 255.255.255.255 0.0.0.0 0.0.0.0 ACS_1
Это надо сделать обязательно, даже не смотря на то, что есть команда
aaa authentication include ip outside 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 ACS_1
покрывающая все адресное пространство.
Ну и последняя строка:
aaa authentication listener https outside port 1443 redirect
Она просто улучшает внешний вид WEB станицы аутентификации. Попробуйте убрать ее из конфигурации и посмотрите, что изменилось. В разных версиях ios эта команда выглядит по-разному.
Настройка авторизации пользователей на Cisco Secure ACS
Пример настройки классической авторизации пользователей на Cisco Secure ACS v4.0.
Настройка Cisco Secure ACS
Наша задачи:
- создать AAA клиента, использующего TACACS+ аутентификацию
- создать две группы пользователей с нужными свойствами
Этот раздел статьи содержит много рисунков и мало текста. Действительно, удобнее все увидеть на картинке, чем долго читать описание.
Настройка AAA клиента
Начинаем с того, что добавляем AAA клиента на ACS сервере.
Для этого открываем страницу Network Configuration.
Добавляем AAA клиента. В Блоке AAA Clients нажимаем Add Entry.
Заполняем поля как на рисунке и нажимаем Submit + Apply.
В итоге получаем следующую картину.
На странице Interface Configuration появилась строка со ссылкой TACACS+ ( Cisco IOS ). Нажимаем ее.
Проверяем, что флажок рядом Shell ( exec ) установлен. В противном случае нужные нам поля не отобразятся в свойствах групп.
Настройка группы обычных пользователей.
Создадим и настроим группу для рядовых пользователей. Напомню, что им требуется ftp трафик к двум FTP серверам и RDP трафик к терминальному серверу.
На странице Group Setup выбираем нужную группу и нажимаем кнопку Edit Settings.
В блоке TACACS+ Settings / Shell Command Authorization Set устанавливаем переключатели и заполняем поля согласно следующему рисунку.
Согласитесь, на первый взгляд это кажется немного странным: поставив два переключателя в положение Deny, мы разрешили прохождение нужного трафика. На самом деле все логично – оба Deny запрещают то, что не соответствует значением полей команды и аргумента.
И еще один важный момент, на который надо обратить внимание. Обязательно проверьте , нет ли в конце строк аргумента неотображаемых символов. Например, если Вы случайно поставите в конце строки пробел, то соответствующее этой стоке правило работать не будет. Хотя внешне все будет казаться верным.
Итак, сохраняем изменения, нажав Submit + Apply.
Снова открываем свойства редактируемой группы. Как Вы можете заметить, в блоке Shell Command Authorization Set появились поля для новых правил. Заполняем их в соответствии со следующим рисунком и нажимаем Submit + Apply.
Осталось только добавить пользователей в группу.
На странице User Setup находим нужного пользователя и в его свойствах указываем нужную группу.
Настройка группы администраторов серверов.
Администраторам нужен такой же, как у пользователей, FTP доступ, плюс RDP доступ ко всем серверам.
Настройки в той части, которая касается ftp трафика, совпадает на 100%. Во второй части, в поле аргумент в последнем октете адреса вместо цифры ставим «*». Таким образом, мы указали вместо одного адреса всю сеть 192.168.1.0/24.
Другие небольшие хитрости, которые нам не потребовались в этом примере, но могут Вам пригодиться :
— Можно указывать диапазон портов. Строка команды тогда будет выглядеть так: tcp/10000-10007.
— Чтобы открыть все порты, поставьте после черты “0”, например udp/0.
Так же добавим во вторую группу нужных пользователей.
Теперь все, что требовалось сделать на AAA сервере, выполнено.
Комментарий в заключении
Если Вы заметили, мы по-разному описали RDP и ftp трафики. Дело в том, что HTTP, HTTPS, FTP и Telnet трафик описываются явно. Т. е. в поле “Command” надо написать http или https или ftp или telnet. Для всех других портов требуется указывать комбинацию из названия протокола и номера порта, разделенных чертой, например tcp/3389 или udp/53. Но если вы напишете tcp/80, HTTP трафик не пройдет. Надо писать http. Тоже самое для HTTPS, FTP и Telnet. Но и это еще не все. Если нужно описать ICMP трафик, придется писать “1/8” для эхо запросов и “1/0” для эхо ответов. Как Вы, наверное, знаете, у каждого протокола есть свой номер: tcp=6, udp=17, icmp=1 и т. д. Как это не смешно, но если описать, например, RDP трафик через 6/3389, то такой вариант тоже работать не будет.
Как это не удивительно, но описать весь нужный трафик в одном формате не удается. Не могу сказать, в чем здесь причина. Возможно в более свежих версиях Cisco Secure ACS все намного лучше.
Использование авторизации пользователей на Cisco ASA для ограничения доступа к сетевым ресурсам
Использование авторизации пользователей на фаерволе Cisco ASA для ограничения доступа к сетевым ресурсам.
Предисловие
Иногда возникает необходимость ограничить доступ к выборочным сетевым ресурсам и сервисам для определенных пользователей. Особенностью такой задачи является то, пользователи используют динамически меняющиеся ip адреса. Следовательно, нужно контролировать не ip адрес компьютера, с которого выполняется соединение, а идентификатор самого пользователя. О том, как это сделать с помощью Cisco ASA и Cisco Secure ACS рассказано в этой статье.
Общая информация
Для решения задачи требуется AAA сервер и фаервол Cisco ASA.
AAA сервер это программа, предоставляющая сервисы аутентификации (Authentication), авторизации (Authorization) и учёта использования ресурсов (Accounting).
Аутентификация – это процесс проверки подлинность пользователя. Система спрашивает у пользователя: “Кто ты?”
При авторизации система проверяет, что пользователю разрешено делать, а что нет, доступ к каким ресурсам позволен, к каким — нет. Система определят “Куда ты идешь?” и решает пропустить или нет.
Таким образом, аутентификация вполне самодостаточна, то есть может существовать без авторизации. Авторизация же без аутентификации работать не может.
Если всем пользователям нужен доступ к одинаковым ресурсам, авторизация не требуется. Достаточно аутентификации. Но когда разным группам пользователей нужен доступ к разным ресурсам или сервисам, без авторизации не обойтись.
Есть два способа реализации авторизации.
Первый – это классическая авторизация пользователей.
Правила доступа определяются на AAA сервере. В конфигурации фаервола указывается трафик, требующий авторизации. Если пользователь инициирует соединение, которое требует авторизации, фаервол запрашивает AAA сервер. Если на AAA сервере определено, что для данного пользователя данный трафик разрешен, фаервол предоставляет соединение. В противном случае соединение разрывается.
Классическая авторизация поддерживается только TACACS+ сервером.
Второй способ реализации авторизации – это динамически загружаемые списки доступа (access lists). На AAA сервере создаются аксес листы. Они привязываются к определенным пользователям или группам. В момент, когда пользователь проходит аутентификацию на фаерволе, ASA загружает с AAA сервера нужные аксес листы. При этом в качестве ip адреса источника соединения прописывается ip адрес аутентифицировавшегося пользователя. Клода пользователь разлогинивается, его аксес листы удаляются из памяти фаервола.
Этот вариант авторизации поддерживается только RADIUS сервером.
Пример настройки классической авторизации.
Здесь мы рассмотрим пример реализации классической авторизации. В качестве AAA сервера будем использовать Cisco Secure ACS v4.0, а в качестве фаервола — ASA5510 с ios Cisco Adaptive Security Appliance Software Version 8.0(3).
На рисунке Вы видите схему тестовой сети.
В нашем примере за фаерволом есть небольшая сеть, включающая в себя несколько серверов. Двум группам пользователей нужен доступ к внутренней сети. Первая группа – это обычные пользователи. Им надо открыть ftp трафик к двум FTP серверам и RDP трафик к терминальному серверу. Вторая группа – это администраторы серверов. Им так же требуется ftp трафик к FTP серверам и RDP трафик ко всем серверам внутренней сети (точнее сказать, надо открыть RDP ко всей внутренней сети 192.168.1.0/24). Если бы пользователи имели статические ip адреса, достаточно было бы написать аксес листы на фаерволе. Но так как пользователи используют динамические ip адреса, без аутентификации не обойтись. Более того, пользователям нужен разный доступ к разным ресурсам. Следовательно, аутентификации не достаточно, нужна еще и авторизация.
Плюс, допустим, во внутренней сети есть сервер с базой данных, который обменивается информацией с другим, сервером БД. У обоих серверов статические ip адреса. Трафик между базами данных этих серверов не требует авторизации и аутентификации.
Восстановление (сброс) пароля на cisco ASA серии 5500
Шаг 1: Подключаемся к консольному порту согласно процедурам, описанным здесь: «Accessing the Command-Line Interface» section on page 2-1.
Шаг 2: Выключаем, затем включаем питание.
Шаг 3:В процессе появления сообщений загрузки жмем клавишу Escape для того, чтобы попасть в ROMMON. Обычно появляется сообщение »Press ESC to enter rommon»
Шаг 4: Для того, чтобы устройство проигнорировало автоматически загружаемый файл конфигурации, введите следующую команду:
rommon #1> confreg
Устройство отобразит текущее значение конфигурационного регистра и запросит вас, хотите ли вы изменить данный параметр:
Current Configuration Register: 0x00000011 Configuration Summary: boot TFTP image, boot default image from Flash on netboot failure Do you wish to change this configuration? y/n [n]:
Шаг 5: ОБЯЗАТЕЛЬНО запишите текущее значение конфигурационного регистра, для того чтобы позднее его восстановить.
Шаг 6: В ответ на приглашение об изменении параметра, введите Y чтобы начать изменения. После чего устройство предложит вам ввести новые значения.
Шаг 7: Примите настройки по усолчанию для всех параметров, кроме параметра «disable system configuration?»; в этом пункте ответьте Y.
Шаг 8: Перезагрузите устройство введением следующей команды:
rommon #2> boot
После чего устройство загрузит свою изначальную конфигурацию, вместо вашей стартовой конфигурации
Шаг 9:Войдите в привилегированный режим(EXEC) вводом следующей команды:
hostname> enable
Шаг 10:В случае возникновения приглашения о вводе пароля, ничего не вводите, а просто нажмите Enter.
Пароль пуст.
Шаг 11:Загрузите свою стартовую конфигурацию, вводом следующей команды:
hostname# copy startup-config running-config
Шаг 12:Войдите в режим глобальной конфигурации, использованием следующей команды:
hostname# configure terminal
Шаг 13:Задайте пароли по средствам использования следующих команд(по выбору, в зависимости от вашей ситуации):
hostname(config)# password hostname(config)# enable password hostname(config)# username password
Шаг 14: Установите значение конфигурационного регистра так чтобы после следующей при перезагрузке устройство смогло загрузить вашу стартовую конфигурацию. Используйте следующую команду :
hostname(config)# config-register ЗНАЧЕНИЕ
ЗНАЧЕНИЕ – это значение конфигурационного регистра, которое вы записали в ходе шага №5. 0×1 – это значение регистра по умолчанию. За более подробной информацией относительно значений, которые может принять конфигурационный регистр ознакомьтесь с документом: Cisco Security Appliance Command Reference.
Шаг 15: Сохраните значения новых паролей в ваш стартовый конфигурационный файл с использованием следующей команды:
hostname(config)# copy running-config startup-config




















