Написать опус сподвигло полное отсутствие аналогов. То есть в сети присутствует множество тем и примеров, как надо строить сеть малого предприятия секьюрно, архитектурно правильно, чтобы присутствовала хорошая производительность и всё такое. НО! Все эти принципы никак не пересекаются в одном конфиге. То есть "Делаем NAT.." но без "VPN на Cisco", "Zone Based Firewall" но без VPN, NAT+VPN+ZBF но без Traffic Policing... Куча источников, куча материалов, куча конфигов - полный хаос. Причём, не спасает даже Cisco Validated Design. Чтобы решить этот вопрос хотя бы для себя, я и решил оформить всё это дело в блоге. Итак, каким требованиям должен отвечать мой конфиг:


  1. сеть разделена на несколько фрагметов

  2. фрагменты разделены между собой ZBF

  3. присутствует гостевая сеть для беспроводных точек доступа, контроль над которыми нам не принципиален (у секретаря генерального гости берут логин/пароль и пока ждут приема могут лазить по интернету)

  4. у гостевой сети скорость порезана traffic policing

  5. настроен Site-toSite VPN на другое предприятие (группу предприятий). Снаружи ZBF режет любые попытки подключения по VPN от любых других узлов, кроме доверенных.



Теперь стоит определиться с оборудованием, которое чаще всего закупается для реализации всех этих целей. Тут варианта два: ISR G2 и ASA. Так как Remote Access VPN нужен в минимальных рамках без NAC и сложной проверки Remote Client, а Site-to-Site VPN в будущем будет переделан в DMVPN, то я для себя вижу только один вариант - ISR G2. Тут вариаций много, но мне ближе модели, которые имеют возможность установки 48-портового свитча и обрабатки телефонии. Из простых это 2921/2951, из средних - 3925(E)/3945(E), из серьёзных - 4451-X. Единственное, чем они отличаются - это производительность. Для меня малый офис ассоциируется с моделью 2951, поэтому я буду описывать конфигурацию непосредственно для неё.


1. Настраиваем подключение к модулю свитча



В моём примере 24-портовый свитч установлен в платоместо 1


Cisco2951#sh inventory

NAME: "CISCO2951/K9", DESCR: "CISCO2951/K9 chassis, Hw Serial#: FCZ11223344, Hw Revision: 1.1"

PID: CISCO2951/K9      , VID: V05 , SN: FCZ11223344



NAME: "SM-ES2-24: EtherSwitch SM L2 + 23 10/100 + 1 10/100/1000 on Slot 1", DESCR: "SM-ES2-24: EtherSwitch SM L2 + 23 10/100 + 1 10/100/1000"

PID: SM-ES2-24         , VID: V02 , SN: FOC22334455



NAME: "C2921/C2951 AC Power Supply", DESCR: "C2921/C2951 AC Power Supply"

PID: PWR-2921-51-AC    , VID: V03 , SN: QCS33445566


Этот модуль подключается двумя портами: G0/26 - к основному шасси на порт G1/0 (используется для управления), G0/25 - к MGF на порт G1/1 (используется для передачи трафика). Не будем сильно заморачиваться и настроим следующим образом.


## Cisco 2951

!

interface GigabitEthernet1/0

 ip address 172.16.1.2 255.255.255.0

!

interface GigabitEthernet1/1

 description Internal switch interface connected to Service Module

 switchport mode trunk

 no ip address

!

## Cisco SM-ES2-24

!

interface GigabitEthernet0/25

 switchport mode trunk

!

interface GigabitEthernet0/26

!


К интегрированному свитчу можно подключиться по консоли и адрес 172.16.1.2 как раз используется для этого:


Cisco2951#service-module GigabitEthernet 1/0 session

Trying 172.16.1.2, 2067 ... Open





User Access Verification



Username: user

Password: password



SM-ES2-24>en

Password: password

SM-ES2-24#


Причем чтобы выйти обратно в консоль роутера надо использовать культовую комбинацию Ctrl+Shift+6 и затем X. У кого при этом переключается клава - сделайте два раза ;) К настройке свитча вернёмся чуть позже - сейчас важно отстроить логику.


2. Нарезаем фрагменты сети.



Первое, что нам необходимо сделать, это разделить трафик по функциональной нагрузке.


interface GigabitEthernet0/2

 description outside

 ip address 111.111.111.111 255.255.255.0

!

interface Vlan1

 description inside

 ip address 192.168.1.1 255.255.255.0

!

interface Vlan2

 description User_LAN

 ip address 192.168.2.1 255.255.255.0

!

interface Vlan3

 description Server_LAN

 ip address 192.168.3.1 255.255.255.0

!

interface Vlan4

 description DMZ

 ip address 192.168.4.1 255.255.255.0

!

interface Vlan5

 description Printers_LAN

 ip address 192.168.5.1 255.255.255.0

!

interface Vlan6

 description Telephony_LAN

 ip address 192.168.6.1 255.255.255.0

!

interface Vlan7

 description Guest_LAN

 ip address 192.168.7.1 255.255.255.0

!

interface Vlan8

 description iLO_LAN

 ip address 192.168.8.1 255.255.255.0

!

interface Vlan9

 description iSCSI_LAN

 ip address 192.168.9.1 255.255.255.0




Администраторы сети находятся в сети iLO_LAN, чтобы иметь прямой доступ к средствам управления. Если система хранения работает на FC, то сеть iSCSI_LAN не нужна. Тоже касается и DMZ_LAN. Гостевая сетка Guest_LAN используется для того, чтобы в неё запихнуть "неконтролируемую" точку доступа. 


3. Настройка NAT



Здесь более менее всё стандартно.


interface GigabitEthernet0/2

 description outside

 ip nat outside

!

interface Vlan3

 description Server_LAN

 ip nat inside

...


Настроим доступ в интернет. Допустим, пользователи ходят в него через прокси, который расположен в серверной сети. Напрямую пользователи попасть в интернет не могут.


ip access-list extended servers-traffic

 permit ip 192.168.3.0 0.0.0.255 any



ip nat inside source list servers-traffic interface GigabitEthernet0/2 overload


Это правило временное. После появления VPN надо будет делать исключения в NAT. По аналогии делается правило для гостевой сети. Больше никому доступ в интернет не должен понадобиться.


4. Zone-Based Firewall



Кардинальное отличие ZBF от CBAC в том, что первый по умолчанию блокирует, а второй - разрешает. То есть, разместив интерфейс в какой-либо зоне и не настроив никакого доступа - мы блокируем любой трафик. В случае CBAC, пока ACL не повешен на интерфейс - трафик свободно ходит.


zone security out-zone

zone security servers-zone

...

!

interface GigabitEthernet0/2

 description outside

 zone-member security out-zone

!        

interface Vlan3

 description Server_LAN

 zone-member security servers-zone

...


После того, как все интерфейсы помещены в свои зоны, можно прописывать zone-pair. Но для того, чтобы её прописать, надо сначала описать все компоненты, которые в ней используются.


class-map type inspect match-any cm-servers-to-out-protocol

 match protocol icmp

 match protocol tcp

 match protocol udp

!

class-map type inspect match-all cm-servers-to-out

 match access-group name servers-traffic

 match class-map cm-servers-to-out-protocol

!

policy-map type inspect pm-servers-to-out

 class type inspect cm-servers-to-out

  inspect

 class class-default

  drop

!

zone-pair security zp-servers-to-out source servers-zone destination out-zone

 service-policy type inspect pm-servers-to-out


Теперь надо настроить правило в обратную сторону. В первую очередь это нужно для того, чтобы почтовый сервер мог не только отправлять сообщения, но и получать их. А если снаружи порт закрыт, то письма приходить не будут. Для этого надо сделать, во-первых, zone-pair, а, во-вторых, публикацию порта 25/TCP почтового сервера наружу посредством NAT.


ip access-list extended acl-out-to-mail-server

 permit tcp any host 192.168.3.254 eq smtp

!

class-map type inspect match-all cm-out-to-mail-server

 match access-group name acl-out-to-mail-server

