Сделать домашней|Добавить в избранное
 

CCIENetLab - Подготовка к экзаменам
CCNA, CCNP и CCIE

 
» » Конфигурация Object NAT на ASA 9.x

Конфигурация Object NAT на ASA 9.x

Автор: Sauron от 27-10-2015, 17:29
В этом документе мы рассмотрим простой пример конфигурации NAT и листов доступа на ASA Firewall версии 8.4 и выше для того, чтобы обеспечить прохождение исходящего и входящего трафика. В этом примере вы сможете увидеть, что для того, чтобы разрешить входящий доступ к Web-серверу расположенному в DMZ и разрешить исходящий трафик от внутренних хостов необходимо на ASA Firewall настроить трансляцию адресов NAT и листы доступа ACL. В этом примере используется Firewall Cisco ASAv (Virtual ASA) версии 9.4.1

Задачу можно обобщить двумя целями:
- Разрешить узлам за интерфейсами inside и dmz исходящий трафик в Интернет.
- Разрешить узлам в Internet доступ к Веб-серверу в DMZ c IP адресом 192.168.1.91
Прежде чем приступить к настройке рассмотрим кратенько как работает NAT и ACL на ASA Firewall.

ACL

Списки контроля доступа (Access-листы или списки управления доступом для краткости) это метод, с помощью которого брандмауэр ASA определяет, разрешать ли трафик или запрещать. По умолчанию, трафик, проходящий от интерфейса с низшим уровнем безопасности к интерфейсу с высшим уровнем безопасности запрещен.
Данное поведение может быть изменено с помощью ACL примененному к интерфейсу с низшим уровнем безопасности. Также ASA, по умолчанию, разрешает прохождение трафика от интерфейса с высшим уровнем безопасности к интерфейсу с низшим уровнем безопасности. Такое поведение также может быть изменено с помощью листа доступа ACL.
Параметр «уровень безопасности» (security level) – это число от 0 до 100, которое позволяет сравнить 2 интерфейса и определить, кто из них более «безопасен». Параметр используется качественно, а не количественно, т.е. важно только отношение «больше-меньше».

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

В версиях ASA 8.2 и более ранних, ASA просто сравнивала входящее соединение или пакет со списком правил доступа (ACL) на интерфейсе. В версиях 8.3 и выше, ASA сначала выполняет трансляцию адресов в пакете, если пакет попадает под NAT-правила, а только потом выполняется проверка на ACL на интерфейсе. Это означает, что в списках доступа, вы должны указывать реальные адреса хостов, а не транслированные, как это было в ранних версиях.

NAT

NAT на ASA в версии 8.3 и выше разбит на два типа известные как Auto NAT (Объектный NAT) и Manual NAT (Twice NAT). Первый из двух, Object NAT, конфигурируется внутри сетевого объекта. Примеры этого типа NAT рассмотрим ниже в этом документе. Основным преимуществом этого метода является то, что ASA автоматически упорядочивает правила обработки NAT, чтобы избежать конфликтов. Это самый простой вид NAT, но с легкостью настройки приходит и ограничения в деталях реализации. Например, вы не можете принять решение о трансляции на основе адреса назначения в пакете, как вы могли бы это сделать с другим типом NAT - Manual NAT.
Manual NAT является более надежным в детализации, но он требует, чтобы правила были сконфигурированы в правильном порядке, чтобы обеспечить правильное поведение.

Топология
Топология состоит из трех сетевых сегментов к которым подключены интерфейсы ASA. Сегмент сети ISP подключен к интерфейсу G0/0 и назван как outside с уровнем безопасности (security level ) 0.
Конфигурация Object NAT на ASA 9.x


Внутренняя сеть подключена к g0/1 и помечена как inside с уровнем безопасности 100. Сегмент DMZ, где размещен веб-сервер, подключен к g0/2 и помечен как dmz с уровнем безопасности 50.

Конфигурация интерфейсов и адресов показана на примере ниже.

interface GigabitEthernet0/0
 nameif outside
 security-level 0
 ip address 136.1.121.21 255.255.255.0 
 no shut
!
interface GigabitEthernet0/1
 nameif inside
 security-level 100
 ip address 10.0.0.21 255.255.255.0 
 no shut
!
interface GigabitEthernet0/2
 nameif dmz
 security-level 50
 ip address 192.168.1.21 255.255.255.0
 no shut
!
route outside 0.0.0.0 0.0.0.0 136.1.121.2
!


Для этого примера используется Object NAT, также известный, как AutoNAT. Первое, что нужно настроить это правила NAT, которые позволяют хостам на сегментах inside и DMZ подключиться к Интернет. Так как эти хосты используют приватные IP-адреса, необходимо транслировать их во что-то, что маршрутизируется в Интернет. В данном случае мы будем транслировать их в адрес внешнего интерфейса ASA. Таким образом, снаружи, они выглядят как IP-адреса интерфейса ASA. Если ваш внешний IP часто меняется (возможно, из-за DHCP), это наиболее предпочтительный способ.

Другой способ – это транслировать внутренние адреса в некий пул внешних адресов, которые выдает провайдер.

Динамический Object NAT

Для того, чтобы настроить этот тип NAT, необходимо создать сетевой объект, представляющий подсеть inside, а также объект, который представляет подсеть DMZ. В каждом из этих объектов, настроить динамическое правило NAT, которое будет выполнять PAT для этих клиентов при прохождении трафика от своих интерфейсов к внешнему интерфейсу.

object network LAN_INSIDE
 subnet 10.0.0.0 255.255.255.0
 nat (inside,outside) dynamic interface
!
object network LAN_DMZ
 subnet 192.168.1.0 255.255.255.0
 nat (dmz,outside) dynamic interface

Если вы посмотрите на текущую конфигурацию в этой точке (show run), вы увидите, что определение сетевого объекта разбивается на две части.

object network LAN_INSIDE
 subnet 10.0.0.0 255.255.255.0
!
object network LAN_INSIDE
 nat (inside,outside) dynamic interface

Первая часть указывает только то, что содержит объект (хост / подсеть, IP-адреса и т.д.), в то время как вторая секция показывает, что к этому объекту привязано NAT правило.

Данное правило говорит: когда хосты соответствующие подсети 10.0.0.0/24 идут от внутреннего интерфейса (inside) к внешнему интерфейсу (outside), мы хотим динамически транслировать их в IP адрес внешнего (outside) интерфейса. Попробуем выполнить пинг с хоста 10.0.0.201 на адрес 150.1.2.2. Выполним команду show xlate на ASAv

Конфигурация Object NAT на ASA 9.x

Мы видим, что установлена PAT трансляция по протоколу ICMP и адрес 10.0.0.201 на интерфейсе inside транслируется в адрес внешнего интерфейса ASA 136.1.121.21

Теперь попробуем выполнить telnet с хоста 10.0.0.201 на адрес 150.1.2.2

Конфигурация Object NAT на ASA 9.x

Мы видим, что установлена PAT трансляция по протоколу TCP и адрес 10.0.0.201 порт 1575 на интерфейсе inside транслируется в адрес внешнего интерфейса ASA 136.1.121.21 и порт 1575.
Важно отметить, что если необходимо транслировать одну и ту же сеть в разные адреса или пулы адресов при прохождении через разные исходящие интерфейсы нельзя использовать один и тот же сетевой объект несколько раз.

Пример того, как НЕЛЬЗЯ:
!
object network LAN_INSIDE
 subnet 10.0.0.0 255.255.255.0
 nat (inside,outside) dynamic interface
 nat (inside,dmz) dynamic interface
!

В данном случае, нижняя строчка в правиле NAT перезапишет верхнюю. Необходимо делать два разных объекта (содержащих одну и ту же сеть) под каждое правило. Т.е вот так:

!
object network LAN_INSIDE_OUTSIDE
 subnet 10.0.0.0 255.255.255.0
 nat (inside,outside) dynamic interface
!
object network LAN_INSIDE_DMZ
 subnet 10.0.0.0 255.255.255.0
 nat (inside,dmz) dynamic interface
!

Если же хочется сделать динамический PAT в адрес, отличный от адреса интерфейса, то можно создать сетевой объект типа хост:

object network MAPPED_HOST
     host  136.1.121.10

А далее к нашему объекту LAN_INSIDE_OUTSIDE, описывающему адреса, которые мы хотим транслировать, применить правила трансляции

object network LAN_INSIDE_OUTSIDE
   nat (inside,outside) dynamic MAPPED_HOST 

или так

object network LAN_INSIDE_OUTSIDE
   nat (inside,outside) dynamic  MAPPED_HOST interface

Здесь слово interface можно написать для того, чтобы после исчерпания пула, либо зарезервированного количества сессий для одного адреса в РАТ, продолжать транслировать, но уже с использованием адреса интерфейса.

Используя трафик генератор, сгенерим несколько UDP пакетов с разными IP SRC адресами, но с одним и тем же SRC портом. Выполним еще раз команду show xlate на ASAv

Конфигурация Object NAT на ASA 9.x

Мы видим, что теперь адреса из сети 10.0.0.0/24 транслируются в адрес 136.1.121.10. Обратите внимание, что ASA всегда пытается сохранить номер порта при трансляции. Первая пара Хост:порт 10.0.0.93/1024 транслируется в 136.1.121.10/1024, т.е UDP порт сохранился. Следующая пара хост:порт 10.0.0.95/1024 уже транслируется в 136.1.121.10/50906, так как порт 1024 занят и порт при трансляции выбирается случайным образов из верхнего диапазона портов.

Для РАТ отдельный объект MAPPED_HOST имеет смысл создавать, только когда в нем несколько хостов. Если же используется всего один адрес, то его можно будет указать явно в соответствующей строке nat. Например так:

object network LAN_INSIDE_OUTSIDE
   nat (inside,outside) dynamic 136.1.121.10

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

object network MAPPED_POOL
  range 136.1.121.100 136.1.121.200

И к нашему объекту LAN_INSIDE_OUTSIDE, описывающему адреса, которые мы хотим транслировать, применить правила трансляции

object network LAN_INSIDE_OUTSIDE
  nat (inside,outside) dynamic MAPPED_POOL

Снова генерируем пакеты с разными адресами IP SRC и выполним команду show xlate

Конфигурация Object NAT на ASA 9.x

Теперь для каждого исходного адреса из пула выбирается отдельный адрес для трансляции.

Статический Object NAT

Теперь когда хосты за inside и dmz интерфейсами могут выходить в Интернет, изменим конфигурацию так, чтобы Интернет пользователи могли получить доступ к нашему Web-серверу на TCP порт 80. В этом примере, мы сделаем так, чтобы пользователи Интернет могли устанавливать соединения на IP адрес выданный нам ISP отличный от IP адреса внешнего интерфейса ASA. Будем использовать адрес 136.1.121.91. С такой конфигурацией, внешние пользователи будут способны достичь нашего Web-сервера в зоне DMZ обратившись по адресу 136.1.121.91 на TCP порту 80.

Для целей этой задачи, также используем Object NAT и ASA будет транслировать TCP порт 80 на Веб-сервере (192.168.1.91) в адрес 136.1.121.91 TCP порт 80 на интерфейсе outside

Как и ранее, определим сетевой объект, представляющий собой Web-сервер и правила трансляции для этого объекта. Так же определим второй объект, представляющий собой IP адрес в который мы транслируем хост.

object network IP_WEBHOST_MAPPED
     host  136.1.121.91
!
object network DMZ_WEBHOST
   host 192.168.1.91
  nat (dmz,outside) static  IP_WEBHOST_MAPPED  service tcp 80 80
!

Данное правило означает следующее: Когда хост соответствующий IP адресу 192.168.1.91 на сегменте dmz установит соединение из TCP порта 80 и это соединение пойдет на outside интерфейс, то SRC порт на интерфейсе outside будет транслироваться в порт 80 (т.е сам в себя), а SRC IP адрес в 136.1.121.91.

Данная фраза кажется немного странной ... " установит соединение из TCP порта 80 (WWW)”, ведь Веб-трафик предназначен на TCP порт 80.

Важно понимать, что эти правила NAT двунаправленные в природе. В результате вы можете перефразировать это предложение, просто перевернув формулировку. Это даст намного больше смысла:

Когда хост на стороне outside установит соединение на IP адрес 136.1.121.91 и на порт назначения TCP 80, мы будем транслировать адрес назначения пакета в 192.168.1.91, а порт назначения будет TCP 80 и пакет будет выслан из интерфейса dmz.

Выполним команду show xlate.

Конфигурация Object NAT на ASA 9.x

Появилась статическая трансляция (флаг s) для реального адреса 192.168.1.91 TCP 80 в адрес 136.1.121.91 TCP 80.

Допустим, мы не хотим светить порт 80 за интерфейс outside, а ходим использовать другой порт, например TCP 8081, чтобы транслировать его в порт TCP 80 при обращении на него из Internet. Здесь все так же просто, нужно указать его в качестве второго аргумента service в NAT правиле

object network DMZ_WEBHOST
   host 192.168.1.91
  nat (dmz,outside) static  IP_WEBHOST_MAPPED  service tcp 80 8081

Когда хост на стороне outside установит соединение на IP адрес 136.1.121.91 и на порт назначения TCP 8081, то порт назначения будет транслирован в TCP 80, а адрес назначения в 192.168.1.91.

Конфигурация Object NAT на ASA 9.x

Если мы ходим транслировать сервер целиком, а не только определённые порты (сервисы), то адрес трансляции (т.е тот IP адрес в который мы хотим транслировать реальный сервер) можно указать непосредственно в правиле NAT.

Выполним трансляцию адреса нашего DNS сервера на интерфейсе inside 10.0.0.100 в адрес 136.1.121.100 на интерфейсе outside.

object network INSIDE_ADHOST
   host 10.0.0.100
   nat (inside,outside) static  136.1.121.100
!

Согласно правилу выше любой трафик, идущий от сервера 10.0.0.100 в Internet будет транслироваться в адрес 136.1.121.100, равно как и в обратном направлении. Любой трафик из Internet предназначенный для IP адреса 136.1.121.100 будет транслирован в адрес 10.0.0.100 и направлен в inside.

Конфигурация Object NAT на ASA 9.x

Теперь если мы попробуем установить telnet с нашего хоста 10.0.0.100 на маршрутизатор 150.1.2.2, то соединение установиться, а ASA напишет в лог следующее сообщение

%ASA-6-302013: Built outbound TCP connection 2089 for outside:150.1.2.2/23 (150.1.2.2/23) to inside:10.0.0.100/3412 (136.1.121.100/3412)


Оно означает, что IP SRC адрес на стороне inside 10.0.0.100 был транслирован в 136.1.121.100 при доступе на IP адрес 150.1.2.2, который находиться за интерфейсом outside. В скобочках указаны транслированные адреса , т.е адреса в которые производится трансляция исходного IP пакета.

Когда мы транслируем один внутренний адрес в один внешний адрес все понятно. А что будет, если мы укажем для трансляции не хост, а диапазон (range) или подсеть (subnet)?

В случае если «мощность» объектов одинаковая (в них одинаковое количество хостов), то будет выполняться трансляция «один в один». Например, можно транслировать подсеть целиком в другую подсеть , или можно сделать identity NAT – транслировать сеть в себя в каком-то направлении.

Рассмотрим такой пример:

!
object network DMZ_RANGE_POOL
    range 136.1.121.101 136.1.121.200
!
object network DMZ_RANGE_LOCAL
   range 192.1.168.101 192.1.168.200
   nat (dmz,outside) static  DMZ_RANGE_POOL
!

Здесь хосты из диапазона 192.1.168.101-192.1.168.200 будут транслированы один к одному в диапазон 136.1.121.101-136.1.121.200 при доступе в Интернет. Т.е адрес 192.1.168.101 будет транслирован в адрес 136.1.121.101, адрес 192.1.168.102 будет транслирован в 136.1.121.102 и т.д

Если мы выполним show xlate, то увидим вот такую картину

Конфигурация Object NAT на ASA 9.x

Наш диапазон адресов 101-200 был разбит на несколько подсетей с разными масками. Например, подсеть 192.1.168.104/29 будет транслироваться в подсеть 136.1.121.104/29 и т.д.

И напоследок, покажем одну очень важную команду, которая показывает расположение NAT-правил в памяти и порядок их обработки. Это show nat и show nat detail. Остановимся на последнем варианте:

Конфигурация Object NAT на ASA 9.x

Первая строчка показывает тип правил NAT которые расположены далее. В данном случае это политика Auto NAT (или Object NAT), о которой мы говорим в этой статье и в структуре NAT правил они занимают секцию 2. Подробнее о секциях мы расскажем в следующий раз, но сейчас, так как секция всего одна – это не имеет значения.
Далее следуют правила в порядке их выполнения. Если трафик попадает под одно из правил, оно выполняется и поиск на этом прекращается, если трафик не попадает под правило, то проверяется следующее по списку и так далее до конца. Если трафик не попал ни под одно из правил, он просто маршрутизируется и трансляций не производится.
Напомним, что статические NAT правила – двунаправленные по природе. Поэтому трафик проверяется как в прямом, так и обратном направлении. Таким образом, если трафик пойдет от любого внешнего адреса за интерфейсом outside на IP адрес 136.1.121.100, то сработает правило N1, как если бы трафик шел от IP 10.0.0.100, расположенным за интерфейсом inside на любой внешний адрес за интерфейсом outside.

Обратите внимание, что сначала проверяются статические правила NAT, а только потом динамические. Здесь уже развернуты имена используемых объектов в их IP адреса. Например, в правиле N1 указана трансляция внутреннего хоста INSIDE_ADHOST в адрес 136.1.121.100

1 (inside) to (outside) source static INSIDE_ADHOST 136.1.121.100


и ниже показано развернутое правило, содержащие IP адреса и маски:

Source - Origin: 10.0.0.100/32, Translated: 136.1.121.100/32


Т.е адрес IP SRC 10.0.0.100 транслируется в IP SRC 136.1.121.100 при доступе из inside в outside и наоборот, IP DST 136.1.121.100 транслируется в IP DST 10.0.0.100 при доступе из outside в inside.

Листы доступа ACL

После того, NAT правила написаны, нам необходимо с помощью листов доступа разрешить прохождение нужного трафика. Для начала вспомним поведение ASA по умолчанию

  • трафик, идущий из интерфейса с более низким уровнем безопасности в строну интерфейса с более высоким уровнем безопасности, запрещен
  • трафик, идущий из интерфейса с более высоким уровнем безопасности в сторону интерфейса с более низким уровнем безопасности, разрешен.

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

  • Хосты на inside (security level 100) могут устанавливать соединения к хостам на сети dmz (security level 50)
  • Хосты на inside (security level 100) могут устанавливать соединения к хостам на сети outside (security level 0)
  • Хосты на dmz (security level 50) могут устанавливать соединения к хостам на сети outside (security level 0)

Обратный трафик по этим установленным соединениям всегда разрешен и ACL не проверяется. Однако следующий трафик будет запрещен.

  • Хосты на outside (security level 0) не могут устанавливать соединения к хостам на сети inside (security level 100)
  • Хосты на outside (security level 0) не могут устанавливать соединения к хостам на сети dmz (security level 50)
  • Хосты на dmz (security level 50) не могут устанавливать соединения к хостам на сети inside (security level 100)

Поскольку трафик из outside в dmz будет запрещен конфигураций ASA по умолчанию, то пользователи Интернет не смогут получить доступ к Веб-серверу, несмотря на NAT правила. Необходимо явно разрешить данный трафик. В версия ASA 8.3 и выше, вы должны использовать реальный IP адрес сервера в листа доступа ACL, а не транслированный. Это означает, что в конфигурации ACL мы должны разрешить трафик предназначенный для IP адрес 192.168.1.91, а не IP адреса 136.1.121.91 на порт 80. В случае если транслируется еще и TCP порт (например TCP 80 в TCP 8081), то нужно разрешить трафик на TCP порт 80, а не на TCP 8081.

