null

Разграничение доступа к port forwarding на Cisco 2811

На самом деле, название статьи некорректно подобрано в терминах Cisco. Правильнее было бы написать что-то вроде "Access control during PAT on Cisco routers".
Иногда возникает типовая задача: ограничить доступ к проброшенному наружу порту для некоторых узлов. То есть либо разрешить, либо запретить доступ к внутреннему хосту для множества внешних хостов.
На первый взгляд, задача простейшая. И действительно -- довольно просто решается вешанием ACL на входящий трафик.
Но в реальных системах она может осложниться двумя вещами:
1. Когда конфигурация маршрутизатора уже есть, уже крутится в продакшне и довольно большая. Например, такое можно увидеть на Edge/Border Router и не хочется "случайно" что-то сломать.
2. Когда ограничивать нужно конкретные трансляции с учётом портов. Конечно, часть этих проблем можно решить с помощью Extended ACL, но не все.

Итак, рассмотрим как же выглядит привычный "проброс портов". Но для начала, определимся с адресами.
10.0.0.2 -- адрес внутреннего хоста, сервис которого мы хотим выставить наружу.
188.1.1.1 -- наш внешний адрес, на который, соответственно, приходят клиенты.
9443 -- выставляемый наружу порт. Для упрощения, в этой статье я его менять не буду, пускай всегда будет таким.
Если интересно, почему именно такой -- нужно было выставить морду VCenter (только не подумайте, что я люблю ESXi; уважаю лишь xen).
213.0.0.0/8 -- мои домашние IP адреса, которым мы и разрешим эксклюзивный доступ к VCenter. Остальным хостам, соотственно, запретим.

Тогда редирект/rdr/snat/называйтекакхотите выглядит так:

ip nat inside source static tcp 10.0.0.2 9443 188.1.1.1 9443 extendable


Модифицировать это правило, чтобы научить его следить за клиентами легко.
Сначала я приведу конечную конфигурацию, а уже потом объясню принципы её работы.

ip access-list extended KORG
 permit ip any host 213.1.1.1
 permit ip any host 213.2.2.2
 permit ip any host 213.3.3.3
 permit ip any host 213.4.4.4
!
route-map RM-KORG permit 20
 match ip address KORG
!
ip nat inside source static tcp 10.0.0.2 9443 188.1.1.1 9443 route-map RM-KORG reversible extendable


Собственно, сначала мы создаём список доступа, который будет отвечать за трансляцию потоков от внутреннего хоста (в данном примере - any) к четырём моим адресам.
Обращаю внимание, что мы разрешаем трансляцию "в обратную сторону", поэтому значимые адреса указаны в качестве destination.
Далее, создаём route-map. Если кто не знает, это такой объект, который может использоваться в динамическом выборе маршрута в зависимости от каких-либо параметров.
В терминах Cisco, route-map имеет Match и Set секции. С помощью последней можно, например, установить адрес узла, через который будем отправлять пакеты -- ip next-hop.
В нашем случае, route-map используется только для сравнения IP адресов.
На всякий случай, поясню ещё, что такое RM-KORG permit 20.
RM-KORG -- идентификатор (имя) конкретной route-map.
permit -- действие, которое выполняется, если пакеты, проходящие эту route-map, ей соответствуют (то есть, выполняется Match). Другими словами, считать ли Matched пакеты удовлетворяющими/соответствующими route-map.
20 -- номер правил в цепочке route-map. Если пакеты не попали под цепочки с меньшими номерами, они будут проверяться с большими.
Например:

route-map RM-KORG deny 10
 match ip address VALIK
route-map RM-KORG permit 20
 match ip address KORG
route-map RM_KORG permit 30
 match ip address ALL


Это запретит соответствие для IP VALIK, разрешит соответствие для IP KORG и запретит для всех остальных адресов, т.к. к этой route-map больше ничего не относится (третья route-map имеет другое имя).

И, наконец, само правило трансляции.
Мы его дополняем указанием созданной route-map, чтобы роутер не забывал проверять пакеты на соответствие ей, и указываем магическое слово reversible, чтобы route-map проверялась для пакетов, имеющих направление out->in, а не наоборот, как это по умолчанию.
На этом настройка закончена, доступ к сервису "за NAT" получат только хосты, указанные в ACL KORG.

И напоследок, предвосхищая возникшие у попавших сюда людей вопросы, вспомню одну фразу: "Выходов всегда много. Но через рот -- не все".

korg

 

Коротко о себе

Работаю в компании Tune-IT, администрирую инфраструктуру компании и вычислительную сеть кафедры Вычислительной ТехникиСПбНИУ ИТМО.

Интересы: администрирование UNIX и UNIX-like систем и активного сетевого оборудования, написание shell- и perl-скриптов, изучение технологий глобальных сетей.
Люблю собирать GNU/Linux и FreeBSD, использовать тайлинговые оконные менеджеры и писать системный софт.

Ничего не найдено. n is 0