Архив метки: dmz

Организация DMZ-подсети на cisco ASA 5510 или как мы переходили на Cisco ASA — часть 4

Приоритезацию трафика для voip и skype сделали, наступил следующий этап подготовки к переходу — организация DMZ-подсети. Сама по себе организация DMZ-подсети ничего сложного из себя не представляет: отдельный порт для отдельной физической сети с отдельной адресацией. Естественно, доступа из подсети DMZ в основную подсеть быть не должно, доступ же из основной сети в подсеть DMZ должен быть без ограничений. Еще несколько условий для нашей реализации DMZ:

  1. Не все сервера из DMZ могут свободно ходить в интернет;
  2. Некоторые сервера могут ходить только по определенным адресам;
  3. Некоторые сервера должны иметь полный доступ в интернет;
  4. Скорость доступа в интернет для всех серверов должна быть ограничена;
  5. К некоторым сервисам в локальной сети все же должен быть доступ из DMZ;

Собственно, начнем с начала :) То есть с конфигурирования интерфейса:

interface Ethernet0/1
 nameif DMZ
 security-level 99
 ip address 192.168.15.1 255.255.255.0
 no shutdown

Security-level 99 как раз и отвечает за то, чтобы клиенты из DMZ, по умолчанию, не могли достучаться до локальной сети (она у нас имеет security-level 100). Клиенты из локальной сети, при такой настройке, будут иметь доступ к ресурсам DMZ.

Интерфейс сконфигурирован, пора прописывать правила доступа. Для облегчения восприятия, назовем access-list FROMDMZ — очевидно, что действовать он будет на пакеты исходящие из сети DMZ. Несмотря на запрет доступа из сети с меньшим security-level в сеть с бОльшим, лучше после разрешений доступа в локальную сеть к определенным сервисам, указать явный запрет на весь трафик из DMZ в локальную сеть.

Напомню, что Cisco ASA обрабатывает списки доступа (access-list) до первого совпадения. Таким образом, разрешение в начале списка подействует раньше, чем запрет на весь трафик в конце списка.

Итак, разрешим доступ всей подсети DMZ к почтовым серверам и DNS-серверам во всей локальной сети:

access-list FROMDMZ extended permit tcp 192.168.15.0 255.255.255.0 192.168.0.0 255.255.248.0 eq smtp
access-list FROMDMZ extended permit udp 192.168.15.0 255.255.255.0 192.168.0.0 255.255.248.0 eq domain

Далее запретим весь остальной трафик из DMZ в локальную сеть:

access-list FROMDMZ extended deny ip 192.168.25.0 255.255.255.0 192.168.8.0 255.255.248.0

Разрешим доступ к внешним DNS-серверам:

access-list FROMDMZ extended permit udp any host 8.8.8.8 eq domain
access-list FROMDMZ extended permit udp any host 8.8.4.4 eq domain

Создадим object-group для серверов, которым необходим доступ в интернет без ограничений по адресам:

object-group network DMZ-TO-INTERNET
 network-object host 192.168.15.3
 network-object host 192.168.15.5
 network-object host 192.168.15.8

Чаще всего для разрешения доступа к чему-либо более чем для одного клиента удобнее использовать object-group. В списках доступа важен порядок следования правил и правило с конкретным object-group будет всегда на одном и том же месте. Добавление же новых правил в конкретное место — более сложная операция.

Разрешим им доступ:

access-list FROMDMZ extended permit tcp object-group DMZ-TO-INTERNET any
 access-list FROMDMZ extended permit udp object-group DMZ-TO-INTERNET any

Далее можно разрешать доступ к конкретным внешним IP-адресам и в конце добавить запрет для остального трафика.

access-list FROMDMZ extended permit ip host 192.168.15.23 host 1.2.3.4
 access-list FROMDMZ extended deny ip any any

Учитывая то, что на нашей Cisco ASA настроен костыль, похожий на PBR (см. часть 1), нам придется заставить железяку выбирать интерфейс для трафика из локальной сети в DMZ, иначе весь трафик, адресованный на порты 80, 443, 8080 и др. будет уходить не на тот интерфейс. Для этого достаточно добавить правило:

static (DMZ,LOCAL) 192.168.15.0 192.168.15.0 netmask 255.255.255.0

При рестарте устройства, который в идеале вообще не произойдет никогда, это правило может загрузиться раньше остальных и тогда трафик опять пойдет «не туда». К сожалению, ASA не сохраняет порядок следования правил static. В таком случае это правило надо удалить и добавить заново:

no static (DMZ,LOCAL) 192.168.15.0 192.168.15.0 netmask 255.255.255.0
static (DMZ,LOCAL) 192.168.15.0 192.168.15.0 netmask 255.255.255.0

Костыль, но с этим надо как-то жить… На этой позитивной ноте, переходим к ограничению скорости. Создадим object-group и access-list:

object-group network DMZ-LIMIT
network-object host 192.168.15.3
network-object host 192.168.15.5
network-object host 192.168.15.9
access-list DMZ-LIMIT extended deny ip object-group DMZ-LIMIT 192.168.0.0 255.255.248.0
access-list DMZ-LIMIT extended deny ip  192.168.0.0 255.255.248.0 object-group DMZ-LIMIT
access-list DMZ-LIMIT extended permit ip object-group DMZ-LIMIT any
access-list DMZ-LIMIT extended permit ip any  object-group DMZ-LIMIT

Певые две строчки access-list нужны для исключения трафика в локальную сеть и из нее из будущего ограничения скорости: нам надо ограничивать только скорость доступа в интернет

Создаем class-map и policy-map.

class-map DMZ-LIMIT
 match access-list DMZ-LIMIT
policy-map DMZ-LIMIT
 class DMZ-LIMIT
  police output 4000000 10000

И, наконец, применим все к интерфейсу.

access-group FROMDMZ in interface DMZ
service-policy DMZ-LIMIT interface DMZ