Cisco ASA/NAT
Материал из Xgu.ru
- Автор: Наташа Самойленко
На этой странице описываются виды трансляции адресов, которые поддерживает 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верху вниз по всем секциям, до первого совпадения.
- Manual NAT - обычные команды nat в режиме глобальной конфигурации
- Auto NAT - команды nat в свойствах object-network
- 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:
- 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.
- Static NAT and Static PAT (regular and policy) (static)—In order, until the first match. Static identity NAT is included in this category.
- Policy dynamic NAT (nat access-list)—In order, until the first match. Overlapping addresses are allowed.
- 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
[править] Правила динамической трансляции и входящие соединения
|
В этом разделе описывается ситуация, когда входящий доступ в сеть возможен из-за создающихся динамических трансляций. Этот момент описан для того чтобы обратить внимание на потенциальную возможность такого использования динамической трансляции. Реально для входящих соединений динамические правила трансляции сложно использовать, так как надо знать какой 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:
Phase: 1 Type: FLOW-LOOKUP Subtype: Result: ALLOW Config: Additional Information: Found no matching flow, creating a new flow
Phase: 2 Type: UN-NAT Subtype: dynamic Result: ALLOW Config: nat (inside) 1 192.168.1.0 255.255.255.0
match ip inside 192.168.1.0 255.255.255.0 outside any dynamic translation to pool 1 (192.168.3.100 - 192.168.3.110) translate_hits = 205, untranslate_hits = 11
Additional Information: NAT divert to egress interface inside Untranslate 192.168.3.101/0 to inhost/0 using netmask 255.255.255.255
Phase: 3 Type: ACCESS-LIST Subtype: log Result: ALLOW Config: access-group ICMP in interface outside access-list ICMP extended permit icmp any any Additional Information:
Phase: 4 Type: CONN-SETTINGS Subtype: Result: ALLOW Config: class-map any
match any
policy-map global_policy
class any set connection decrement-ttl
service-policy global_policy global Additional Information:
Phase: 5 Type: IP-OPTIONS Subtype: Result: ALLOW Config: Additional Information:
Phase: 6 Type: INSPECT Subtype: np-inspect Result: ALLOW Config: class-map inspection_default
match default-inspection-traffic
policy-map global_policy
class inspection_default inspect icmp
service-policy global_policy global Additional Information:
Phase: 7 Type: INSPECT Subtype: np-inspect Result: ALLOW Config: Additional Information:
Phase: 8 Type: NAT Subtype: rpf-check Result: ALLOW Config: nat (inside) 1 192.168.1.0 255.255.255.0
match ip inside 192.168.1.0 255.255.255.0 outside any dynamic translation to pool 1 (192.168.3.100 - 192.168.3.110) translate_hits = 205, untranslate_hits = 11
Additional Information:
Phase: 9 Type: FLOW-CREATION Subtype: Result: ALLOW Config: Additional Information: New flow created with id 225, packet dispatched to next module
Result: input-interface: outside input-status: up input-line-status: up output-interface: inside output-status: up output-line-status: up
Action: allow
Для примера приведен вывод packet-tracer в случае, если с хоста outhost обратиться на 80 порт адреса 192.168.3.101 (трафик отброшен ACL на внешнем интерфейсе):
Phase: 1 Type: FLOW-LOOKUP Subtype: Result: ALLOW Config: Additional Information: Found no matching flow, creating a new flow
Phase: 2 Type: UN-NAT Subtype: dynamic Result: ALLOW Config: nat (inside) 1 192.168.1.0 255.255.255.0
match ip inside 192.168.1.0 255.255.255.0 outside any dynamic translation to pool 1 (192.168.3.100 - 192.168.3.110) translate_hits = 205, untranslate_hits = 13
Additional Information: NAT divert to egress interface inside Untranslate 192.168.3.101/0 to inhost/0 using netmask 255.255.255.255
Phase: 3 Type: ACCESS-LIST Subtype: log Result: DROP Config: access-group ICMP in interface outside access-list ICMP extended deny ip any any Additional Information:
Result: input-interface: outside input-status: up input-line-status: up output-interface: inside output-status: up output-line-status: up Action: drop
Drop-reason: (acl-drop) Flow is denied by configured rule
[править] Влияние правила 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
|
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 и с его помощью можно указать адреса отправителей и получателей.
Ограничения 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 и др.
- на какой стадии был отброшен пакет,
- по какому правилу трансляции прошел пакет.