Cisco ASA/NAT

Материал из Xgu.ru

Перейти к: навигация, поиск
stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

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

Автор: Наташа Самойленко

На этой странице описываются виды трансляции адресов, которые поддерживает Cisco ASA, их особенности, отличия, примеры настройки.

Начиная с версии 8.3 и выше, в ASA существенно изменился синтаксис написания правил NAT, а также правила написания ACL.

Содержание

[править] NAT в Cisco ASA в версии 8.3 и выше

[править] Основные отличия

  • Не нужно делать настроек ната для сети, трафик в которую передаётся без преобразований (режим маршрутизатора по умолчанию).
  • Отсутствуют команда nat-control (включение NAT), а также команды static и global. Все заменены на команду nat с изменившимся синтаксисом.
  • В команде nat в режиме глобального конфигурирования могут быть указаны только object-network и/или object-group - специализированные списки IP-адресов (хостов, диапазонов адресов и сетей) с возможными комментариями (description).
  • В object-network может быть указана только одна из трёх позиций - host, range и subnet (IP, диапазон IP, подсеть)
  • В object-group может быть произвольное количество других object-group и/или object-network, а также одновременно несколько host, range и subnet (многоуровневое наследование, а также просто списки хостов и сетей).
  • Команда nat доступна как в режиме глобального конфигурирования (так называемый manual nat), так и в режиме конфигурации object-network (так называемый auto nat, упрощённый синтаксис, относится к определённым в объекте IP, в назначении может напрямую указываться IP).
  • Все варианты NAT можно настроить как manual nat (в глобальной конфигурации), часть правил может быть настроена как auto nat (в свойствах object-network) - то есть, двумя разными способами ("обычным" и "простым").
  • Команды nat в итоговой конфигурации группируются в три независимых секции, в каждой из которых правила ЗАНОСЯТСЯ в порядке записи (если не указан приоритет), и ВЫПОЛНЯЮТСЯ в порядке расположения (сверху вниз по всем секциям, до первого совпадения).
  • Благодаря приоритетам, возможна очень гибкая и удобная настройка NAT (в частности, одновременный или выборочный нат на встречные направления для одних и тех же адресов, или "внизу" общие правила, "сверху" исключения и т.п.).
  • Указание одних и тех же правил (с одинаковыми исходными и/или результирующими адресами) не вызывает ошибки (верхнее правило срабатывает, следующие игнорируются).
  • Примеры нового синтаксиса по сравнению со старым - https://supportforums.cisco.com/docs/DOC-9129 , а также в других источниках.

[править] Порядок правил NAT

  • Правила ВНОСЯТСЯ в соответствующую секцию в порядке внесения ИЛИ в соотв. с указанным приоритетом (целое число).
  • Правила ВЫПОЛНЯЮТСЯ в порядке расположения в show run - cверху вниз по всем секциям, до первого совпадения.
  1. Manual NAT - обычные команды nat в режиме глобальной конфигурации
  2. Auto NAT - команды nat в свойствах object-network
  3. Manual NAT после Auto - команды nat с параметром after-auto в режиме глобальной конфигурации

[править] Auto NAT (Object NAT)

[править] Auto NAT. Static

object network DMZ
  host 172.16.1.2
nat (dmz,outside) static 200.15.1.37

[править] Auto PAT. Static

object network DMZ1
  host 172.16.1.5
nat (dmz,outside) static interface service tcp 8000 www

object network DMZ2
  host 172.16.1.3
nat (dmz,outside) static interface service tcp 2323 23

[править] Auto NAT. Dynamic

Пример синтаксиса в 8.2:

nat (inside) 1 10.0.0.0 255.255.255.0
global (outside) 1 interface

Аналог в 8.3:

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

[править] NAT в Cisco ASA до версии 8.3

[править] Общая информация о трансляции адресов в Cisco ASA

[править] Терминология

  • Исходящее соединение (Outbound connection)
  • Входящее соединение (Inbound connection)
  • Real address
  • Mapped address
  • Real interface
  • Mapped interface