!

policy-map type inspect pm-out-to-servers

 class type inspect cm-out-to-mail-server

  inspect

 class class-default

  drop

!

zone-pair security zp-out-to-servers source out-zone destination servers-zone

 service-policy type inspect pm-out-to-servers

!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!

ip access-list extended acl-nonat-to-mail-server

 permit tcp any host 192.168.3.254 eq smtp



route-map rm-nonat-to-mail-server permit 10

 match ip address acl-nonat-to-mail-server



ip nat inside source static tcp 192.168.3.254 25 111.111.111.111 25 route-map rm-nonat-to-mail-server extendable


Важно отметить, что разрешения и выборка трафика осуществляются на основании внутреннего адреса. Что касаемо route-map, то я тоже был немного сконфужен необходимостью её использования в таком варианте выборки трафика. Но других вариантов мне просто не оставили:


Cisco2951(config)#ip nat inside source static tcp 192.168.3.254 25 111.111.111.111 25 ?

  extendable  Extend this translation when used

  forced      Delete this entry and its children, even if in use

  no-alias    Do not create an alias for the global address

  no-payload  No translation of embedded address/port in the payload

  redundancy  NAT redundancy operation

  route-map   Specify route-map

  vrf         Specify vrf

  <cr>



5. Site-to-Site VPN


Малый офис как правило имеет подключение к основному офису. Приведу пример настройки самого простого соединения.

Сначала отстроим логический уровень - чтобы это "должно" было соединяться. Ясен пень, что пока доступ не расковыряем как надо, ничего соединяться не будет. Но в данном случае надо двигаться последовательно.


!!!!!! ISAKMP !!!!!!

!

crypto isakmp policy 10

 encr aes 256

 hash sha512

 authentication pre-share

 group 2

!

crypto isakmp key psk-for-vpn address 222.222.222.222

!

!!!!!! IPSEC !!!!!!

!

crypto ipsec transform-set AES256-SHA esp-aes 256 esp-sha-hmac

 mode tunnel

!

!!!!!! CRYPTOMAP !!!!!!

!

ip access-list extended vpn-to-hq



 permit ip 192.168.3.0 0.0.0.255 host 192.168.33.254

 permit ip host 192.168.3.254 192.168.55.0 0.0.0.255

!

crypto map OUTSIDE 4 ipsec-isakmp

 set peer 222.222.222.222

 set transform-set AES256-SHA

 set pfs group2

 match address vpn-to-hq

!



Вроде бы осталось только повесить криптомапу на внешний интерфейс и расслабиться, но мы то уже безопасность накрутили. Так что придётся сначала всё привести в соответствие. Начнём с NAT. Надо исключить из трансляции трафик, который приходит к нам из VPN. В этом случае метаморфоза будет выглядеть следующим образом:


ip access-list extended servers-traffic

 permit ip 192.168.3.0 0.0.0.255 any



ip nat inside source list servers-traffic interface GigabitEthernet0/2 overload

!

! TRANSFORM TO ...

!

ip access-list extended nonat-vpn-servers-traffic

 deny   ip any 10.0.0.0 0.255.255.255
 deny   ip any 172.16.0.0 0.15.255.255
 deny   ip any 192.168.0.0 0.0.255.255


 permit ip 192.168.3.0 0.0.0.255 any



ip nat inside source list nonat-vpn-servers-traffic interface GigabitEthernet0/2 overload

Теперь очередь ZBF. Так как трафик приходит снаружи, то надо изменить/добавить ряд правил для зоны OUT.


ip access-list extended acl-vpn-hq-to-servers
 permit ip host 192.168.33.254 192.168.3.0 0.0.0.255
 permit ip 192.168.55.0 0.0.0.255  host 192.168.3.254
!
class-map type inspect match-any cm-
vpn-hq-protocol

 match protocol icmp

 match protocol tcp

 match protocol udp

!

class-map type inspect match-all cm-vpn-hq-to-servers
 match access-group name
acl-vpn-hq-to-servers match class-map cm-vpn-hq-protocol
!


