Андрей Смирнов
Время чтения: ~13 мин.
Просмотров: 15

Руки дошли: продолжаем про ASA

Начнем, пожалуй, с базовых настроек интерфейсов и маршрутизации, а также настройки подключений для удаленного администрированияНастройка интерфейсов Cisco ASA является аппаратным межсетевым экраном с инспектированием сессий с сохранением состояния (stateful inspection). ASA умеет работать в двух режимах: routed (режим маршрутизатора, по умолчанию) и transparent (прозрачный межсетевой экран, когда ASAработает как бридж с фильтрацией). Мы познакомимся с работой в первом режиме и далее везде будем его подразумевать, если явно не указан иной режим. В режиме routed на каждом интерфейсе ASA настраивается ip адрес, маска, уровень безопасности (security-level), имя интерфейса, а также интерфейс надо принудительно «поднять», так как по умолчанию все интерфейсы находятся в состоянии «выключено администратором». (Исключения бывают: иногда АСАшки приходят уже преднастроенными. Это характерно для модели 5505. В этом случае, как правило, внутренний интерфейс с названием inside уже настроен как самый безопасный и поднят, на нем работает DHCP сервер, задан статический адрес из сети 192.168.1.0/24, внешний интерфейс с названием outside тоже поднят и сам получает адрес по DHCP и настроена трансляция адресов из сети за интерфейсом inside в адрес интерфейса outside. Получается такой plug-n-play :))

    int g0/0   ip address {адрес} {маска}   security-level {number}   nameif {имя}   no shutdown 

