воскресенье, 17 мая 2020 г.

Настройка удаленного доступа L2TP\IPSec на базе Cisco ISR4000 для подключения клиентов с Windows 10

    С момента написания этой статьи прошло довольно много времени, произошло миллион изменений всего и вся. Поэтому, когда мне самому понадобилось повторить то, о чем в ней написано, я с удивлением обнаружил, что ничего не работает. Довольно забавная ситуация, и довольно обидная. А все потому, что с момента написания статьи изменились версии ОС, ушла поддержка PPTP, все стало безопасно, но ничего не работает.
    Пришло время обновить инструкцию по настройке более новых протоколов и устройств для создания возможности удаленного доступа к сети организации. В этом случае пробуем создать на базе маршрутизатора Cisco ISR4000 series L2TP/IPsec сервер, к которому без каких-либо проблем можно будет подключиться с ОС Windows 10.
    За основу взята инструкция из предыдущей статьи. Она все так же актуальна, если вы не стремитесь обновить все подряд до максимума, и в вашей инфраструктуре все так же присутствуют старые Cisco и Windows XP, "семерки" и им подобные.
    Ну а теперь перейдем к обновлениям.

    Если в прошлом случае нам достаточно было иметь образ IOS k9, то в случае с IOS 15, 16 и выше необходимо, чтобы нужные лицензии были также активированы. В частности, необходимо проследить, чтобы были активны технологические пакеты appxk9 и securityk9. Проверить это можно с помощью команды show version. Активировать технологические пакеты можно командами:

GW(config)#license boot level appxk9
GW(config)#license boot level securityk9

    Активация лицензий требует перезагрузки устройства, поэтому обязательно выделите сервисное окно для этого. 4000е в целом перезагружаются довольно быстро, в пределах 10 минут. Закладывайте минут 20 на перерыв связи.
    После успешной активации лицензий приступаем к настройкам. Для начала создаем пул адресов, которые будут назначаться удаленным пользователям:

GW(config)#ip local pool L2TP_ADDR_POOL 172.16.16.130 172.16.16.139

    Адресное пространство будет содержать 10 адресов, т.е. 10 потенциально возможных клиентов смогут подключиться к VPN. Диапазон адресов можно выделить как из существующих сетей, так и никак не связанных с внутренней адресацией. Второй вариант предпочтительнее просто потому, что проще визуально понять, где VPN, а где внутренние ресурсы, проще назначать различные разрешения для удаленных пользователей. В данном случае внутренние сети - из диапазона 192.168, сделано для большей наглядности.
    Далее включаем AAA и разрешаем аутентифицироваться с использованием локальной базы данных пользователей. Здесь покажу именно этот вариант, но необходимо помнить, что можно прикрутить и RADIUS, и LDAP, и другие внешние источники.

GW(config)#aaa new-model                                            
GW(config)#aaa authentication login default local            
GW(config)#aaa authentication ppp default local  

    При включении aaa new-model не забываем включить локальную аутентификацию для доступа к устройству - aaa authentication login default local. Иначе есть риск потерять доступ к интерфейсу управления. Пока эта команда не выполнена, не рекомендую отключаться от текущей сессии SSH. А перед тем, как продолжить, обязательно откройте вторую сессию SSH для проверки доступности устройства. Только после этого продолжаем.
    Создаем пользователя для VPN-доступа. Во-первых, указываем ему минимальные привилегии, чтобы это был пользователь, который не может залогиниться для управления. Во-вторых, как и ранее, пароль должен быть нешифрованным, т.е. используется не secret, а password.

username user100 priviledge 0 password cisco

    Приступаем к настройке IPSec. Ниже перечень необходимых команд с пояснениями.
===Настройка ключевой цепочки для подключения по PSK===
crypto keyring KEYRING_L2TP 
  pre-shared-key address 0.0.0.0 0.0.0.0 key SECRETKEY