Аналогично для трафика из outside в inside для доступа к серверу 10.0.0.100 по внешнему адресу 136.1.121.100, требуется сконфигурировать разрешающий ACL для трафика предназначенного для IP 10.0.0.100.

Сетевые объекты DMZ_WEBHOST и INSIDE_ADHOST, которые мы объявили для NAT, могут быть также использованы и в листе доступа.

access-list ACL_OUTSIDE_IN extended permit tcp any object  DMZ_WEBHOST eq www
access-list ACL_OUTSIDE_IN extended permit ip any object  INSIDE_ADHOST
!
access-group ACL_OUTSIDE_IN in interface outside

Попробуем обратиться с роутера R2 на адрес 136.1.121.91 и TCP порт 8081

R2# telnet 136.1.121.91 8081
Trying 136.1.121.91, 8081 ... Open

Порт открыт. На ASA установилось соединение

Конфигурация Object NAT на ASA 9.x

С TCP 136.1.121.2:31153 на TCP 192.168.1.91:80. Таким образом произошла трансляция IP DST 136.1.121.91 в адрес 192.168.1.91 и TCP порт 8081 был транслирован в TCP порт 80. Что также показывает лог ASA:

%ASA-6-302013: Built inbound TCP connection 3137 for outside:136.1.121.2/31153 (136.1.121.2/31153) to dmz:192.168.1.91/80 (136.1.121.91/8081)


Результирующий конфиг ASA будет выглядеть так:

hostname ASAv1
!
interface GigabitEthernet0/0
 nameif outside
 security-level 0
 ip address 136.1.121.21 255.255.255.0 
!             
interface GigabitEthernet0/1
 nameif inside
 security-level 100
 ip address 10.0.0.21 255.255.255.0 
!
interface GigabitEthernet0/2
 nameif dmz
 security-level 50
 ip address 192.168.1.21 255.255.255.0 
!
object network LAN_INSIDE
 subnet 10.0.0.0 255.255.255.0
object network LAN_DMZ
 subnet 192.168.1.0 255.255.255.0
object network IP_WEBHOST_MAPPED
 host 136.1.121.91
object network DMZ_WEBHOST
 host 192.168.1.91
object network INSIDE_ADHOST
 host 10.0.0.100
!
access-list ACL_OUTSIDE_IN extended permit tcp any object DMZ_WEBHOST eq www 
access-list ACL_OUTSIDE_IN extended permit ip any object INSIDE_ADHOST 
!
object network LAN_INSIDE
 nat (inside,outside) dynamic interface
!
object network LAN_DMZ
 nat (dmz,outside) dynamic interface
!
object network DMZ_WEBHOST
 nat (dmz,outside) static IP_WEBHOST_MAPPED service tcp www 8081 
!
object network INSIDE_ADHOST
 nat (inside,outside) static 136.1.121.100
!
access-group ACL_OUTSIDE_IN in interface outside
!
route outside 0.0.0.0 0.0.0.0 136.1.121.2 1

А как насчет трафика из сегмента dmz в сегмент inside? Например, Веб-серверу может потребоваться доступ к DNS серверу 10.0.0.100 в inside для того, чтобы резолвить имена в IP адреса. При этом необходимо запретить остальной доступ в inside. Предлагаю читателям сделать это самостоятельно.

Решение под катом:
скачать dle 10.6фильмы бесплатно
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий
Цитата
  • If

  • 4 декабря 2017 13:31
  • Группа: Гости
  • Регистрация: --
  • Статус:
  • 0 комментариев
  • 0 публикаций
^
Ответить
По последней части, касаемо ACL.
Как определить куда вешать ACL - на интерфейс outside или на inside?
  • Нравится
  • 0
 

CCIENetLab (C)