Параметр «уровень безопасности» (security level) – это число от 0 до 100, которое позволяет сравнить 2 интерфейса и определить, кто из них более «безопасен». Параметр используется качественно, а не количественно, т.е. важно только отношение «больше-меньше». По умолчанию трафик, идущий «наружу», т.е. с интерфейса с большим уровнем безопасности на интерфейс с меньшим уровнем безопасности, пропускается, сессия запоминается и обратно пропускаются только ответы по этим сессиям. Трафик же идущий «внутрь» по умолчанию запрещен. Параметр «имя интерфейса» (nameif) в дальнейшем позволяет использовать в настройках не физическое наименование интерфейса, а его имя, которое можно выбрать «говорящим» (inside, outside, dmz, partner и т.д.). По идее, как утверждает сама cisco, имя не зависит от регистра, (не case sensitive), однако на практике ряд команд требует соблюдения регистра, что довольно неудобно. Характерный пример: применение crypto map на интерфейс требует точного написания названия интерфейса. Название интерфейса продолжается нажатием кнопки TAB, т.е. можно набрать начало названия и табулятором продолжить его до конца, если набранное начало однозначно идентифицирует интерфейс. Такая настройка интерфейсов характерна для всех моделей ASA, кроме ASA 5505. В модели 5505 реализован встроенный 8мипортовый L2/L3 коммутатор. IP адреса в модели 5505 задаются на логических интерфейсах

 interface vlan {#}   ip address {адрес} {маска}   security-level {number}   nameif {имя}   no shutdown 

Сами же физические интерфейсы L2 сопоставляются VLANам.

 interface f0/0   switchport access vlan {#} 

Таким образом, межсетевое экранирование возникает между логическими interface vlan. Как правило, уровень безопасности интерфейсов подбирается таким образом, чтобы максимально соответствовать логической топологии сети. Сама топология представляет из себя зоны безопасности и правила взаимодействия между ними. Классической схемой считается присвоение разным интерфейсам разных уровней безопасности. Никто не запрещает сделать уровень безопасности на разных интерфейсах одинаковым, однако по умолчанию обмен трафиком между такими интерфейсами запрещен. Такой трафик можно сознательно разрешить, дав команду

   same-security-traffic permit inter-interface 

Однако надо понимать, что между интерфейсами с одинаковым уровнем безопасности не возникает межсетевого экранирования, а только маршрутизация. Поэтому такой подход применяется для интерфейсов, относящихся к одной и той же логической зоне безопасноcти (например, 2 локальные сети пользователей, объединяемые при помощи ASA)Маршрутизация Ну куда же без неё! Как у любого маршрутизатора (ASA тоже им является, т.к. использует таблицу маршрутизации для передачи пакетов) сети, настроенные на интерфейсах, автоматически попадают в таблицу маршрутизации с пометкой «Присоединенные» (connected), правда при условии, что сам интерфейс находится в состоянии «up». Маршрутизация пакетов между этими сетями производится автоматически. Те сети, которые ASA сама не знает, надо описать. Это можно сделать вручную, используя команду

   route {interface} {network} {mask} {next-hop} [{administrative distance}] [track {#}] 

Указывается тот интерфейс, за которым надо искать next-hop, т.к. ASA сама не делает такого поиска (в отличие от обычного маршрутизатора cisco). Напоминаю, что в таблицу маршрутизации попадает только один маршрут в сеть назначения, в отличие от классическим маршрутизаторов, где может использоваться до 16 параллельных путей. Маршрут по умолчанию задается таким же образом

   route {interface} 0.0.0.0 0.0.0.0 {next-hop} 

Если ASA не имеет записи в таблице маршрутизации о сети назначения пакета, она пакет отбрасывает. Если возникает задача сделать запасной статический маршрут, который будет работать только при пропадании основного, то это решается указанием так называемой Административной дистанции маршрута. Это такое число от 0 до 255, которое указывает, насколько хорош метод выбора маршрута. Например, статическим маршрутам по умолчанию сопоставлена AD 1, EIGRP – 90, OSPF – 110, RIP – 120. Можно явно указать AD для запасного маршрута больше, чем AD основного. Например:

   route outside 0.0.0.0 0.0.0.0 {next-hop} 1   route backup 0.0.0.0 0.0.0.0 {next-hop_backup} 210 

Но в этой ситуации есть один важный вопрос: как заставить «пропасть» основной маршрут? Если физически упал интерфейс все очевидно – само получится, а если интерфейс поднят, а провайдер погиб? Это очень распространенная ситуация, учитывая, что на ASA сплошной ethernet, который физически падает крайне редко. Для решения этой задачки используется технология SLA. Она весьма развита на классических маршрутизаторах, а на ASA с версии 7.2 внедрили только самый простой механизм: доступность некоторого хоста по протоколу icmp. Для этого создается такая «пинговалка» (sla monitor)

   sla monitor {#}     type echo protocol ipIcmpEcho {ip адрес} interface {интерфейс} 

Далее, её необходимо запустить, указав время начала (есть возможность запустить «сейчас») и окончания работы (можно задать работу до бесконечности)

   sla monitor schedule {#} start now life forever 

Но и это ещё не все. Надо создать «переключатель» (track) который будет отслеживать состояние «пинговалки».

   track {track #} rtr {sla #} reachability 

Не спрашивайте, почему привязка пинговалки производится ключевым словом rtr – это ошметки несогласованности настроек на маршрутизаторах cisco. К слову, на самих маршрутизаторах такое несоответствие уже починили, а вот на ASA ещё нет. И вот теперь все готово, чтобы применить эту конструкцию к статической маршрутизации

   route outside 0 0 {next-hop_outside} track {#}   route backup 0 0 {next-hop_backup} 210 

Теперь, пока пингуемый хост доступен, track будет в поднятом (чуть не написал в «приподнятом» :)) состоянии и основной маршрут будет в таблице маршрутизации, но как только связь пропадет, через заданное количество потерянных пакетов (по умолчанию пакеты посылаются раз в 10 секунд и ждем пропадания трех пакетов) track будет переведен в состояние down и основной маршрут пропадет из таблицы маршрутизации, а пакеты будут отправляться по запасному пути. Приведу пример конфига двух дефолтных маршрутов через разных провайдеров с проверкой доступности основного провайдера:

   sla monitor 1     type echo protocol ipIcmpEcho 1.1.1.1 interface outside   sla monitor schedule 1 start now life forever   track 11 rtr 1 reachability   route outside 0 0 1.1.1.1 track 11   route backup 0 0 2.2.2.1 210 

Динамическая маршрутизация на ASA возможна по протоколам RIPv1,2, OSPF, EIGRP. Настройка этих протоколов на ASA очень похожа на настройку маршрутизаторов cisco. Пока динамической маршрутизации касаться в этих публикациях не буду, хотя если дойдут руки и будет интерес – напишу отдельную главу. Удаленное управление Понятно, что при нынешнем развитии сетей передачи данных было бы неразумно не внедрять удаленное управление межсетевыми экранами. Поэтому ASA, как и большинство устройств cisco, предоставляет несколько способов удаленного управления. Самое простое и небезопасное – telnet. Чтобы предоставить доступ на ASA по телнету необходимо явно указать, с каких хостов и сетей и на каком интерфейсе разрешен доступ, а также необходимо задать пароль на телнет командой passwd:

   telnet 192.168.1.128 255.255.255.128 inside   telnet 192.168.1.254 255.255.255.255 inside   passwd {пароль} 

В целях безопасности работа по телнету на самом небезопасном (с наименьшим уровнем безопасности в рамках данной ASA) интерфейсе заблокирована и обеспечить работу на этом интерфейсе по телнету можно только в том случае, если он приходит через IPSec туннель. Более безопасный доступ к командной строке обеспечивается протоколом ssh. Однако, для обеспечения доступа по ssh кроме явного указания того, с каких хостов можно заходить для управления, необходимо также задать RSA ключи, необходимые для шифрования данных о пользователе. По умолчанию для подключения по ssh используется пользователь pix и пароль, задаваемый командой passwd (пароль на telnet).

   ! Задаем имя домена   domain name {имя}   !   ! Желательно задать недефолтовое имя хоста   hostname {имя}   !   ! После этого можно сгенерировать ключи   crypto key generate rsa    !   ! Разрешаем ssh   ssh 192.168.1.128 255.255.255.128 inside   ssh 1.2.3.4 255.255.255.255 outside   passwd {пароль} 

Как правило, на ASA начиная с версии 7.2 имя домена уже задано (domain.invalid) и дефолтные ключи сгенерированы, однако как минимум это надо проверить

   show crypto key mypubkey rsa 

Наличие хотя бы каких то ключей RSA уже позволяет работать по ssh. Но можно дополнительно создать и недефолтовые ключевые пары. Для этого надо указать явно имя ключевой пары

   crypto key generate rsa label {имя пары}  

Чтобы удалить ключевую пару (или все пары) используется команда

   crypto key zeroize rsa [label {имя пары}]  

Совет: после любых действий с ключевыми парами (создание, удаление) обязательно сохраняйтесь. Для этого можно использовать стандартные команды cisco

   copy running-config startup-config   write memory 

или короткий вариант последней команды

     wr  

Также ASA предоставляет крайне популярный метод настройки с использованием веб-броузера. Этот метод называется ASDM (Adaptive Security Device Manager). Для доступа используется безопасный протокол https. Обеспечение доступа настраивается очень похоже на настройку ssh: необходимо выработать или убедиться в наличии дефолтовых RSA ключей и указать, откуда можно подключаться.

   domain name {имя}   hostname {имя}   crypto key generate rsa   ! Включаем сам https сервер, по умолчанию часто включен. При включении    ! генерирует самоподписанный сертификат.   http server enable    ! Разрешаем https   http 192.168.1.128 255.255.255.128 inside   http 1.2.3.4 255.255.255.255 outside 

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

   enable password {пароль} 

то при подключении надо в качестве пароля указывать именно его, не указывая пользователя. Надо проверить, что во флеше ASA лежит файл ASDM, соответствующий используемой ОС.

   dir flash:   show flash 

При работе с ASDM используется java и верно следующее: если вы используете ОС версии 7.Х, то ASDM нужен версии 5.Х и java 1.5. Если же используется ОС 8.Х, то ASDM нужен версии 6.Х и java версии 1.6. К чести разработчиков и радости настройщиков, ASDM версии 6 работает не в пример лучше и быстрее версии 5.Х. Чья тут заслуга: java или cisco или обоих – не знаю. Возникает резонный вопрос: а если хочется использовать не дефолтовые правила доступа, а явно указывать, откуда брать пользователя? Для этого используются команды (console — ключевое слово)

   aaa authentication telnet console {имя AAA сервера} [LOCAL]   aaa authentication ssh console {имя AAA сервера} [LOCAL]   aaa authentication http console {имя AAA сервера} [LOCAL] 

Если используется только локальная база данных пользователей, то в правиле аутентификации можно указывать только LOCAL (проверьте, что хотя бы один пользователь создан, иначе можно себе заблокировать доступ), а если требуется использовать внешние базы, доступные по протоколам TACACS+, RADIUS или LDAP, то такие сервера надо предварительно настроить

   aaa-server {имя AAA сервера} protocol {tacacs|radius|ldap}   aaa-server {имя AAA сервера} ({interface}) host {ip}     key {ключ}     ! и другие команды, специфичные для данного типа сервера 

Локальная база пользователей задается командой

   user {пользователь} password {пароль} [privilege #] 

Доступ по ASDM возможен только от имени пользователя с уровнем привилегий 15 (максимальный, означает, что пользователю можно все настраивать) Также локальным пользователям можно задать ряд атрибутов, используя команду

   user {пользователь} attributes     ! различные атрибуты пользователя 

Завершая эту часть приведу кусочек конфига. В нем настроено 2 интерфейса (в данном случае это gigabitethernet 0/0 и 0/1, однако на разных платформах это могут быть и другие физические интерфейсы), inside и outside, дефолтный маршрут, разрешен удаленный доступ по ssh и https ото всюду, при этом аутентификация использует локальную базу данных пользователей.

 hostname MyAsa ! domain name anticisco.ru ! interface g0/0   nameif outside   security-level 0   ip address 1.1.1.2 255.255.255.252   no shut ! int g0/1   nameif inside   security-level 100   ip address 10.1.1.1 255.255.255.0   no shut ! ! на ASA запись 0.0.0.0 можно сократить до 0 ! route outside 0 0 1.1.1.1 ! username admin password cisco privilege 15 ! ssh 0 0 inside ssh 0 0 outside ! http 0 0 inside http 0 0 outside ! aaa authentication ssh console LOCAL aaa authentication http console LOCAL 

Используя такие настройки вы разрешите пакетам ходить из непосредственно присоединенной сети за интерфейсом inside наружу. Снаружи будут приходить только ответы по сессиям (tcp и udp), открытым изнутри, т.к. напомню по умолчанию трафик идущий «внутрь» весь запрещен. Как его разрешить поговорим в следующей части.Списки доступа (продолжение следует)Дано: ASA5505 с чистой конфигурацией. Интернет линк с динамическим IP. Требуется: настроить внутреннюю сеть с раздачей IP по DHCP, NAT для доступа в интернет. Этапы настройки:

  1.  Настроить Vlan’ы. 
  2. Привязать Vlan  к интерфейсам
  3. Настроить DHCPD и прописать маршрут по умолчанию
  4. Настроить NAT
  5. Настроить service-policy.
  6. Удаленный доступ

Далее подробнее.

Настроить Vlan’ы.

У нас по умолчанию есть только Vlan1. Так как он по умолчанию привязан ко всем портам, я предпочитаю его использовать для локальной сети. Указываем в нем IP-адрес ASA во внутренней сети, фактически основной шлюз. А так же устанавливаем security-level 100 — это позволяет трафику из внутренней сети спокойно проходить в Vlan с меньшим приоритетом, но запрещает установку соединений в обратную сторону (если не указано отдельное правило). interface Vlan1  description Local LAN  nameif LAN  security-level 100  ip address 192.168.1.1 255.255.255.0 no shutdown Так же создадим Vlan2, который будем использовать для подключения к интернет. interface Vlan2  description Internet  nameif WAN  security-level 0  ip address dhcp  no shutdown В этот раз приоритет 0, для самого недоверенного трафика. IP-адрес мы получаем автоматически от провайдера, в противном случае его стоит указать как в случае с локальной сетью.Имена vlan’ов можно выбрать любые, но желательно что бы они были вам понятны, в дальнейшем их придется часто использовать для настройки.

Привязать Vlan  к интерфейсам.

Теперь нам необходимо указать, на каких интерфейсах какой VLAN. Как уже сказано, VLAN по умолчанию настроен на всех. Интерфейсы ASA настраиваются аналогично интерфейсам коммутатора 2го уровня: interface Ethernet0/0<  description Inetrnet  switchport access vlan 2  no shutdown ! interface Ethernet0/1  description Local network   no shutdown

Настроить DHCPD и прописать маршрут по умолчанию

Теперь настроим раздачу IP-адресов в нашей сети. Если вы желаете прописывать адреса вручную в вашей сети, можете пропустить этот шаг. ! dhcpd address 192.168.1.2-192.168.1.254 LAN dhcpd dns 8.8.8.8 dhcpd enable LAN route 0 0 1.1.1.1  dhcpd address 192.168.1.1-192.168.1.254 LAN — какие адреса раздавать и в каком VLAN dhcpd dns 8.8.8.8 — какой адрес DNS, который надо использовать. Я предпочитаю указывать гугловский. dhcpd enable LAN — включаем раздачу адресов в конкретном VLAN. route 0 0 1.1.1.1  — это означает маршрут на все адреса, где 1.1.1.1 next-hope, указанный вашим провайдером как маршрут по умолчанию.

Настроить NAT

Напомню, а ASA есть два варианта прописать NAT — в глобальной настройке и в настройке объекта типа network. Сейчас мы пропишем его в объекте: object network LAN  subnet 192.168.1.0 255.255.255.0  nat (LAN,WAN) dynamic interface Далее этот объект, в котором мы записали нашу локальную сеть мы сможем использовать при составлении списков доступа и т.д., пригодиться еще. Если вы настраиваете только что купленную ASA, то возможно NAT — правило было создано автоматически при указании security-level на vlan. Для того, что бы избежать проблем в дальнейшем, убедитесь что вы не продублировали настройки командой: show nat

Настроить service-policy.

Как и с NATом, ASA должна при первой настройке создать правила инспектирования трафика из локальной сети в интернет. Это фактически и есть фаервол. Но иногда бывают случае когда автоматически ничего не создается, а ICMP-трафик(ping) не работает без настройки вообще. Поэтому проверим настройки: class-map inspection_default  match default-inspection-traffic< policy-map global_policy  class inspection_default inspect icmp   В данной статье не буду углубляться в настройки policy-map, скажу только, что таким образом мы разрешили ходить icmp трафику После этого привязываем эту политику к интерфейсу (можно сделать политикой для всех интерфейсов). Политика применяется на входе в интерфейс, поэтому используем LAN service-policy global_policy interface LAN На этом минимальная настройка закончена. Как настроить удаленный доступ, VPN — туннели будет описано в других статьях.Полная конфигурация, которую мы произвели interface Ethernet0/0  description Inetrnet  switchport access vlan 2  no shutdown ! interface Ethernet0/1  description Local network   no shutdown< interface Vlan1   description Local LAN   nameif LAN  security-level 100   ip address 192.168.1.1 255.255.255.0 interface Vlan2   description Internet  nameif WAN  security-level 0  ip address dhcp !object network LAN   subnet 192.168.1.0 255.255.255.0 object network LAN nat (LAN,WAN) dynamic interface  route WAN 0.0.0.0 0.0.0.0 1.1.1.1 1 dhcpd dns 8.8.8.8 dhcpd address 192.168.1.1-192.168.1.254 LAN dhcpd enable LAN class-map inspection_default  match default-inspection-traffic policy-map global_policy   description default_policy  class inspection_default   inspect dns   inspect icmp   inspect http service-policy global_policy interface WAN Используемые источники:

  • https://habr.com/post/80414/
  • http://jesterantik.blogspot.com/2013/09/asa5505.html

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации