пятница, 24 октября 2014 г.

Cisco: IOS 15.x VPN

В данной статье я хочу пояснить кое-какие вопросы, связанные с построением VPN-концентратора (сервера удаленного доступа VPN) на Cisco IOS 15.x (от 15.4 и выше). Не простейшей конфигурации site-to-site VPN. 

И вот почему:

Что, шифрование туннелей ниасилили?

Перелопатив изрядное количество русскоязычных статей, я выяснил, что большинство так называемых системных администраторов решают проблему шифрования просто - "Ну не смогла я! Отключите шифрование!".

Смотрите сами:




Что, узнаете себя, недоумки?

Ссылки на оригиналы у меня тоже есть. И, кстати, они гуглятся за 5 минут. Родина должна знать своих героев!

Послушайте-ка, прокладки. Вы это серьезно - предлагаете ходить в корпоративный VPN при отсутствии шифрования? И такое решение предлагаете своим руководителям? Вы точно уверены, что вы IT-специалисты?

А теперь смотрите сюда и слушайте.


Вы вообще вот эту статью видели? В каждом разделе ниже я поясню, как настраивается шифрование - чтобы работало.

В нашем случае мы имеем полноценный IOS (15.4 universalk9) с поддержкой криптографии и железку с аппаратным криптоакселератором.

Правда, нам придется включить два technology pack'а, дабы стало возможным воспользоваться функциональностью VPN - в базовый пакет она не входит:

conf t

license boot module c2900 technology-package securityk9
license boot module c2900 technology-package datak9

end
wr
reload

После перезагрузки вам предложат согласиться с EULA и технологические пакеты будут активированы.

Я намеренно не вдаюсь в детали приобретения лицензий и их установки - это не предмет данной статьи.

Теперь рассмотрим детально настройку VPN обеих типов - PPTP и L2TP с шифрованием туннелей, включая настройку клиентов (штатных VPN-клиентов Windows 7).

PPTP VPN

Наиболее просто настраивается PPTP VPN. Это каноническая функциональность VPN, однако, имеющая пару серьезных недостатков:
  1. Используется относительно слабое по нынешним временам шифрование RC4.
  2. Используется относительно уязвимая процедура аутентификации.
Эти недостатки не позволяют относиться серьезно к такому VPN. Однако простота конфигурирования и совместимость с древними клиентами Windows могут потребовать ее использования. Постараемся получить максимально возможную защиту в данном случае.

Итак, приступим:


!
aaa new-model
!
aaa authentication login default local
aaa authorization network default if-authenticated 
!
username vpnclient privilege 0 password 7 10593A1336121D1293420E232428
!
async-bootp dns-server 192.168.200.3
vpdn enable
!
vpdn-group PPTP-VPDN
! Default PPTP VPDN group
accept-dialin
protocol pptp
virtual-template 1
pptp tunnel echo 10
ip pmtu 
ip mtu adjust
!
interface GigabitEthernet0/0
ip address 72.163.4.161 255.255.0.0
ip access-group WAN_IN in
ip nat outside
ip virtual-reassembly in
duplex auto
speed auto
no cdp enable
!
interface Virtual-Template1
ip unnumbered GigabitEthernet0/0
! Ge0/0 - фронтальный интерфейс, на который поступают соединения от клиентов
ip nat inside
ip virtual-reassembly in
autodetect encapsulation ppp
peer default ip address pool VpnPool
ppp encrypt mppe 128 required
ppp authentication ms-chap-v2
!
ip local pool VpnPool 192.168.220.100 192.168.220.150
!
ip access-list extended NAT
remark Deny VPN connections to Internet
deny ip 192.168.220.0 0.0.0.255 any
remark Pass internal LAN to NAT
permit ip 192.168.0.0 0.0.255.255 any
ip access-list extended WAN_IN
deny tcp any any eq telnet
deny tcp any any eq smtp
deny tcp any any eq domain
deny tcp any any eq www
deny tcp any any eq 22
permit ip any any
!

Все ключевые параметры приведены в данном фрагменте конфигурации. Обратите внимание, что мы блокируем доступ к интернету для VPN-соединений, на фронтальном интерфейсе определен overload NAT, включено шифрование RC-4 128 бит (максимальное для PPTP) и аутентификация MS-CHAP v2. Также обратите внимание, что для доступа к DNS-серверу, находящемуся в DMZ, для VPN-клиентов задан параметр async-bootp dns-server с адресом сервера. В противном случае доступ к хостам из VPN будет только по IP либо придется указывать DNS для VPN-соединения на каждом клиенте.

В настройках клиентского соединения все должно быть по умолчанию, кроме закладки "Безопасность":

Все. Можете соединяться - вы зашифрованы.

Пояснение для оборудованных головным мозгом.
Снова читаем здесь. В режиме PPTP, Windows, начиная с Vista, использует RC4 128 бит. Зто означает, что работать будет только самое стойкое шифрование (на клиенте) в сочетании со строкой ppp encrypt mppe 128 required на сервере.

L2TP VPN

Однако, предел шифрования в PPTP - это RC4 128 бит. Как хотите, джентльмены, но по нынешним временам это не защита туннеля. Тем более, корпоративного.

Давайте сделаем туннель покрепче.


!
aaa new-model
!
!
aaa authentication login default local
aaa authentication ppp VPDN_AUTH local
aaa authorization network default if-authenticated
!

async-bootp dns-server 192.168.200.3
vpdn enable
!
vpdn-group L2TP-VPDN
! Default L2TP VPDN group
accept-dialin
protocol l2tp
virtual-template 1
no l2tp tunnel authentication
!
username vpnclient privilege 0 password 7 10531C1447192C6283420B316071
!
crypto isakmp policy 1
encr 3des
authentication pre-share
group 14
crypto isakmp key ViUctIcDodugbifGhij address 0.0.0.0
!
!
crypto ipsec transform-set L2TP-Set esp-3des esp-sha-hmac
mode transport
!
!
!
crypto dynamic-map dyn-map 10
set transform-set L2TP-Set

reverse-route
!
!
!
crypto map outside_map 65535 ipsec-isakmp dynamic dyn-map
!
interface GigabitEthernet0/0
ip address 72.163.4.161 255.255.0.0
ip access-group WAN_IN in
ip nat outside
ip virtual-reassembly in
duplex auto
speed auto
no cdp enable
crypto map outside_map
!
interface Virtual-Template1
ip unnumbered GigabitEthernet0/0

! Ge0/0 - фронтальный интерфейс, на который поступают соединения от клиентов
peer default ip address pool VpnPool
ppp authentication ms-chap-v2 VPDN_AUTH
!
!
ip local pool VpnPool 192.168.220.100 192.168.220.150
!
!
ip nat inside source list NAT interface GigabitEthernet0/0 overload
!
ip access-list extended NAT
remark Deny VPN connections to Internet
deny ip 192.168.220.0 0.0.0.255 any
remark Pass internal LAN to NAT
permit ip 192.168.0.0 0.0.255.255 any
ip access-list extended WAN_IN
deny tcp any any eq telnet
deny tcp any any eq smtp
deny tcp any any eq domain
deny tcp any any eq www
deny tcp any any eq 22
permit ip any any
!

Note: Обратите внимание на свойства transform-set. mode transport требуется для соединения со всеми версиями Windows native client (включая Windows 10), это означает, что VPN-соединение видимое снаружи как VPN. Если установить mode tunnel, трафик VPN перестанет быть очевидным, однако при этом Windows 10 не сможет соединяться с таким сервером (До Windows 7 включительно все работает). Также взгляните на свойства isakmp. group 2 это DH-группа всего лишь 1024 бит, абсолютный минимум для 2016 года - 2048 бит - это группа 14:

1 Diffie-Hellman group 1 (768 bit)
14 Diffie-Hellman group 14 (2048 bit)
15 Diffie-Hellman group 15 (3072 bit)
16 Diffie-Hellman group 16 (4096 bit)
19 Diffie-Hellman group 19 (256 bit ecp)
2 Diffie-Hellman group 2 (1024 bit)
20 Diffie-Hellman group 20 (384 bit ecp)
21 Diffie-Hellman group 21 (521 bit ecp)
24 Diffie-Hellman group 24 (2048 bit, 256 bit subgroup)
5 Diffie-Hellman group 5 (1536 bit)


Сервер настроен. Теперь необходимо настроить конфигурацию клиента. В свойствах соединения последовательно устанавливаем параметры как показано на скриншотах:





Пояснения:
  1. В L2TP вход в домен без сервера аутентификации не поддерживается.
  2. В дополнительных параметрах IPSec надо задать pre-shared key из строки crypto isakmp key серверной конфигурации.
  3. Туннелирование IPv6 в L2TP еще не поддерживается.
Все, мои маленькие мохнатые друзья. L2TP с шифрованием 3des, аутентификацией sha и использованием криптоакселератора (если он имеется в вашей Cisco) работает.



Пояснение для оборудованных головным мозгом.
Еще раз читаем здесь. В Windows, начиная с Vista, на уровне реестра отключено слабое шифрование. Для L2TP это означает, что используется по умолчанию для шифрования 3des, для аутентификации - sha.