[править] Типы правил трансляции адресов

ASA поддерживает несколько типов правил трансляции адресов:

  • Динамическая трансляция:
    • Dynamic NAT — динамический NAT транслирует группу адресов с указанного интерфейса в пул адресов. При этом каждому хосту из внутренней сети будет выделяться полностью адрес из пула.
    • PAT — динамическая трансляция портов транслирует группу адресов с указанного интерфейса в выделенный IP-адрес или IP-адрес интерфейса. Для каждого нового исходящего соединения IP-адрес отправителя транслируется в один и тот же IP-адрес, но с разными номерами портов.
  • Статическая трансляция:
    • Static NAT — Статическая трансляция используется в том случае когда определенному узлу при установлении исходящего соединения присваивается заданный IP адрес.Например, для видимости WEB сервера, расположенного в DMZ из Интернет. Кроме того, этот метод используется для предоставления доступа к интерфейсом с более высоким уровнем безопасности от интерфейсов с менее высоким уровнем безопасности.
    • Static PAT — (проброс портов)
  • Policy NAT
  • Исключения из правил трансляции (используется при включенном nat-control):
    • Identity NAT
    • NAT Exemption

[править] Nat-control

NAT control requires that packets traversing from an inside interface to an outside interface match a NAT rule; for any host on the inside network to access a host on the outside network, you must configure NAT to translate the inside host address

Interfaces at the same security level are not required to use NAT to communicate. However, if you configure dynamic NAT or PAT on a same security interface, then all traffic from the interface to a same security interface or an outside interface must match a NAT rule

[править] Порядок применения различных правил трансляции

The security appliance matches real addresses to NAT commands in the following order:

  1. NAT exemption (nat 0 access-list)—In order, until the first match. Identity NAT is not included in this category; it is included in the regular static NAT or regular NAT category. We do not recommend overlapping addresses in NAT exemption statements because unexpected results can occur.
  2. Static NAT and Static PAT (regular and policy) (static)—In order, until the first match. Static identity NAT is included in this category.
  3. Policy dynamic NAT (nat access-list)—In order, until the first match. Overlapping addresses are allowed.
  4. Regular dynamic NAT (nat)—Best match. Regular identity NAT is included in this category. The order of the NAT commands does not matter; the NAT statement that best matches the real address is used. For example, you can create a general statement to translate all addresses (0.0.0.0) on an interface. If you want to translate a subset of your network (10.1.1.1) to a different address, then you can create a statement to translate only 10.1.1.1. When 10.1.1.1 makes a connection, the specific statement for 10.1.1.1 is used because it matches the real address best. We do not recommend using overlapping statements; they use more memory and can slow the performance of the security appliance.

[править] Таймеры

timeout xlate

[править] Динамическая трансляция

[править] Dynamic NAT и PAT

[править] Базовые настройки

[править] Несколько правил nat и global

[править] Правила динамической трансляции и входящие соединения

Пример топологии

Note-icon.gif

В этом разделе описывается ситуация, когда входящий доступ в сеть возможен из-за создающихся динамических трансляций. Этот момент описан для того чтобы обратить внимание на потенциальную возможность такого использования динамической трансляции. Реально для входящих соединений динамические правила трансляции сложно использовать, так как надо знать какой IP-адрес динамически был назначен хосту.

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

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

Например, на ASA1 настроены такие правила трансляции:

ASA1(config)# nat (inside) 1 192.168.1.0 255.255.255.0
ASA1(config)# global (outside) 1 192.168.3.100-192.168.3.110

После инициации соединения с inhost на outhost, появилась следующая трансляция:

ASA1(config)# sh xlate detail 
1 in use, 1 most used
Flags: D - DNS, d - dump, I - identity, i - dynamic, n - no random,
       r - portmap, s - static
NAT from inside:inhost to outside:192.168.3.101 flags i

На ASA1 настроен и применен к интерфейсу outside ACL ICMP, который разрешает любой ICMP-трафик:

