Настройка NAT для МСЭ Cisco ASA
Технология NAT считается одной из важнейших составляющих успешной работы с межсетевыми экранами ASA. Уверенная работа с Adaptive Security Appliance возможно только лишь в том случае, если пользователю четко понятны принципы функционирования NAT. В этой статье мы рассмотрим реализацию Network Address Translation для версий ASA prior_8.3 и post_8.3. Наша компания специализируется на
Техническая
Оформите заявку на сайте, мы свяжемся с вами в ближайшее время и ответим на все интересующие вопросы.
|
Заказать услугу
|
Технология NAT считается одной из важнейших составляющих успешной работы с межсетевыми экранами ASA. Уверенная работа с Adaptive Security Appliance возможно только лишь в том случае, если пользователю четко понятны принципы функционирования NAT.
В этой статье мы рассмотрим реализацию Network Address Translation для версий ASA prior_8.3 и post_8.3.
Наша компания специализируется на оказании профессиональных услуг по обеспечению информационной безопасности - мелкого, среднего и крупного бизнеса. Мы предлагаем современные и надежные ИТ-решения, которые позволяют осуществлять управление доступом к сети Интернет и осуществлять защиту сети от внешних угроз. Портфель компетенций включает в себя внедрение, настройку и последующую поддержку следующих направлений: 1. Сетевые системы контроля доступа - межсетевые экраны Firewall и системы обнаружения/предотвращения вторжений (IPS/IDS):
2. Безопасность данных (Data Secreсy) - сетевые системы защиты данных, в том числе на уровне конечных устройств:
3. Контроль доступности данных:
Только сейчас - Бесплатная диагностика, расчёт сметы, техническая поддержка, гарантия - 2 месяца! Почта для вопросов и заявок - info@lincas.ru, sales@lincas.ru Горячая линия - Москва, Санкт-Петербург: +7 (499) 703-43-50, +7 (812) 309-84-39 |
Настройка интерфейса DMZ
Изначально у нас есть сеть с Adaptive Security Appliance, соединяющая внешнюю и внутреннюю подсети двумя интерфейсами: outside и inside. Сначала проверим текущее соединение:
show interface ip brief
ping 8.8.8.8
ping tcp 195.112.100.134 80
Теперь необходимо добавить сеть и интерфейс DMZ. Для этого перейдем по адресу: ASDM > Configuration > Device Setup > Interfaces.
CLI
Interface GigabitEthernet3
no shutdown
nameif dmz
security-level 50
ip address 192.168.253.1 255.255.255.0
Проверка
show ip
show interface ip brief
show running-config interface gigabitEthernet 3
ping 192.168.253.10
Старый NAT
Множество современных устройств работает со старыми версиями IOS. Учитывая этот факт, необходимо уметь осуществлять настройку и «старый» Network Address Translation. Для этого необходимо выполнить такие команды:
- nat-control – пакет изнутри наружу должны обязательно «натиться». В противном случае NAT-пакет не пойдет в глобальную сеть.
- no nat-control – пакетам изнутри наружу можно хотить без NAT. С этой целью используется чистый роутинг.
Стоит заметить, что современные версии, как правило, работают по команде no nat-control. Простыми словами, если выполнена настройка ната, то трансляция происходит согласно имеющимся правилам. В то же самое время пакеты, которые не попали под трансляцию, маршрутизируются в соответствии с таблицей маршрутизации.
Теперь перейдем к настройкам NAT:
nat (inside) 1 192.168.2.0 255.255.255.0
global (outside) 1 62.105.149.230 - 62.105.149.235
global (outside) 1 62.105.149.236
global (dmz) 1
access-list NONAT permit ip (source net to dest net)
nat (inside) 0 acces-lst NONAT
static (dmz,outside) 62.105.149.237 192.168.253.10
static (dmz,inside) 192.168.253.10 192.168.253.10
Принцип работы практически соответствует логике IF>Then. Для более детально понимая следует рассмотреть все по порядку. Предположим, что NAT-пакет отправился в сторону интернет.
nat (inside) 1 192.168.2.0 255.255.255.0
Если трафик проходит через интерфейс inside, то он будет соответствовать процессу NAT с id 1.
После этого ASA осуществляет Routing Desision. В результате этого действия пакеты будут выходить посредством интерфейса outside:
global (outside) 1 62.105.149.230 - 62.105.149.235
Если НАТ равен номеру один, а трафик выходит посредством интерфейса outside, то source address этого пакета будет заменен на внешние адреса из пула 62.105.149.230 - 62.105.149.235. В таком случае мы имеем дело с Dynamic NAT. global (outside) 1 62.105.149.236
Эта директива практически ничем не отличается от предыдущей. Единственным исключением является использование PAT. Это означает, что все внутренние адреса натятся в белый IP-адрес – 192.168.1.101. В данном случае не осталось свободных Dynamic NAT адресов. Следовательно, осуществляется активация PAT.
global (dmz) 1 interface
Эта команда выполнит PAT в то случае, если NAT равен номеру 1, а трафик выходит из интерфейса DMZ.
Подводя итог, можно заметить, что для каждой зоны интерфейса следует указать свой PAT или NAT. Для больших сетей эта задача может стать чрезвычайно сложной, ведь в них функционируют десятки подобных интерфейсов. access-list NONAT permit ip (source net to dest net)
nat (inside) 0 acces-lst NONAT
Эта команда необходима для запрещения NAT. Ее чаще всего используют при построении туннеля site-to-site. В этой команде используется идентификатор «0». Это зарезервированный номер, сообщающий системе о том, что NAT с таким номер натить не будет.
static (dmz,outside) 62.105.149.237 192.168.253.10
Команда статической трансляции, заточенной лишь на один хост. Эта конструкция необходима для трансляции внутреннего адреса сервера на белый адрес.
static (dmz,inside) 192.168.253.10 192.168.253.10
Еще одна статическая трансляции, адрес которой не меняется. Такой NAT называется Identity NAT.
Новый формат представления
Новый NAT характеризуется лучшей организацией. За счет этого он легче воспринимается и понятен на интуитивном уровне. Как и в старой версии используется 2 типа NAT: Static и Dynamic.
В первом случае NAT функционирует в обе стороны. Учитывая это, трафик может быть инициирован и снаружи, и изнутри. Трансляция осуществляется 1 к 1. Чаще всего Static нат применяется для публкикации внутреннего сервера наружу:
object network inside_server_real
host 192.168.253.10
nat (inside,outside) static 62.105.149.237
Альтернативный вариант:
object network inside_server_global
host 62.105.149.237
object network inside_server_real
host 192.168.253.10
nat (inside,outside) static inside_server_global
Что касается Dynamic нат, то он функционирует исключительно наружу. Другими словами, трафик инициируется лишь изнутри наружу. Особенностью динамического ната является тот факт, что внутренние адреса транслируются лишь на один внешний. Данный тип часто называют Hide NAT.
Трансляция ведется на адрес, висящий на интерфейсе outside:
object network inside_lan_1
subnet 192.168.2.0 255.255.255.0
nat (inside,outside) dynamic interface
Аналогично:
object network lan_pat_global
host 62.105.149.238
object network inside_lan_1
subnet 192.168.2.0 255.255.255.0
nat (inside,outside) dynamic lan_pat_global
В приведенных примерах четко видно, что NAT привязывается к внутреннему хосту или объектам сети. Такой подход особенно актуален при использовании несложных конфигураций, в который необходимо организовать качественный доступ пользователей в интернет.
В целом NAT реализуется в 2-х типах:
- Network object NAT или Auto NAT;
- Twice NAT / Manual NAT.
Cisco рекомендует использовать выше описанный Network object NAT. Его главным преимуществом является простота и доступность. Twice NAT актуален лишь в сложных случаях, которые требуют использования больших возможностей.
Задача 1
Давайте настроим трансляцию клиентской сети 192.168.2.0/24 на интерфейсы outside и dmz. При этом трансляцию сделаем как Dynamic NAT на пул внешних адресов: 62.105.149.230 - 62.105.149.235 Здесь мы воспользуемся типом Network object NAT(Auto NAT).
Configuration > Firewall > NAT Rules
Выбираем Add Network Object NAT rule
CLI
object network inside_2
subnet 192.168.2.0 255.255.255.0
object network outside_pool
range 62.105.149.230 62.105.149.235
object network inside_2
nat (any,any) dynamic outside_pool
В этом случае NAT привязан к Network Object. Проще говоря, нат привязан к внутренней сети.
Осуществляем проверку.
asa1# show running-config object
object network inside_2
subnet 192.168.2.0 255.255.255.0
object network outside_pool
range 62.105.149.230 62.105.149.235
asa1#
asa1# show running-config nat
!
object network inside_2
nat (any,any) dynamic outside_pool
asa1#
asa1#
asa1# show nat
Auto NAT Policies (Section 2)
1 (any) to (any) source dynamic inside_2 outside_pool
translate_hits = 10, untranslate_hits = 2
Стоит сделать акцент на Section 2. В терминологии Adaptive Security Appliance существует 3 типа NAT:
- Twice (very granular);
- Auto;
- Twice (after auto NAT).
В данной задаче мы выполнили AUTO нат. Именно поэтому и используется Section 2.
asa1# show xlate
3 in use, 255 most used
Flags: D - DNS, i - dynamic, r - portmap, s - static, I - identity, T - twice
NAT from any:192.168.2.249 to any:62.105.149.233 flags i idle 0:15:28 timeout 3:00:00
NAT from any:192.168.2.249 to any:62.105.149.234 flags i idle 0:25:05 timeout 3:00:00
Здесь виден флаг " что="" означает="" собственно="" мы="" и="" настроили.="" p="">
Еще вариант настройки нат:
object network inside_2
subnet 192.168.2.0 255.255.255.0
object network outside_pool
range 62.105.149.230 62.105.149.235
object network inside_2
nat (inside,any) dynamic outside_pool
здесь мы в лоб указали что внутренним интерфейсом является inside
Вариант реализации PAT:
object network inside_2
subnet 192.168.2.0 255.255.255.0
object network outside_address
host 62.105.149.236
object network inside_2
nat (inside,outside) dynamic outside_address
Twice NAT
Как говорилось выше, Twice NAT позволяет осуществлять реализацию сложных сценариев. В качестве примера можно рассмотреть такую задачу:
Требуется, чтобы при доступе от клиента 192.168.2.249 на внешний адрес 195.112.100.134 внутренние адреса маскировались под 62.105.149.240.
А при доступе на все остальные - под 62.105.149.236.
Для реализации данной задачи к имеющейся конфигурации необходимо добавить Twice NAT:
Configuration > Firewall > NAT Rules
object network inside_2
subnet 192.168.2.0 255.255.255.0
object network outside_address
host 62.105.149.236
object network outside_address2
host 62.105.149.240
object network specific_real_address
host 195.112.100.134
object network internal_client1
host 192.168.2.249
!
nat (inside,outside) source static internal_client1 outside_address2 destination static specific_real_address specific_real_address
!
object network inside_2
nat (inside,outside) dynamic outside_address
asa1# show nat
Manual NAT Policies (Section 1)
1 (inside) to (outside) source static internal_client1 outside_address2 destination static specific_real_address specific_real_address
translate_hits = 6, untranslate_hits = 0
Auto NAT Policies (Section 2)
1 (inside) to (outside) source dynamic inside_2 outside_address
translate_hits = 1130, untranslate_hits = 2
Исходя из полученного кода, политика нат теперь реализовывается сразу в двух секциях.
object network inside_2
subnet 192.168.2.0 255.255.255.0
object network outside_address
host 62.105.149.236
object network outside_address2
host 62.105.149.240
object network specific_real_address
host 195.112.100.134
object network internal_client1
host 192.168.2.249
!
object network inside_2
nat (inside,outside) dynamic outside_address
!
nat (inside,outside) after-auto source static internal_client1 outside_address2 destination static specific_real_address specific_real_address
asa1# show nat
Auto NAT Policies (Section 2)
1 (inside) to (outside) source dynamic inside_2 outside_address
translate_hits = 1142, untranslate_hits = 2
Manual NAT Policies (Section 3)
1 (inside) to (outside) source static internal_client1 outside_address2 destination static specific_real_address specific_real_address
translate_hits = 0, untranslate_hits = 0
Как видно из этого примера, секции 1 и 3 отличаются лишь расположением правил. А вот характер правил абсолютно одинаковый. Однако в такой конфигурации NAT не отработает. Это обусловлено тем, что запросы просто-напросто на дойдут до него. Используя Twice NAT, следует знать, что он позволяет менять не только Source, но и Destination Addresses. Такая возможность будет актуальна при конфликте IP-адресации.
Данную особенность можно детальнее рассмотреть на следующем примере:
Требуется, чтобы при доступе от клиента 192.168.2.249 на внешний адрес 9.9.9.9 внутренние адреса маскировались под 62.105.149.240, при этом а также destination address менялась на 195.112.100.134.
object network inside_2
subnet 192.168.2.0 255.255.255.0
object network outside_address
host 62.105.149.236
object network outside_address2
host 62.105.149.240
object network specific_real_address
host 195.112.100.134
object network internal_client1
host 192.168.2.249
object network real_address_9.9.9.9
host 9.9.9.9
!
nat (inside,outside) source static internal_client1 outside_address2 destination static real_address_9.9.9.9 specific_real_address
!
object network inside_2
nat (inside,outside) dynamic outside_address
asa1# show nat
Manual NAT Policies (Section 1)
1 (inside) to (outside) source static internal_client1 outside_address2 destination static real_address_9.9.9.9 specific_real_address
translate_hits = 12, untranslate_hits = 12
Auto NAT Policies (Section 2)
1 (inside) to (outside) source dynamic inside_2 outside_address
translate_hits = 1156, untranslate_hits = 2
Исходя из вышеуказанного кода, становится понятно, что Twice практически ничем не отличается от Manual. Единственным исключением является возможность смены Destination adresses.
Подробнее рассмотрим все строки:
nat (inside,outside) source static internal_client1 outside_address2 destination static real_address_9.9.9.9 specific_real_address
Inside local - это Real IP Address пользователя, как клиент выглядит изнутри, до трансляции. Здесь это internal_client1
Inside global – эта строка говорит о том, куда мапится пользовательский адрес. Таким образом пользователь выглядит снаружи, после трансляции. Здесь это outside_address2
Outside local - это адрес назначения клиента. Иначе говоря это то, как пользователь видит адрес изнутри, до трансляции. Здесь это real_address_9.9.9.9.
Outside global - это адрес назначения уже после завершения трансляции. Именно так он видится снаружи.
Публикация сервера address-to-address
Сервер можно публиковать с использованием Manual или Auto NAT. В следующем примере публикуется внутренний сервер 192.168.253.10 на внешний адрес:
object network ip_global1
host 62.105.149.237
object network dmz_server_real
host 192.168.253.10
nat (dmz,any) static ip_global1
В такой конфигурации осуществляется трансляция address-to-address. Следовательно, сервер использует весь белый адрес. В результате этого происходят такие действия:
- Для доступа сервера наружу не требуется создание динамического правила. Сервер может выйти наружу при использовании статического правила.
- Трансляция address-to-address не позволяет в дальнейшем использовать белый адрес для публикации иного внутреннего сервера.
Поэтому трансляцию address-to-address следует выполнять только в том случае, если есть большое количество белых IP.
Альтернативный вариант –применение Static Port Address Translation (Port Redirection).
Также нужно добавить access-list для доступа к серверу извне:
object network dmz_server_real
host 192.168.253.10
access-list outside_access_in extended permit tcp any object dmz_server_real eq www
access-group outside_access_in in interface outside
Публикование Сервера Static Port Address Translation
interface Ethernet0/0
nameif outside
security-level 0
ip address 46.28.95.136 255.255.255.240
!
interface Ethernet0/2
nameif dmzsecurity-level 50
ip address 172.16.100.185 255.255.255.248
!
interface Ethernet0/3
nameif inside
security-level 100
ip address 192.168.2.7 255.255.255.0
object network inside_subnet
subnet 192.168.2.0 255.255.255.0
object network ip_global1
host 46.28.95.139
object network inside_server_real_ftp
host 192.168.2.12
object network dmz_server_real_http
host 172.16.100.187
object network dmz_server_real_tftp
host 172.16.100.187
object network inside_subnet
nat (inside,outside) dynamic interface
object network inside_server_real_ftp
nat (inside,any) static ip_global1 service tcp ftp ftp
object network dmz_server_real_http
nat (dmz,any) static ip_global1 service tcp www www
object network dmz_server_real_tftp
nat (dmz,any) static ip_global1 service udp tftp tftp
Для демонстрации работы нового NAT приведем такой пример:
В приведенном примере применяется лишь NAT для доступа наружу и для публикования сервера DMZ.
object network inside_2
nat (inside,outside) dynamic outside_address
object network dmz_server1_http_local
nat (dmz,any) static dmz_server1_global service tcp www www
object network dmz_network
nat (dmz,outside) dynamic outside_address
object network inside_252
nat (inside2,outside) dynamic outside_address
Для взаимодействия внутренних сетей DMZ, insidem inside2 применяется ACL:
access-list outside_access_in extended permit tcp any object dmz_server1_http_local eq www
access-list outside_access_in extended permit tcp any object dmz_server1_http_local eq ftp
access-list dmz_access_in extended permit ip any host 192.168.2.49
access-list dmz_access_in extended permit icmp any host 192.168.2.49
access-list dmz_access_in extended permit tcp any host 192.168.2.12 eq ftp
access-list dmz_access_in extended deny ip any object-group private_networks
access-list dmz_access_in extended permit ip any any
access-list inside2_access_in extended permit ip any any
!
access-group outside_access_in in interface outside
access-group dmz_access_in in interface dmz
access-group inside2_access_in in interface inside2
В такой конфигурации:
- inside имеет доступ везде, по правилам и по умолчанию.
- inside2 имеет доступ везде, так как выставлен ACL permit ip any any
- dmz имеет доступ на внутренний 192.168.2.49 по всем портам и на 192.168.2.12 по ftp.
- ouside разрешен только внутренний сервер по http и ftp.
Рекомендации
Используя NAT понадобятся такие команды:
- show running-config object
- show running-config nat
- show nat
- show running-config access-list
- show access-list
- show running-config access-group
Для более удобного применения можно именовать "object" или "object-group" используя CAPS.
Как говорилось выше, в Adaptive Security Appliance существует 3 секции, предназначенные для размещения правил NAT. Они обрабатываются в таком порядке:
- Section 1 - Twice NAT / Manual NAT
- Section 2 - Network Object NAT
- Section 3 - Twice NAT / Manual NAT
Существуют такие рекомендации по размещению правил.
- Размещение дефолтных Networks Dynamic Rules лучше всего осуществлять в третьей секции.
- PAT для сетей считаются наиболее широкими правилами. Для предотвращения конфликтов, их следует обрабатывать в последнюю очередь – в третьей секции.
- Размещение Default Static Rules for Single Hosts стоит осуществлять в Section 2.
Сюда можно отнести правила публикации внутренних серверов. Данные правила считаются наиболее специфичными.
Размещение Special Dynamic/Static NAT Rules for Networks and Single Hosts обычно осуществляется в первом секции.
Здесь принято размещать самые специфичные правила. В качстве примера можно привести Identity NAT (NAT0). В эту же секцию следует поместить Twice NAT / Manual NAT с параметры source и destination.
В результате проведенных операций:
Section 1
NAT0 / NAT Exemption
Policy PAT / NAT / NAT+PAT (функционал второй секции, требующий перекрытия)
Non-standard NAT configurations
Section 2
Static NAT
Static PAT (Port Forward)
Section 3
Default PAT / NAT / NAT+PAT
Policy PAT / NAT / NAT+PAT (for users)
Публикация Сервера Static Port Address Translation (Best practices)
interface Ethernet0/0
nameif outside
security-level 0
ip address 46.28.95.136 255.255.255.240
!
interface Ethernet0/2
nameif dmz
security-level 50
ip address 172.16.100.185 255.255.255.248
!
interface Ethernet0/3
nameif inside
security-level 100
ip address 192.168.2.7 255.255.255.0
object network INSIDE_SUBNET
subnet 192.168.2.0 255.255.255.0
object network IP_GLOBAL1
host 46.28.95.139
object network INSIDE_SERVER_REAL_FTP
host 192.168.2.12
object network DMZ_SERVER_REAL_HTTP
host 172.16.100.187
object network DMZ_SERVER_REAL_TFTP
host 172.16.100.187
object network DMZ_SUBNET
subnet 172.16.100.184 255.255.255.248
object network DMZ_PAT
host 46.28.95.139
object network INSIDE_SERVER_REAL_FTP
nat (inside,any) static IP_GLOBAL1 service tcp ftp ftp
object network DMZ_SERVER_REAL_HTTP
nat (dmz,any) static IP_GLOBAL1 service tcp www www
object network DMZ_SERVER_REAL_TFTP
nat (dmz,any) static IP_GLOBAL1 service udp tftp tftp
!
nat (dmz,outside) after-auto source dynamic DMZ_SUBNET DMZ_PAT
nat (inside,outside) after-auto source dynamic INSIDE_SUBNET interface