Как сделать проброс портов на cisco asa
В сети уже имеется установленная и настроенная ASA5505 с минимальной лицензией. Необходимо пробросить внешний порт, предположим 8081 на внутренний Web-сервер.
Так как до этого с ASA работал мало, воспользуемся советами из вот этого блога.
-
Исходные данные:
- Внешний интерфейс ASA(который смотрит в инет): outside
- Внешний порт, по которому будет доступ к Web-серверу:8081
- Внутренний интерфейс, к которому в том числе подключен Web-сервер: inside
- Внутренний порт на Webserverе: 80
- IP адрес Web-сервера: 172.16.4.4
Если вам необходимо открыть несколько портов, то вам придется либо прописывать несколько объектов, каждый со своим правилом NAT. Либо писать несколько правил NAT в глобальной конфигурации.
Cisco ASA: проброс портов
ограничивать доступ внешним пользователям к локальной сети;
ограничивать доступ локальной сети к внешним сетям.
Как разрешить доступ внутренним пользователям во внешние сети
Как разрешить доступ внешним пользователям во внутренние ресурсы
Заключение
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
В качестве интерфейса управления - я использую ASDM-IDM Launcher но по большому счету - все это вполне реально сделать в терминале Putty или др. Например мульти-строки я выполнял в CLI (Command Line Interface), который также доступен из ASDM.
Казалось-бы простая задача, но все же не без подводных камней.
Рабочий пример (аналогичного решения) выглядел так:
object network TS_Ext_3389
nat (inside,outside) static TS_Ext_3389_NAT_IP
object network TS_Ext_80_to_3389
nat (inside,outside) static TS_Ext_80_to_3389_NAT_IP
где TS_Ext_3389_NAT_IP = 192.168.1.1
а TS_Ext_80_to_3389_NAT_IP = 192.168.1.2
При этом хост один и тот-же. Ну я забил на это, подумав, что так значит надо было.
И подумал, что ничего не мешает использовать и один IP, на машине.
Начал добавлять в ASDM Public Service - а он ругается.
Оказалось:
Имея в наличии "ОДИН" статический NAT для этого интерфейса:
nat (inside,outside) static TS_NAT_IP
object network TS_Ext_3389
- добавить еще один NAT является невозможным (что вполне логично).
Как-же быть?
Решение.
Удаляем "существующие" NAT для интересующего нас объекта (в моем случае это всего ОДНО правило, которое осталось) Открываем CLI.
Я запускал поддержку Multiple Line (чтобы писать несколько строк и ASA это "проглатывала") и пишем следующее:
object network TS
nat (inside,outside) static TS_NAT_IP service tcp 3389 3389
Не упускаем из внимания access-list:
access-list outside_access extended permit object MS_RDP any4 object TS
access-list outside_access extended permit object MS_RDP any4 object TS_80_to_3389
В заключении.
Мысль в том, что если NAT уже существует, без конкретного указания портов (аля на "ВСЁ"), то индивидуально по портам уже ничего не добавить. Приходится оставлять лишь то, что необходимо. В данном примере это 2 порта: 3389 и 80 И если, скажем, у вас на сервере открыт 443 и крутится при этом какой-то сервис, то постучавшись на внешний адрес (приведенный в примере 195.173.27.16) вы не получите никакого ответа!
На этой странице описываются виды трансляции адресов, которые поддерживает Cisco ASA, их особенности, отличия, примеры настройки.
Начиная с версии 8.3 и выше, в ASA существенно изменился синтаксис написания правил NAT, а также правила написания ACL.
Содержание
- Правила ВНОСЯТСЯ в соответствующую секцию в порядке внесения ИЛИ в соотв. с указанным приоритетом (целое число).
- Правила ВЫПОЛНЯЮТСЯ в порядке расположения в show run - cверху вниз по всем секциям, до первого совпадения.
- Manual NAT - обычные команды nat в режиме глобальной конфигурации
- Auto NAT - команды nat в свойствах object-network
- Manual NAT после Auto - команды nat с параметром after-auto в режиме глобальной конфигурации
Пример синтаксиса в 8.2:
ASA поддерживает несколько типов правил трансляции адресов:
- Динамическая трансляция:
- Dynamic NAT — динамический NAT транслирует группу адресов с указанного интерфейса в пул адресов. При этом каждому хосту из внутренней сети будет выделяться полностью адрес из пула.
- PAT — динамическая трансляция портов транслирует группу адресов с указанного интерфейса в выделенный IP-адрес или IP-адрес интерфейса. Для каждого нового исходящего соединения IP-адрес отправителя транслируется в один и тот же IP-адрес, но с разными номерами портов.
- Static NAT — Статическая трансляция используется в том случае когда определенному узлу при установлении исходящего соединения присваивается заданный IP адрес.Например, для видимости WEB сервера, расположенного в DMZ из Интернет. Кроме того, этот метод используется для предоставления доступа к интерфейсом с более высоким уровнем безопасности от интерфейсов с менее высоким уровнем безопасности.
- Static PAT — (проброс портов)
- Identity NAT —
- NAT Exemption —
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.
В этом разделе описывается ситуация, когда входящий доступ в сеть возможен из-за создающихся динамических трансляций. Этот момент описан для того чтобы обратить внимание на потенциальную возможность такого использования динамической трансляции. Реально для входящих соединений динамические правила трансляции сложно использовать, так как надо знать какой IP-адрес динамически был назначен хосту.
Для того чтобы разрешить входящие соединения в сети за Cisco ASA, необходимо использовать статическую трансляцию или исключение из правил трансляции, которые описаны в соответствующих разделах.
Когда на Cisco ASA настроены правила динамической трансляции, то IP-адрес хоста, который инициирует исходящее соединение, транслируется в один из адресов пула. После этого, обращаясь из внешней сети на соответствующий адрес пула, можно попасть на реальный хост во внутренней сети. Для того чтобы избежать таких ситуаций, необходимо запретить соответствующий входящий трафик на внешнем интерфейсе.
Например, на ASA1 настроены такие правила трансляции:
После инициации соединения с inhost на outhost, появилась следующая трансляция:
На ASA1 настроен и применен к интерфейсу outside ACL ICMP, который разрешает любой ICMP-трафик:
До тех пор пока существует трансляция для хоста 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
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
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
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
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
Для примера приведен вывод 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
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-control). То есть, должно быть указано соответствующее правило global или настроена статическая трансляция.
Если с указанных адресов инициируется трафик на интерфейсы с большим уровнем безопасности, то правила трансляции не требуется. Если необходимо чтобы адреса транслировались и при доступе к интерфейсу с более высоким уровнем безопасности, то тогда необходимо настраивать Outside NAT.
Конфигурация интерфейсов ASA1:
Разрешено прохождение трафика между интерфейсами с одинаковыми уровнями безопасности:
До настройки правил трансляции:
Настроены такие правила:
После настройки правил трансляции:
Если задать правило global для интерфейса dmz2:
То с dmz1host будет доступен dmz2host:
После того как какая-то сеть указана в правиле nat с параметром outside, указанные адреса обязательно должны транслироваться при обращении на интерфейс с большим или одинаковым уровнем безопасности (независимо от того включен ли nat-control). То есть, должно быть указано соответствующее правило global или настроена статическая трансляция.
Если с указанных адресов инициируется трафик на интерфейсы с меньшим уровнем безопасности, то правила трансляции не требуется.
Конфигурация интерфейсов и настройки ACL на ASA1 остались такие же как в предыдущем разделе.
Правило nat (предыдущие настройки правил трансляции удалены):
После настройки правила nat с параметром outside:
После настройки правила global на интерфейсе dmz2:
С хоста dmz1host доступен хост dmz2host:
Policy NAT поддерживают все типы трансляции адресов, кроме NAT exemption. В ACL, которые применяются в NAT exemption, не могут указываться порты.
Policy Static NAT
В ACL для static policy NAT первый адрес -- это реальный IP-адрес, который будет транслироваться, а второй -- IP-адрес получателя или отправителя трафика (в зависимости от направления в котором передается трафик).
Хотя для identity NAT IP-адрес сохраняется и не транслируется, соединения с внешних сетей во внутренние не могут быть инициированы, даже если ACL разрешает их. Для того чтобы эти соединения проходили, необходимо использовать static identity NAT или NAT exemption.
При использовании identity NAT, IP-адреса, которые указаны в правиле nat 0, не будут транслироваться на любых интерфейсах. То есть, в identity NAT нельзя указать как в динамической трансляции, при прохождении через какие интерфейсы будет выполняться правило трансляции.
Static identity NAT позволяет указать при прохождении через какие интерфейсы будет выполняться правило трансляции.
Например, при прохождении через интерфейс dmz1, будет отрабатывать правило static identity NAT и адрес останется неизменным, а, при прохождении через интерфейс dmz2, адрес будет транслироваться.
Вместе со static identity NAT может использоваться policy NAT.
NAT exemption позволяет инициировать входящие и исходящие соединения.
Как и в правиле identity NAT, в NAT exemption не указываются интерфейсы через которые должен проходить трафик, чтобы правило сработало. Однако в NAT exemption используется ACL и с его помощью можно указать адреса отправителей и получателей.
Если есть силы бежать – кто поверит, что нет сил драться?!
Проброс портов на ASA 9.1(2) - Static PAT
Проброс портов на ASA 9.1(2) - Static PAT
Добрый день, тема совсем не новая, но походу без совета не разберусь.
Что имеем:
1) ASA 5512-x с 9.1 на борту, нас интересуют два интерфейса inside_old_local (192.168.0.35) и outside (193.211.40.x)
2) веб-сервер 192.168.0.8, слушающий 80-ый портЧто хотим:
Пробросить порт 8081 внешнего интерфейса ASA (193.211.40.x) на веб-сервер во внутренней сети (192.168.0. на порт 80, вроде классика, но вот с ASA - затык.
Что знаем:
1) Подрезанный конфиг -
2) Результат packet-tracer, которым я стучусь на внешний интерфейс ASA, по порту 80 (тут некоторый нюанс, я уже плюнул на 8081 и решил для простоты пробовать с 80 на 80 пробрасывать - это видно и по конфигу)
Вообщем, господа, нужен ваш хелп или советы где копать, ошибка наверняка глупая, но мешает сильно. Если не сложно - NAT тоже посмотрите, верно или нет, их в конфиге два (с портом 2323 - тестовый)
Дерни меня завтра в ПМ (а то могу забыть) гляну на работе как реализовано.
ЗЫ. на вскидку из того что помню, сначала прописывай в нате весь статик, и только после него динамик. Как показала практика, вся статика прописанная после динамик-а - не работает.Ну ацл не верная. Тут логика не как у iptables, который сначала делает NAT, а потом фильтрацию. Нужно так:
GhOsT_MZ писал(а): Ну ацл не верная. Тут логика не как у iptables, который сначала делает NAT, а потом фильтрацию. Нужно так:
КОД: ВЫДЕЛИТЬ ВСЁ
object network test1
host 193.211.40.xПлюс к этому, насчет самого НАТ, помнится делал с помощью static, и выглядело это так:
КОД: ВЫДЕЛИТЬ ВСЁ
static (dmz,outside) udp 1.1.1.3 tftp 172.20.9.10 tftp netmask 255.255.255.255rayder писал(а): Дерни меня завтра в ПМ (а то могу забыть) гляну на работе как реализовано.
ЗЫ. на вскидку из того что помню, сначала прописывай в нате весь статик, и только после него динамик. Как показала практика, вся статика прописанная после динамик-а - не работает.Интересная гипотеза - проверю обязательно)
Пока запустился так - рабочий вариант:
где
192.168.150.121 - Ip сервера на который нужно сделать проброс
193.211.40.X+1 - белый ip из пула, к которому принадлежит внешний интерфейс АСА
3389 - соответственно тестовый rdpУ меня так и не завелся вариант с interface, очень бы хотелось это выяснить, вряд ли всегда так будет везти (будут запасные белые ip) поэтому светлые идеи буду рад услышать
Читайте также: