Приоритезацию трафика для voip и skype сделали, наступил следующий этап подготовки к переходу — организация DMZ-подсети. Сама по себе организация DMZ-подсети ничего сложного из себя не представляет: отдельный порт для отдельной физической сети с отдельной адресацией. Естественно, доступа из подсети DMZ в основную подсеть быть не должно, доступ же из основной сети в подсеть DMZ должен быть без ограничений. Еще несколько условий для нашей реализации DMZ:
- Не все сервера из DMZ могут свободно ходить в интернет;
- Некоторые сервера могут ходить только по определенным адресам;
- Некоторые сервера должны иметь полный доступ в интернет;
- Скорость доступа в интернет для всех серверов должна быть ограничена;
- К некоторым сервисам в локальной сети все же должен быть доступ из 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 в локальную сеть.
Итак, разрешим доступ всей подсети 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
Разрешим им доступ:
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
Создаем 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