ASA1(config)# access-list ICMP extended permit icmp any any 
ASA1(config)# access-list ICMP extended deny ip any any 
ASA1(config)# access-group ICMP in interface outside

До тех пор пока существует трансляция для хоста inhost, с хоста outhost можно отправлять ICMP-пакеты, обращаясь на IP-адрес 192.168.3.101. Кроме того, убедиться, что пинг проходит можно запустив packet-tracer на ASA1:


Для примера приведен вывод packet-tracer в случае, если с хоста outhost обратиться на 80 порт адреса 192.168.3.101 (трафик отброшен ACL на внешнем интерфейсе):


[править] Влияние правила nat на передачу трафика на другие интерфейсы

Пример топологии

После того как какая-то сеть указана в правиле nat, указанные адреса обязательно должны транслироваться при обращении на интерфейс с меньшим или одинаковым уровнем безопасности (независимо от того включен ли nat-control). То есть, должно быть указано соответствующее правило global или настроена статическая трансляция.

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

Конфигурация интерфейсов ASA1:

ASA1(config)# sh nameif
Interface                Name                     Security
GigabitEthernet0/0       inside                   100
GigabitEthernet0/1       dmz2                      50
GigabitEthernet0/2       outside                    0
GigabitEthernet0/3       dmz1                      50

ASA1(config)# sh ip    
System IP Addresses:
Interface                Name                   IP address      Subnet mask     Method 
GigabitEthernet0/0       inside                 192.168.1.1     255.255.255.0   CONFIG
GigabitEthernet0/1       dmz2                   192.168.2.1     255.255.255.0   CONFIG
GigabitEthernet0/2       outside                192.168.3.1     255.255.255.0   CONFIG
GigabitEthernet0/3       dmz1                   192.168.25.1    255.255.255.0   CONFIG

Разрешено прохождение трафика между интерфейсами с одинаковыми уровнями безопасности:

ASA1(config)# same-security-traffic permit inter-interface

Настроены ACL:

ASA1(config)# access-list ICMP extended permit icmp any any 
ASA1(config)# access-list ICMP extended deny ip any any 
ASA1(config)# access-group ICMP in interface outside
ASA1(config)# access-group ICMP in interface dmz1

До настройки правил трансляции:

[dmz1host:~]$ ping 192.168.1.10
PING 192.168.1.10 (192.168.1.10) 56(84) bytes of data.
64 bytes from 192.168.1.10: icmp_seq=1 ttl=63 time=0.363 ms
64 bytes from 192.168.1.10: icmp_seq=2 ttl=63 time=0.422 ms
64 bytes from 192.168.1.10: icmp_seq=3 ttl=63 time=0.390 ms

--- 192.168.1.10 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.363/0.391/0.422/0.033 ms

[dmz1host:~]$ ping 192.168.2.10
PING 192.168.2.10 (192.168.2.10) 56(84) bytes of data.
64 bytes from 192.168.2.10: icmp_seq=1 ttl=63 time=1.89 ms
64 bytes from 192.168.2.10: icmp_seq=2 ttl=63 time=0.708 ms

--- 192.168.2.10 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.708/1.303/1.898/0.595 ms

[dmz1host:~]$ ping 192.168.3.10
PING 192.168.3.10 (192.168.3.10) 56(84) bytes of data.
64 bytes from 192.168.3.10: icmp_seq=1 ttl=63 time=1.64 ms
64 bytes from 192.168.3.10: icmp_seq=2 ttl=63 time=0.802 ms
64 bytes from 192.168.3.10: icmp_seq=3 ttl=63 time=0.729 ms

--- 192.168.3.10 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.729/1.059/1.647/0.417 ms

Настроены такие правила:

ASA1(config)# sh run nat
nat (dmz1) 1 0.0.0.0 0.0.0.0
ASA1(config)# sh run global 
global (outside) 1 192.168.3.100-192.168.3.200

После настройки правил трансляции:

