В документации к этому продукту мы стремимся использовать непредвзятый язык. В целях данного комплекта документации под термином «непредвзятый» понимается язык, который не подразумевает дискриминацию по возрасту, нетрудоспособности, полу, расовой принадлежности, национальной принадлежности, сексуальной ориентации, социально-экономическому статусу и интерсекциональности. Исключения могут присутствовать в документации из-за языка, который жестко запрограммирован в интерфейсе программного обеспечения продукта, языка, используемого на основе документации RFP, или языка стороннего продукта, на который ссылается данный документ. Узнайте больше о том, как Cisco использует инклюзивный язык.
Этот документ был переведен Cisco с помощью машинного перевода, при ограниченном участии переводчика, чтобы сделать материалы и ресурсы поддержки доступными пользователям на их родном языке. Обратите внимание: даже лучший машинный перевод не может быть настолько точным и правильным, как перевод, выполненный профессиональным переводчиком. Компания Cisco Systems, Inc. не несет ответственности за точность этих переводов и рекомендует обращаться к английской версии документа (ссылка предоставлена) для уточнения.
Этот документ содержит простой пример настройки трансляции сетевых адресов (NAT) и списков контроля доступа (ACL) на межсетевом экране ASA для разрешения исходящих, а также входящих подключений. В этом документе описывается межсетевой экран с устройством адаптивной защиты (ASA) 5510, на котором работает версия кода ASA 9.1(1), но его можно легко применить к любой другой платформе межсетевого экрана ASA. Если используется платформа вроде ASA 5505, где используется VLAN вместо физического интерфейса, то необходимо соответствующим образом изменить типы интерфейсов.
Для этого документа отсутствуют особые требования.
Содержащееся в этом документе описание построено на примере межсетевого экрана ASA 5510, на котором работает код ASA версии 9.1(1).
Сведения, представленные в этом документе, были получены от устройств, работающих в специальной лабораторной среде. Все устройства, описанные в этом документе, были запущены с чистой (стандартной) конфигурацией. В рабочей сети необходимо изучить потенциальное воздействие всех команд до их использования.
В конфигурации данного примера можно рассмотреть, какая конфигурация NAT и ACL будет необходима для того, чтобы разрешить входящий доступ веб-серверу в DMZ межсетевого экрана ASA, а также разрешить исходящее подключение с внутренних хостов и хостов DMZ. Это можно свести к двум целям:
Прежде чем перейти к шагам, которые необходимо выполнить для достижения этих двух целей, в этом документе приводится краткий обзор способов работы списков ACL и NAT на более новых версиях кода ASA (версия 8.3 и более поздние).
Списки контроля доступа (сокращенно «списки доступа» или ACL) являются методом, которым межсетевой экран ASA определяет, является ли трафик разрешенным или запрещенным. По умолчанию трафик, который проходит от более низкого к более высокому уровню безопасности, запрещен. Это можно переопределить в ACL, примененном к соответствующему интерфейсу безопасности нижнего уровня. Также ASA по умолчанию разрешает трафик от интерфейсов с более высоким к интерфейсам с более низким уровнем безопасности. Это поведение можно также переопределить в ACL.
В более ранних версиях кода ASA (8.2 и ранее) ASA сравнивал входящее подключение или пакет со списком ACL на интерфейсе, не отменяя сначала трансляцию пакета. Другими словами, ACL должен был разрешить пакет, как если бы требовалось перехватить этот пакет на интерфейсе. В коде версии 8.3 и более поздних версий ASA не преобразовывает пакет до проверки списков ACL интерфейса. Это означает, что для кода версии 8.3 и более поздних версий, как и в этом документе, разрешается трафик на реальный IP-адрес хоста, а не транслированный.
См. раздел Настройка правил доступа документа Книга 2: Руководство по настройке интерфейса командой строки межсетевого экрана Cisco серии ASA, 9.1 содержит дополнительную информацию о списках ACL.
NAT на ASA в версии 8.3 и более поздних разделяется на два типа, известные как автоматическая NAT (Object NAT) и ручная NAT (Twice NAT). Первая из них, Object NAT, настраивается в определении сетевого объекта. Пример этого представлен далее в этом документе. Одно основное преимущество этого метода NAT состоит в том, что ASA автоматически упорядочивает правила для обработки, во избежание конфликтов. Это самая простая форма NAT, но с ней связано ограничение на глубину детализации конфигурации. Например, нельзя принять решение о трансляции на основе назначения в пакете, как можно сделать с помощью второго типа NAT — ручной NAT. Ручная NAT обеспечивает более глубокую детализацию, но требует настройки линий в правильном порядке, чтобы можно было добиться правильной работы. Это делает данный тип NAT сложнее, из-за чего он не будет использоваться в этом примере конфигурации.
См. раздел Информация о NAT документа Книга 2: Руководство по настройке интерфейса командой строки межсетевого экрана Cisco серии ASA, 9.1 для получения дополнительной информации о NAT.
Базовая конфигурация ASA — это три интерфейса, связанных с тремя сегментами сети. Сегмент сети ISP подключен к интерфейсу Ethernet0/0 и маркирован outside с уровнем безопасности 0. Внутренняя сеть подключена к Ethernet0/1 и маркирована как inside с уровнем безопасности 100. Сегмент DMZ, где располагается веб-сервер, подключен к Ethernet0/2 и маркирован как DMZ с уровнем безопасности 50.
Конфигурация интерфейса и IP-адреса для примера показаны здесь:
interface Ethernet0/0
nameif outside
security-level 0
ip address 198.51.100.100 255.255.255.0
!
interface Ethernet0/1
nameif inside
security-level 100
ip address 192.168.0.1 255.255.255.0
!
interface Ethernet0/2
nameif dmz
security-level 50
ip address 192.168.1.1 255.255.255.0
!
route outside 0.0.0.0 0.0.0.0 198.51.100.1
Здесь можно видеть, что интерфейс ASA inside установлен с IP-адресом 192.168.0.1, и это шлюз по умолчанию для внутренних хостов. Интерфейс ASA inside настроен с IP-адресом, полученным от интернет-провайдера. Установлен маршрут по умолчанию, который задает следующий переход на шлюз интернет-провайдера. При использовании DHCP это выполняется автоматически. Интерфейс DMZ настроен с IP-адресом 192.168.1.1, и это шлюз по умолчанию для хостов на сегменте сети DMZ.
Вот наглядная схема прокладки кабелей и конфигурации:
В этом примере используется Object NAT, называемая также AutoNAT. Первое, что необходимо настроить, — правила NAT, разрешающие хостам в сегментах inside и DMZ подключаться к Интернету. Поскольку эти хосты используют частные IP-адреса, необходимо преобразовать их в такие адреса, которые маршрутизируются в Интернете. В данном случае преобразуйте адреса так, чтобы они были похожи на IP-адрес интерфейса ASA outside. Если ваш внешний IP часто изменяется (возможно, из-за DHCP), то это самый прямой способ настройки.
Для настройки такой NAT необходимо создать сетевой объект, представляющий подсеть inside, а также объект, представляющий подсеть DMZ. В каждом из этих объектов настройте правило динамического преобразования сетевых адресов, которое будет выполнять трансляцию адресов портов (PAT) этих клиентов, поскольку они проходят от соответствующих интерфейсов к интерфейсу outside.
Эта конфигурация выглядит примерно так:
object network inside-subnet
subnet 192.168.0.0 255.255.255.0
nat (inside,outside) dynamic interface
!
object network dmz-subnet
subnet 192.168.1.0 255.255.255.0
nat (dmz,outside) dynamic interface
При рассмотрении рабочей конфигурации на этом этапе (с выводом команды show run) будет видно, что определение объекта разделено на две части выходных данных. Первая часть только указывает на то, что находится в объекте (хост/подсеть, IP-адрес и т. д.), в то время как второй раздел показывает, что правило NAT связало с этим объектом. Если взять первую запись из предыдущих выходных данных, произойдет следующее:
Когда хосты, которые соответствуют подсети 192.168.0.0/24, проходят от интерфейса inside к интерфейсу outside, вам требуется динамично транслировать их в интерфейс outside.
Теперь, когда хосты на интерфейсах inside и DMZ могут выходить в Интернет, необходимо изменить конфигурацию так, чтобы пользователи в Интернете могли обращаться к нашему веб-серверу через порт TCP 80. В данном примере настройка состоит в том, чтобы пользователи Интернета могли подключаться к другому IP-адресу, предоставленному интернет-провайдером, — дополнительному IP-адресу, которым мы владеем. Для данного примера используйте адрес 198.51.100.101. С этой конфигурацией пользователи Интернета смогут получить доступ к веб-серверу DMZ путем обращения к адресу 198.51.100.101 через порт TCP 80. Используйте в этой задаче Object NAT, и ASA преобразует порт TCP 80 на веб-сервере (192.168.1.100) так, чтобы он выглядел подобно 198.51.100.101 на порту TCP 80 на интерфейсе outside. Как и в прошлый раз, определите объект и задайте правила трансляции для того объекта. Кроме того, определите второй объект для представления IP-адреса, в который будет транслироваться данный хост.
Эта конфигурация выглядит примерно так:
object network webserver-external-ip
host 198.51.100.101
!
object network webserver
host 192.168.1.100
nat (dmz,outside) static webserver-external-ip service tcp www www
Подытожим, что означает это правило NAT в данном примере:
Когда хост, который соответствует IP-адресу 192.168.1.100 на сегментах DMZ, устанавливает соединение, полученное от порта TCP 80 (www), и это соединение выходит через интерфейс outside, вам требуется преобразовать его в порт TCP 80 (www) на интерфейсе outside и преобразовать этот IP-адрес в 198.51.100.101.
Выражение «полученный от порта TCP 80 (www)» кажется немного странным, но веб-трафик предназначается для порта 80. Важно понять, что эти правила NAT являются двунаправленными по своей природе. В результате можно зеркально отразить формулировку для перефразирования этого предложения. Результат имеет намного больше смысла:
Когда хосты на интерфейсе outside устанавливают подключение к 198.51.100.101 на порту TCP 80 (www) назначения, вы преобразуете IP-адрес назначения в 192.168.1.100, а портом назначения будет TCP 80 (www), и отправите его во внешнюю среду из DMZ.
В такой формулировке это имеет больше смысла. Затем необходимо настроить списки ACL.
NAT настроена, уже недалеко осталось до завершения конфигурации. Помните, что списки ACL на ASA позволяют переопределить поведение системы безопасности по умолчанию, которое является следующим:
Таким образом, без добавления списков ACL в конфигурацию этот трафик в примере работает:
Однако следующий трафик будет запрещен:
Поскольку трафик от outside к DMZ запрещен ASA в текущей конфигурации, пользователи в Интернете не смогут получить доступ к веб-серверу, несмотря на конфигурацию NAT на шаге 2. Необходимо явно разрешить этот трафик. В коде версии 8.3 и более поздних необходимо использовать реальный IP-адрес хоста в ACL, а не преобразованный IP-адрес. Это означает, что конфигурации нужно разрешать трафик, предназначенный для адреса 192.168.1.100, а НЕ трафик, предназначенный для адреса 198.51.100.101 на порту 80. Для простоты объекты, определенные в шаге 2, будут также использоваться для этого ACL. Как только ACL создан, необходимо применить его к входящему трафику на внешнем интерфейсе.
Вот как выглядят команды настройки:
access-list outside_acl extended permit tcp any object webserver eq www
!
access-group outside_acl in interface outside
Состояния строк списка доступа:
Разрешить трафик от any (где) к хосту, представленному объектом webserver (192.168.1.100) на порту 80.
Важно, чтобы в конфигурации здесь использовалось ключевое слово any (любой). Поскольку IP-адрес источника клиентов неизвестен при его поступлении на ваш веб-сайт, укажите любое значение Any IP address (Любой IP-адрес).
Как насчет трафика от сегмента DMZ, предназначенного для хостов на сегменте сети inside? Например, сервер в сети inside, к которому требуется подключаться хостам из DMZ. Как ASA может разрешать только определенный трафик, предназначенный для сервера inside, и блокировать все остальное, предназначенное для сегмента inside из DMZ?
В данном примере предполагается, что существует сервер DNS во внутренней сети по IP-адресу 192.168.0.53, к которому хостам из DMZ требуется доступ для разрешения DNS. Вы создаете необходимый ACL и применяете его к интерфейсу DMZ таким образом, чтобы ASA мог переопределить поведение системы безопасности по умолчанию, упомянутое ранее, для трафика, который входит на этот интерфейс.
Вот как выглядят команды настройки:
object network dns-server
host 192.168.0.53
!
access-list dmz_acl extended permit udp any object dns-server eq domain
access-list dmz_acl extended deny ip any object inside-subnet
access-list dmz_acl extended permit ip any any
!
access-group dmz_acl in interface dmz
ACL сложнее, чем простое разрешение трафика к серверу DNS на порт UDP 53. Если бы мы реализовали только первую строку permit (разрешить), то весь трафик из DMZ к хостам в Интернете блокировалось бы. В конце списков ACL неявно задается настройка deny ip any any. В результате ваши хосты DMZ не могли бы выйти в Интернет. Даже при том, что трафик от DMZ к outside разрешен по умолчанию, с применением ACL к интерфейсу DMZ такое поведение системы безопасности по умолчанию для интерфейса DMZ больше не действует, и необходимо явно разрешить трафик в ACL интерфейса.
Теперь, когда конфигурация завершена, необходимо протестировать ее, чтобы удостовериться, что она работает. Самый простой способ — использовать действующие хосты (если это ваша сеть). Однако в интересах тестирования из интерфейса командной строки и дальнейшего исследования некоторых программных средств ASA используйте трассировщик пакетов, чтобы протестировать и потенциально отладить любые возможные проблемы.
Трассировщик пакетов работает путем моделирования пакета на основе серии параметров и внедрения этого пакета в канал передачи данных интерфейс, подобно способу, которым внедрялся бы реальный пакет в случае снятия с канала. Этот пакет следует через большое число проверок и процессов, которые выполняются по мере его прохождения через межсетевой экран, и трассировщик пакетов фиксирует результат. Моделируйте внутренний хост, выходящий на хост в Интернете. Приведенная ниже команда сообщает межсетевому экрану сделать следующее:
Моделировать пакет TCP, поступающий в интерфейс inside с IP-адреса 192.168.0.125 на порту источника 12345 и предназначенный для IP-адреса 203.0.113.1 на порту 80.
ciscoasa# packet-tracer input inside tcp 192.168.0.125 12345 203.0.113.1 80
Phase: 1
Type: ACCESS-LIST
Subtype:
Result: ALLOW
Config:
Implicit Rule
Additional Information:
MAC Access list
Phase: 2
Type: ROUTE-LOOKUP
Subtype: input
Result: ALLOW
Config: Additional Information:
in 0.0.0.0 0.0.0.0 outside Phase: 3
Type: NAT
Subtype:
Result: ALLOW
Config:
object network inside-subnet
nat (inside,outside) dynamic interface
Additional Information:
Dynamic translate 192.168.0.125/12345 to 198.51.100.100/12345
Phase: 4
Type: NAT
Subtype: per-session
Result: ALLOW
Config:
Additional Information:
Phase: 5
Type: IP-OPTIONS
Subtype:
Result: ALLOW
Config:
Additional Information:
Phase: 6
Type: NAT
Subtype: per-session
Result: ALLOW
Config:
Additional Information:
Phase: 7
Type: IP-OPTIONS
Subtype:
Result: ALLOW
Config:
Additional Information:
Phase: 8
Type: FLOW-CREATION
Subtype:
Result: ALLOW
Config:
Additional Information:
New flow created with id 1, packet dispatched to next module
Result:
input-interface: inside
input-status: up
input-line-status: up
output-interface: outside
output-status: up
output-line-status: up
Action: allow
Конечным результатом является то, что трафик разрешается, то есть он прошел все проверки NAT и ACL в конфигурации и был отправлен из исходящего интерфейса — outside. Обратите внимание на то, что пакет был преобразован в фазе 3 и подробные сведения об этой фазе показывают, какое правило задействовано. Хост 192.168.0.125 динамически преобразуется в 198.51.100.100 согласно конфигурации.
Теперь запустите ее для подключения из Интернета к веб-серверу. Помните, хосты в Интернете обращаются к веб-серверу путем подключения к 198.51.100.101 на интерфейсе outside. Опять же, эта следующая команда преобразовывается в следующее:
Моделировать пакет TCP, поступающий в интерфейс outside с IP-адреса 192.0.2.123 на порту источника 12345 и предназначенный для IP-адреса 198.51.100.101 на порту 80.
ciscoasa# packet-tracer input outside tcp 192.0.2.123 12345 198.51.100.101 80
Phase: 1
Type: UN-NAT
Subtype: static
Result: ALLOW
Config:
object network webserver
nat (dmz,outside) static webserver-external-ip service tcp www www
Additional Information:
NAT divert to egress interface dmz
Untranslate 198.51.100.101/80 to 192.168.1.100/80
Phase: 2
Type: ACCESS-LIST
Subtype: log
Result: ALLOW
Config:
access-group outside_acl in interface outside
access-list outside_acl extended permit tcp any object webserver eq www
Additional Information:
Phase: 3
Type: NAT
Subtype: per-session
Result: ALLOW
Config:
Additional Information:
Phase: 4
Type: IP-OPTIONS
Subtype:
Result: ALLOW
Config:
Additional Information:
Phase: 5
Type: NAT
Subtype: rpf-check
Result: ALLOW
Config:
object network webserver
nat (dmz,outside) static webserver-external-ip service tcp www www
Additional Information:
Phase: 6
Type: NAT
Subtype: per-session
Result: ALLOW
Config:
Additional Information:
Phase: 7
Type: IP-OPTIONS
Subtype:
Result: ALLOW
Config:
Additional Information:
Phase: 8
Type: FLOW-CREATION
Subtype:
Result: ALLOW
Config:
Additional Information:
New flow created with id 3, packet dispatched to next module
Result:
input-interface: outside
input-status: up
input-line-status: up
output-interface: dmz
output-status: up
output-line-status: up
Action: allow
Опять же, результат состоит в том, что пакет разрешается. Проверки ACL пройдены, конфигурация выглядит хорошо, и пользователи в Интернете (outside) должны быть в состоянии обратиться к данному веб-серверу с помощью внешнего IP-адреса.
Процедуры проверки включены в Шаг 4. Тестирование конфигурации с функцией трассировщика пакетов.
Для этой конфигурации в настоящее время нет сведений об устранении проблем.
Настройка ASA для выполнения базовой NAT — не такая сложная задача. Приведенный в этом документе пример можно адаптировать к конкретному сценарию, если изменить IP-адреса и порты, используемые в примерах конфигурации. Окончательная конфигурация ASA при сочетании всего этого выглядит примерно так для ASA 5510:
ASA Version 9.1(1)
!
interface Ethernet0/0
nameif outside
security-level 0
ip address 198.51.100.100 255.255.255.0
!
interface Ethernet0/1
nameif inside
security-level 100
ip address 192.168.0.1 255.255.255.0
!
interface Ethernet0/2
nameif dmz
security-level 50
ip address 192.168.1.1 255.255.255.0
!
object network inside-subnet
subnet 192.168.0.0 255.255.255.0
object network dmz-subnet
subnet 192.168.1.0 255.255.255.0
object network webserver
host 192.168.1.100
object network webserver-external-ip
host 198.51.100.101
object network dns-server
host 192.168.0.53
!
access-list outside_acl extended permit tcp any object webserver eq www
access-list dmz_acl extended permit udp any object dns-server eq domain
access-list dmz_acl extended deny ip any object inside-subnet
access-list dmz_acl extended permit ip any any
!
object network inside-subnet
nat (inside,outside) dynamic interface
object network dmz-subnet
nat (dmz,outside) dynamic interface
object network webserver
nat (dmz,outside) static webserver-external-ip service tcp www www
access-group outside_acl in interface outside
access-group dmz_acl in interface dmz
!
route outside 0.0.0.0 0.0.0.0 198.51.100.1 1
На ASA 5505, например, с интерфейсами, подключенными, как показано ранее (outside подключен к Ethernet0/0, inside к Ethernet0/1, а DMZ к Ethernet0/2):
ASA Version 9.1(1)
!
interface Ethernet0/0
description Connected to Outside Segment
switchport access vlan 2
!
interface Ethernet0/1
description Connected to Inside Segment
switchport access vlan 1
!
interface Ethernet0/2
description Connected to DMZ Segment
switchport access vlan 3
!
interface Vlan2
nameif outside
security-level 0
ip address 198.51.100.100 255.255.255.0
!
interface Vlan1
nameif inside
security-level 100
ip address 192.168.0.1 255.255.255.0
!
interface Vlan3
nameif dmz
security-level 50
ip address 192.168.1.1 255.255.255.0
!
object network inside-subnet
subnet 192.168.0.0 255.255.255.0
object network dmz-subnet
subnet 192.168.1.0 255.255.255.0
object network webserver
host 192.168.1.100
object network webserver-external-ip
host 198.51.100.101
object network dns-server
host 192.168.0.53
!
access-list outside_acl extended permit tcp any object webserver eq www
access-list dmz_acl extended permit udp any object dns-server eq domain
access-list dmz_acl extended deny ip any object inside-subnet
access-list dmz_acl extended permit ip any any
!
object network inside-subnet
nat (inside,outside) dynamic interface
object network dmz-subnet
nat (dmz,outside) dynamic interface
object network webserver
nat (dmz,outside) static webserver-external-ip service tcp www www
access-group outside_acl in interface outside
access-group dmz_acl in interface dmz
!
route outside 0.0.0.0 0.0.0.0 198.51.100.1 1