PPTP (Point-to-Point tunneling protocol) — туннельный протокол, позволяющий установить защищенное соединение с сервером. Данный протокол чаще всего используется для организации удаленного доступа в корпоративную сеть. Клиент PPTP установлен по умолчанию как минимум в операционных системах от Microsoft. В данной статье мы будем рассматривать настройку PPTP сервера на маршрутизаторе Cisco.
Содержание:
Часть 1. Базовая настройка
Рабочие станции с операционной системой Microsoft Windows по умолчанию поддерживают протокол PPTP. Поэтому, использовать данный тип подключения к корпоративной сети будет наиболее удобным для многих пользователей и относительно безопасным.
Настройка аутентификации:
aaa new-model aaa authentication ppp default local-case user cisco privilege 0 password cisco
Пароль для имени пользователя задается с помощью команды password, а не secret. В противном случае, этап аутентификации клиента пройдет с ошибкой. Подробнее о типах шифрования паролей и уровнях привилегий можно прочитать здесь.
Настройка Virtual Private Dialup Network (VPDN) для приема входящих соединений по протоколу PPTP:
vpdn-group VPDN-PPTP accept-dialin protocol pptp virtual-template 1 exit pptp tunnel echo 10 ip pmtu ip mtu adjust
Здесь задается наименование протокола protocol pptp, ссылка на виртуальный интерфейс для VPN пользователей virtual-template 1, команды для взаимодействия c пакетами ip pmtu и ip mtu adjust. Подробнее об этих командах можно узнать на сайте cisco.com.
Создание виртуального интерфейса, который будет играть роль IP шлюза для PPTP клиентов:
interface Loopback0 description - LO-PPTP - ip address 10.10.10.1 255.255.255.0
Настройка пула IP адресов для автоматической выдачи PPTP клиентам:
ip local pool POOL-PPTP 10.10.10.2 10.10.10.254
Настройка DNS сервера для выдачи клиентам:
async-bootp dns-server 10.10.1.3
Настройка виртуального интерфейса:
interface Virtual-Template1 description - PPTP - ip unnumbered Loopback0 ip nat inside ip virtual-reassembly autodetect encapsulation ppp peer ip address forced peer default ip address pool POOL-PPTP ppp encrypt mppe auto ppp authentication ms-chap-v2
Здесь указываем интерфейс Loopback, тип инкапсуляции autodetect encapsulation ppp, автоматическую выдачу IP адресов peer ip address forced из пула peer default ip address pool POOL-PPTP, тип шифрования трафика ppp encrypt mppe auto, тип аутентификации ppp authentication ms-chap-v2. Отдельно отмечу команду ip nat inside, которая вкупе с другими базовыми настройками NAT необходима, если вы хотите обеспечить возможность использования интернет-ресурсов PPTP клиентами через собственное (компании) подключение к сети Интернет.
Суммируя вышесказанное, базовая настройка будет выглядеть так:
aaa new-model aaa authentication ppp default local-case user cisco privilege 0 password cisco vpdn enable vpdn-group VPDN-PPTP accept-dialin protocol pptp virtual-template 1 exit pptp tunnel echo 10 ip pmtu ip mtu adjust interface Loopback0 description - LO-PPTP - ip address 10.10.10.1 255.255.255.0 interface Virtual-Template1 description - PPTP - ip unnumbered Loopback0 ip nat inside ip virtual-reassembly autodetect encapsulation ppp peer ip address forced peer default ip address pool POOL-PPTP ppp encrypt mppe auto ppp authentication ms-chap-v2 async-bootp dns-server 10.10.1.3 ip local pool POOL-PPTP 10.10.10.2 10.10.10.50
Часть 2. Выдача конкретных IP адресов PPTP клиентам
Теперь рассмотрим ситуацию, когда нам необходимо предоставить выделенный IP адрес одному PPTP клиенту или несколько адресов группе пользователей, чтобы, например, ограничить их доступ к сети при помощи списка доступа. Для этого к уже существующей конфигурации нужно добавить следующее.
Для одного пользователя:
aaa authorization network default local aaa attribute list user-ivanov attribute type addr "10.10.10.51" service ppp protocol ip username ivanov privilege 0 password IvanovsPassword username ivanov aaa attribute list user-ivanov
Для группы пользователей:
aaa attribute list group-managers attribute type addr-pool "pool-managers" service ppp protocol ip username ivanov privilege 0 password ManagerPassword username ivanov aaa attribute list group-managers ip local pool pool-managers 10.10.10.100 10.10.10.150
После этого, когда мы уже будем иметь представление о том, какие IP адреса и кому назначаются, можно создать список доступа и повесить на interface Virtual-Template 1.
Есть вариант убрать общий пул IP адресов и оставить только тот адрес, который привязан для выдачи конкретному пользователю. В данном случае только данный пользователь сможет подключиться к сети и получить предназначенный для него IP адрес.
Сведу воедино список команд:
aaa new-model ! aaa authentication ppp default local-case aaa authorization network default local ! aaa attribute list user-ivanov attribute type addr 10.10.10.51 service ppp protocol ip mandatory ! username ivanov privilege 0 password 0 IvanovPassword username ivanov aaa attribute list user-ivanov vpdn-group VPDN-PPTP ! Default PPTP VPDN group accept-dialin protocol pptp virtual-template 1 pptp tunnel echo 10 ip pmtu ip mtu adjust interface Virtual-Template1 ip unnumbered Loopback0 ip virtual-reassembly autodetect encapsulation ppp ppp encrypt mppe auto ppp authentication ms-chap-v2
Часть 3. Настройка аутентификации через сервер ACS
Настройки данного пункта восстанавливаю по памяти. Прежде всего нужно настроить взаимодействие маршрутизатора с сервером ACS по протоколу tacacs+:
tacacs-server host 10.10.1.4 single-connection tacacs-server key SharedServerPassKey
Для проверки взаимодействия с сервером можно включить аутентификацию на устройство через сам сервер и проверить, можете ли вы зайти на маршрутизатор используя свои идентификационные данные с сервера ACS. Для этого, на сервере ACS создайте профиль маршрутизатора в меню Network Configuration, где укажите его IP адрес (или адреса, если их несколько), укажите Shared Secret, определите группу. После этого создайте нового пользователя, поместите его в группу пользователей, назначьте права группе пользователей (или конктретно пользователю, на ваше усмотрение). Затем на маршрутизаторе добавьте следующие команды и проверьте аутентификацию (предварительно сделав logoff) введя имя пользователя и пароль, которые мы создали на сервере:
aaa authentication login default group tacacs+ local aaa authentication enable default group tacacs+ enable
Если у вас получилось зайти на маршрутизатор под именем пользователя, указанного в ACS, то можно перейти к настройке PPTP аутентификации.
Сначала проделаем предварительную настройку на сервере ACS. В меню Interface Configuration кликните по пункту TACACS+ (Cisco IOS) и выставьте в нем следующие настройки (может быть здесь что-то лишнее, но у меня все работало):
Далее перейдите в меню Group Settings, выберите группу, к которой прикреплен пользователь и кликните Edit Settings. Установите галочки в тех полях, которые касаются PPP соединения, например, как на картинке (на картинке отражено не все, у себя в ACS прокрутите ниже и найдите остальные разделы PPP):
После этого нужно добавить одну строку в маршрутизатор, тем самым указав из какой базы данных аутентифицировать пользователей:
aaa authentication ppp default group tacacs+
Если при подключении возникает ошибка 691, значит вы не правильно провели конфигурацию PPP на ACS, проверьте наличие галочек в нужных местах, проверьте логи сервера ACS.
Если при подключении возникает ошибка 734, значит как минимум до сервера аутентификации вы добрались, но проблема возникла на стыке протокола аутентификации. Ошибка 734 у меня возникла по причине того, что сервер ACS интегрирован с контроллером домена на Windows Server где хранятся все учетные записи в Active Directory. Поэтому когда ACS получает запрос на аутентификацию PPTP пользователя он перенаправляет запрос в Active Directory, который умеет отвечать только по протоколу PAP. Данная информация взята с сайта cisco.com. Пруфлинк не дам, если он вам нужен, можете найти его сами. Отсюда о каком-либо шифровании можно забыть и в данной ситуации я бы не рекомендовал использовать PPTP в дальнейшем. Но если вам нужно, чтобы данная схема заработала, тогда придется немного изменить конфигурацию на самом маршрутизаторе — убрать mppe шифрование и изменить протокол аутентификации на PAP:
interface Virtual-Template1 description - PPTP - ip unnumbered Loopback0 ip nat inside ip virtual-reassembly autodetect encapsulation ppp peer ip address forced peer default ip address pool POOL-PPTP ppp authentication pap