[dmz1host:~]$ ping 192.168.1.10
PING 192.168.1.10 (192.168.1.10) 56(84) bytes of data.
64 bytes from 192.168.1.10: icmp_seq=1 ttl=63 time=0.658 ms
64 bytes from 192.168.1.10: icmp_seq=2 ttl=63 time=0.465 ms

--- 192.168.1.10 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.465/0.561/0.658/0.099 ms

[dmz1host:~]$ ping 192.168.2.10
PING 192.168.2.10 (192.168.2.10) 56(84) bytes of data.

--- 192.168.2.10 ping statistics ---
5 packets transmitted, 0 received, 100% packet loss, time 4006ms

[dmz1host:~]$ ping 192.168.3.10
PING 192.168.3.10 (192.168.3.10) 56(84) bytes of data.
64 bytes from 192.168.3.10: icmp_seq=1 ttl=63 time=3.62 ms
64 bytes from 192.168.3.10: icmp_seq=2 ttl=63 time=0.933 ms

--- 192.168.3.10 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.933/2.277/3.621/1.344 ms

Если задать правило global для интерфейса dmz2:

ASA1(config)# global (dmz2) 1 192.168.2.100-192.168.2.200

То с dmz1host будет доступен dmz2host:

[dmz1host:~]$ ping 192.168.2.10
PING 192.168.2.10 (192.168.2.10) 56(84) bytes of data.
64 bytes from 192.168.2.10: icmp_seq=1 ttl=63 time=0.764 ms
64 bytes from 192.168.2.10: icmp_seq=2 ttl=63 time=0.742 ms

--- 192.168.2.10 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.742/0.753/0.764/0.011 ms

Таблица трансляций:

ASA1(config)# sh xlate detail 
2 in use, 2 most used
Flags: D - DNS, d - dump, I - identity, i - dynamic, n - no random,
       r - portmap, s - static
NAT from dmz1:dmz1host to outside:192.168.3.155 flags i
NAT from dmz1:dmz1host to dmz2:192.168.2.129 flags i

[править] Outside NAT

Пример топологии

После того как какая-то сеть указана в правиле nat с параметром outside, указанные адреса обязательно должны транслироваться при обращении на интерфейс с большим или одинаковым уровнем безопасности (независимо от того включен ли nat-control). То есть, должно быть указано соответствующее правило global или настроена статическая трансляция.

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

Конфигурация интерфейсов и настройки ACL на ASA1 остались такие же как в предыдущем разделе.

Правило nat (предыдущие настройки правил трансляции удалены):

ASA1(config)# sh run nat
nat (dmz1) 1 0.0.0.0 0.0.0.0 outside

После настройки правила nat с параметром outside:

[dmz1host:~]$ ping 192.168.1.10
PING 192.168.1.10 (192.168.1.10) 56(84) bytes of data.

--- 192.168.1.10 ping statistics ---
7 packets transmitted, 0 received, 100% packet loss, time 6004ms

[dmz1host:~]$ ping 192.168.2.10
PING 192.168.2.10 (192.168.2.10) 56(84) bytes of data.

--- 192.168.2.10 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2005ms

[dmz1host:~]$ ping 192.168.3.10
PING 192.168.3.10 (192.168.3.10) 56(84) bytes of data.
64 bytes from 192.168.3.10: icmp_seq=1 ttl=63 time=0.966 ms
64 bytes from 192.168.3.10: icmp_seq=2 ttl=63 time=0.832 ms
64 bytes from 192.168.3.10: icmp_seq=3 ttl=63 time=0.839 ms
64 bytes from 192.168.3.10: icmp_seq=4 ttl=63 time=0.842 ms

--- 192.168.3.10 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 0.832/0.869/0.966/0.066 ms

После настройки правила global на интерфейсе dmz2:

ASA1(config)# global (dmz2) 1 192.168.2.100-192.168.2.200

С хоста dmz1host доступен хост dmz2host:

[dmz1host:~]$ ping 192.168.2.10
PING 192.168.2.10 (192.168.2.10) 56(84) bytes of data.
64 bytes from 192.168.2.10: icmp_seq=1 ttl=63 time=3.56 ms
64 bytes from 192.168.2.10: icmp_seq=2 ttl=63 time=0.753 ms