policy-map type inspect pm-out-to-servers

 class type inspect cm-vpn-hq-to-servers
  inspect


 class type inspect cm-out-to-mail-server

  inspect

 class class-default

  drop

!

Итак, исходящий трафик был сконфигурирован в самом начале, входящий трафик сконфигурировали только что. С NAT разобрались. Перед финальным аккордом осталось только одно - сделать так, чтобы роутер мог В ПРИНЦИПЕ принимать VPN-пакеты.


ip access-list extended acl-hq-to-self

 permit udp host 222.222.222.222 any eq isakmp non500-isakmp

!

class-map type inspect match-any cm-hq-to-self-protocol

 match protocol icmp

 match protocol tcp

 match protocol udp

 !

class-map type inspect match-all cm-hq-to-self

 match access-group name acl-hq-to-self

 match class-map cm-hq-to-self-protocol

!

policy-map type inspect pm-out-to-self

 class type inspect cm-hq-to-self

  inspect

 class class-default

  drop

!

zone-pair security zp-hq-to-self source out-zone destination self

 service-policy type inspect pm-out-to-self





Только после такого рода подготовки можно заходить на внешний интерфейс и вешать на него криптомапу.


interface GigabitEthernet0/2

 description outside

 crypto map OUTSIDE




6. Ограничение скорости для гостевой сети.


Так как пользователей в гостевой сети особо никто не контролирует, то мы им обрубаем трафик везде, кроме интернета. Но, что если гости заходят посмотреть Youtube? В лучшем случае, это увеличит нагрузку на канал. В худшем, они могут "съесть" весь канал. Чтобы этого не допустить, лучше "зарезать" канал до приемлемого значения.


policy-map type inspect pm-guests-to-out

 class type inspect cm-guests-to-out

  inspect

  police rate 5242880 burst 655360

 class class-default

  drop

В данном примере канал "урезан" до 5Мбит/с. Этого вполне достаточно для комфортной работы в Интернет. Можно пропорционально изменить значения в зависимости от поставленной задачи. Как лучше резать трафик и как именно он режется на оборудовании можно ознакомиться в полезных ссылках.


7. Небольшие системные настройки


Для нормальной работы железяки необходимо, чтобы она нормально получала время по NTP. Прописывать сервера по IP не особо интересно, поэтому лучше сделать это по имени.


clock timezone ZP6 6 0

ntp master 3

ntp server 1.ru.pool.ntp.org

ntp server 0.ru.pool.ntp.org

ntp server 3.ru.pool.ntp.org

ntp server 2.ru.pool.ntp.org

Здесь есть два нюанса. Во-первых, роутер должен нормально разрешать имена. Через внутренний DNS или внешний не принципиально. Главное чтобы это было. Для этого надо с интерфейса self дать доступ на интерфейс out по протоколу domain.


 permit udp any host 8.8.8.8 eq domain

Я предпочитаю делать через внешний так как... во-вторых, надо с интерфейса self дать доступ на интерфейс out по протоколу ntp. Чтобы сделать всё однотипно проще сделать сразу одну policy-map на оба доступа.

В заключении, надо чётко ограничить доступ на роутер по ssh. При поставке железо уже преднастроено, поэтому я предпочитаю допиливать уже настроенный доступ.


access-list 23 permit 192.168.8.0 0.0.0.255

!

line vty 0 4

 access-class 23 in

 privilege level 15

 login local

 transport input ssh

line vty 5 15

 access-class 23 in

 privilege level 15

 login local

 transport input ssh

В заключении хотел бы сказать, что все эти действия производятся СТРОГО до подключения оборудования в рабочую сеть и к провайдеру. В случае пренебрежения техникой безопасности возможны различные конфузы и неприятности.


Полезные ссылки:









http://nosovdn-cisco.blogspot.ru/2013/11/cisco.html

Profile

uzverss: (Default)
uzverss

December 2024

S M T W T F S
12345 67
891011121314
15161718192021
22232425262728
293031    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 23rd, 2025 10:40 am
Powered by Dreamwidth Studios