!
===Создаем политику ISAKMP===
!
crypto isakmp policy 1
 encr 3des
 authentication pre-share
 group 2
!        
===Создаем профиль ISAKMP, в котором ссылаемся на ключевую цепочку с PSK===
!
crypto isakmp profile L2TP
   keyring KEYRING_L2TP
   match identity address 0.0.0.0
!
===Создаем набор шифрования для фазы 2 IPSec===
!
crypto ipsec transform-set L2TP_TSET2 esp-aes esp-sha-hmac
 mode transport
!
===Настраиваем динамическую крипто-карту===
!
crypto dynamic-map L2TP_DMAP 1000
 set nat demux
 set transform-set L2TP_TSET2
 set isakmp-profile L2TP
 reverse-route
!
===Привязываем предыдущие настройки к крипто-карте, назначаемой на интерфейс===
!
crypto map CRYPTO_MAP 100 ipsec-isakmp dynamic L2TP_DMAP
!

   Немного комментариев к предыдущим настройкам не помешает. В данном случае используется туннель с PSK (pre-shared key), который указывается при создании keyring. В качестве адреса партнера используется диапазон 0/0, что говорит о том, что подключиться можно будет с любого адреса, ведь мы настраиваем данную конструкцию для RA VPN. После создания разных стандартных вещей, вроде transform-set и isakmp profile, все эти параметры привязываются к динамической крипто-карте L2TP_DMAP, в которой разрешена связка L2TP-IPSec (команда set nat demux). Динамическая крипто-карта является частью общей крипто-карты CRYPTO_MAP, которая вешается на интерфейсе (далее).
    Переходим к настройкам VPDN и L2TP.

===Включаем функцию VPDN===
!
vpdn enable
!
===Создаем интерфейс loopback с адресом из диапазона RA VPN===
!
interface Loopback1
 ip address 172.16.16.1 255.255.255.0
!
===Создаем интерфейс VT, к которому привязываем пул адресов VPN===
!
interface Virtual-Template1
 description L2TP_VIF
 ip unnumbered Loopback1
 peer default ip address pool L2TP_ADDR_POOL
 keepalive 5
 ppp authentication ms-chap-v2
 ppp ipcp dns 8.8.8.8
 ip virtual-reassembly
!
===Добавляем исключения в NAT как для прямого, так  для обратного трафика===
!
ip access-list extended NAT_LIST
==> deny   ip 172.16.16.0 0.0.0.255 192.168.1.0 0.0.0.255
==> deny   ip 192.168.1.0 0.0.0.255 172.16.16.0 0.0.0.255
 permit ip 192.168.1.0 0.0.0.255 any //не забываем выпустить внутренний трафик в интернет
!
===Создаем правило для NAT во внешний интерфейс===
!
ip nat inside source list NAT_LIST interface GigabitEthernet0/0/0 overload
!
===Вешаем крипто-карту на внешний интерфейс и делаем его внешним для NAT===
!
interface GigabitEthernet0/0/0
 ip nat outside
 crypto map CRYPTO_MAP
!

    После создания петлевого интерфейса Loopback1 приступаем к созданию виртуального интерфейса, к которому мы привяжем подсеть для удаленного доступа. В качестве IP адреса самого интерфейса будем использовать адрес, взятый с Loopback (ip unnumbered Loopback1). Используем PPP аутентификацию MS-CHAP-V2, а также указываем DNS адрес для туннельного интерфейса, чтобы пользователи могли использовать его для разрешения имен. В данном случае указан внешний DNS, но если есть корпоративный - лучше указать его. Остальные настройки стандартны для обычной работы маршрутизатора: добавляем исключения в правила NAT, назначаем правила NAT, вешаем крипто-карту на исходящий интерфейс.
    На этом настройка завершена. Для подключения с Windows-машины необходимо перейти в параметры сети - VPN - Добавить VPN-подключение. В открывшемся окне ввести данные в соответствующие поля, сохранить подключение.

Комментариев нет:

Отправить комментарий