--- 192.168.2.10 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.753/2.160/3.568/1.408 ms

[править] Статическая трансляция

[править] Static NAT

[править] Static PAT

ASA1(config)# static (inside,outside) tcp 192.168.3.1 http 192.168.1.10 http 

[править] Policy NAT

Note-icon.gif

Policy NAT поддерживают все типы трансляции адресов, кроме NAT exemption. В ACL, которые применяются в NAT exemption, не могут указываться порты.


[править] Policy Static NAT

Policy Static NAT


access-list real extended permit ip host inhost host outhost 

ASA1(config)# static (inside,outside) 192.168.3.3 access-list real 

В ACL для static policy NAT первый адрес -- это реальный IP-адрес, который будет транслироваться, а второй -- IP-адрес получателя или отправителя трафика (в зависимости от направления в котором передается трафик).

[править] Policy static identity NAT

ASA1(config)# access-list ide extended permit ip host inhost host outhost 
ASA1(config)# static (inside,outside) inhost  access-list ide 
ASA1(config)# sh xlate detail 
2 in use, 3 most used
Flags: D - DNS, d - dump, I - identity, i - dynamic, n - no random,
       r - portmap, s - static
NAT from inside:192.168.1.3 to outside:192.168.3.2 flags s
NAT from inside:inhost to outside(ide):inhost flags s

[править] Исключения из правил трансляции

[править] Identity NAT

Хотя для identity NAT IP-адрес сохраняется и не транслируется, соединения с внешних сетей во внутренние не могут быть инициированы, даже если ACL разрешает их. Для того чтобы эти соединения проходили, необходимо использовать static identity NAT или NAT exemption.

При использовании identity NAT, IP-адреса, которые указаны в правиле nat 0, не будут транслироваться на любых интерфейсах. То есть, в identity NAT нельзя указать как в динамической трансляции, при прохождении через какие интерфейсы будет выполняться правило трансляции.

[править] Static identity NAT

Static identity NAT позволяет указать при прохождении через какие интерфейсы будет выполняться правило трансляции.

Например, при прохождении через интерфейс dmz1, будет отрабатывать правило static identity NAT и адрес останется неизменным, а, при прохождении через интерфейс dmz2, адрес будет транслироваться.

Вместе со static identity NAT может использоваться policy NAT.

[править] NAT Exemption

NAT exemption позволяет инициировать входящие и исходящие соединения.

Как и в правиле identity NAT, в NAT exemption не указываются интерфейсы через которые должен проходить трафик, чтобы правило сработало. Однако в NAT exemption используется ACL и с его помощью можно указать адреса отправителей и получателей.

Icon-caution.gif

Ограничения NAT exemption:

  • В ACL, которые применяются в NAT exemption, не могут указываться порты,
  • В правиле NAT exemption не могут указываться настройки сессий.

Например, если есть такой ACL:

ASA1(config)# sh run access-list 
access-list test extended permit tcp 192.168.1.0 255.255.255.0 host dmzhost eq www 

То при применении его к правилу NAT exemption, будет такая ошибка:

ASA1(config)# nat (inside) 0 access-list test
ERROR: access-list has protocol or port


[править] Проверка работы NAT

  sh xlate
  show local-host all
  sh run global
  sh run nat

[править] Очистка правил трансляции

  clear xlate [mapped-ip [local-ip]]
  clear local-host [ip-address]

[править] Использование packet-tracer

Packet-tracer позволяет определить:

  • порядок применения различных механизмов на Cisco ASA:
    • маршрутизация,
    • трансляция адресов,
    • применение ACL и тд.
  • порядок применения правил трансляции:
    • NAT exemption,
    • Static NAT и др.
  • на какой стадии был отброшен пакет,
  • по какому правилу трансляции прошел пакет.

[править] Дополнительная информация

Источник — «http://xgu.ru/wiki/Cisco_ASA/NAT»