Протоколы vpn — pptp, l2tp, ikev2, openvpn

Введение

IPsec/L2TP – повсеместно используемый VPN протокол, применяемый в Windows и других операционных системах. Все версии Windows, начиная с Windows 2000, имеют встроенную поддержку этого протокола и не требуют сторонних клиентов (например, OpenVPN), что делает его более удобным. Однако, значительно сложнее настроить серверную сторону на Linux, поскольку задействованы как минимум 3 слоя: IPsec, L2TP и PPP.

  1. IPsec обеспечивает конфиденциальность сетевого соединения и авторизации клиента (системы)
  2. С L2TP туннель настроен так, что VPN трафик прозрачно проходит через IPsec
  3. PPP (протокол точка-точка) контролирует авторизацию пользователей

Это руководство не охватывает установку DHCP, RADIUS, Samba или Инфраструктуры Открытых Ключей (PKI). Оно также совсем не объясняет, как настраивать Linux-клиентов, хотя этот шаг может быть довольно легко получен из руководства. Будет освещена часть конфигурации Windows-клиентов с целью устранения неполадок в настройке сервера.

Условные обозначения

В этом руководстве будут использованы следующие условные обозначения (пример настроек):

  • Домен – example.com
  • Имя сервера – vpn.example.com
  • Имя файла сертификата CA – ca.crt
  • Сертификат сервера – vpn.example.com.crt
  • Ключ сервера – vpn.example.com.key
  • Сертификат клиента – client.example.com.crt
  • Ключ клиента – client.example.com.key

IKEv2

Это протокол туннелирования (протокол обмена ключами, версия 2), разработанный Cisco и Microsoft, он встроен в Windows 7 и последующие версии. Протокол допускает модификации с открытым исходным кодом, в частности для Linux и других платформ, также поддерживаются устройства Blackberry.

Он хорошо подходит для установки автоматического VPN-подключения, если интернет-соединение периодически разрывается. Пользователи мобильных устройств могут воспользоваться им как протоколом для беспроводных сетей по умолчанию — он очень гибок и позволяет без труда переключать сети. Кроме того, он прекрасно подойдет для пользователей Blackberry — это один из немногих протоколов, с поддержкой подобных устройств. Хотя IKEv2 доступен на меньшем количестве платформ по сравнению с, например, IPSec, он считается достаточно хорошим протоколом с точки зрения стабильности, безопасности и скорости работы.

Плюсы

  • Высокая степень безопасности — поддержка различных шифров, в частности 3DES, AES, AES 256.
  • Также поддерживает устройства Blackberry.
  • Стабильно подключается снова после разрыва соединения или смены сетей
  • Просто установить и настроить, по крайней мере, для пользователя
  • Быстрее, чем L2TP, PPTP и SSTP

Минусы

  • Поддерживает малое количество платформ.
  • Порт UDP 500 блокируется проще, чем решения на основе SSL, как, например, SSTP или OpenVPN
  • Исходный код не открыт
  • Установка на сервер довольно трудная, это может вызвать потенциальные проблемы

Настройка Сервера[править]

Внесём изменения в конфигурационный файл xl2tpd (/etc/xl2tpd/xl2tpd.conf).
Общие настройки находяися в секции global:


 port = 1701 ; Сервер будет слушать 1701 порт

 access control = yes ; Проверяет соответсвие IP настройкам доступа

Настройки сервера находятся в секции lns:

  ; Название сервера

 ip range = 192.168.173.2-192.168.173.20 ; Диапазон выдаваемых IP адресов

 lac = 10.10.170.0 - 10.10.170.255 ; Диапазон IP адресов, которые могут присоединяться к этому серверу

 local ip = 192.168.173.1 ; IP адрес сервера в VPN сети

 require chap = yes ; Требовать у клиентов CHAP аутентификацию

 refuse pap = yes ; Не разрешать клиентам PAP аутентификацию

 require authentication = yes ; Требовать аутентификацию клиентов

 name = server ; Передавать клиентам имя сервера

 pppoptfile = /etc/ppp/options.xl2tpd; Файл с опциями ppp

В файле /etc/ppp/options.xl2tpd можно указать необходимые опции ppp, файл должен существовать.
В файле /etc/ppp/chap-secrets указываются аутентификационные данные пользователей для CHAP аутентификации:

client server Pa$$word *
  • client — логин
  • server — указывается имя сервера к которому можно подсоединиться (параметр name), можно заменить на *
  • Pa$$word — пароль клиента
  • * — Разрешает соединения с любых IP

Добавляем сервис в автозапуск и запускаем его:

# systemctl enable xl2tpd
# systemctl start xl2tpd

Troubleshooting

Note: The first step may be to use the ipsec verify command to check the configuration of the installed IPSEC.

Issue: I get a message from pppd saying «Failed to authenticate ourselves to peer» and I’ve verified my password is correct. What could be wrong?

Solution: If you see the following in your /var/log/daemon.log:

Dec 20 15:14:03 myhost pppd: rcvd 
Dec 20 15:14:03 myhost pppd: sent 
Dec 20 15:14:03 myhost pppd: rcvd 
Dec 20 15:14:03 myhost pppd: rcvd 
Dec 20 15:14:03 myhost pppd: CHAP authentication failed
Dec 20 15:14:03 myhost pppd: CHAP authentication failed
Dec 20 15:14:03 myhost pppd: sent 
Dec 20 15:14:03 myhost pppd: rcvd 
Dec 20 15:14:03 myhost pppd: sent 
Dec 20 15:14:03 myhost pppd: rcvd 

then you are authenticating against a SonicWALL LNS that does not know how to handle CHAP-style authentication correctly.

The solution to this is to add the following to your options.l2tp.client file:

   refuse-chap

This will cause the SonicWALL to default to the next authentication mechanism, namely MSCHAP-v2. This should authenticate successfully, and from this point xl2tpd should successfully construct a tunnel between you and the remote L2TP server.

Соображения безопасности

Протокол L2TP сталкивается при своей работе с несколькими проблемами безопасности. Ниже рассмотрены некоторые подходы для решения этих проблем.

Безопасность на конце туннеля

Концы туннеля могут опционно выполнять процедуру аутентификации друг друга при установлении туннеля. Эта аутентификация имеет те же атрибуты безопасности, что и CHAP, и обладает разумной защитой против атак воспроизведения и искажения в процессе установления туннеля. Для реализации аутентификации LAC и LNS должны использовать общий секретный ключ.

Безопасность пакетного уровня

Обеспечение безопасности L2TP требует, чтобы транспортная среда могла обеспечить шифрование передаваемых данных, целостность сообщений и аутентификацию услуг для всего L2TP-трафика. Сам же L2TP ответственен за конфиденциальность, целостность и аутентифицированность L2TP-пакетов внутри туннеля.

L2TP и IPsec

При работе поверх IP, IPsec (безопасный IP) предоставляет безопасность на пакетном уровне. Все управляющие и информационные пакеты L2TP в конкретном туннеле выглядят для системы IPsec как обычные информационные UDP/IP-пакеты.
Помимо транспортной безопасности IP, IPsec определяет режим работы, который позволяет туннелировать IP-пакеты, а также средства контроля доступа, которые необходимы для приложений, поддерживающих IPsec. Эти средства позволяют фильтровать пакеты на основе характеристик сетевого и транспортного уровней. В модели L2TP-туннеля аналогичная фильтрация выполняется на PPP-уровне или сетевом уровне поверх L2TP.

L2TP Server

Sub-menu:

This sub-menu shows interfaces for each connected L2TP clients.

An interface is created for each tunnel established to the given server. There are two types of interfaces in L2TP server’s configuration

  • Static interfaces are added administratively if there is a need to reference the particular interface name (in firewall rules or elsewhere) created for the particular user.
  • Dynamic interfaces are added to this list automatically whenever a user is connected and its username does not match any existing static entry (or in case the entry is active already, as there can not be two separate tunnel interfaces referenced by the same name).

Dynamic interfaces appear when a user connects and disappear once the user disconnects, so it is impossible to reference the tunnel created for that use in router configuration (for example, in firewall), so if you need persistent rules for that user, create a static entry for him/her. Otherwise it is safe to use dynamic configuration.

Note: in both cases PPP users must be configured properly — static entries do not replace PPP configuration.

Server configuration

Sub-menu:

Properties

Property Description
authentication (pap | chap | mschap1 | mschap2; Default: mschap1,mschap2) Authentication methods that server will accept.
default-profile (name; Default: default-encryption) default profile to use
enabled (yes | no; Default: no) Defines whether L2TP server is enabled or not.
max-mru (integer; Default: 1450) Maximum Receive Unit. Max packet size that L2TP interface will be able to receive without packet fragmentation.
keepalive-timeout (integer; Default: 30) If server during keepalive-timeout period does not receive any packets, it will send keepalive packets every second, five times. If the server still does not receive any response from the client, then the client will be disconnected after 5 seconds.
Logs will show 5x «LCP missed echo reply» messages and then disconnect. Available starting from v5.22 and v6rc3.
max-mtu (integer; Default: 1450) Maximum Transmission Unit. Max packet size that L2TP interface will be able to send without packet fragmentation.
use-ipsec (no | yes | require; Default: no) When this option is enabled, dynamic IPSec peer configuration is added to suite most of the L2TP road-warrior setups. When require is selected server will accept only those L2TP connection attempts that were encapsulated in the IPSec tunnel.
ipsec-secret (string; Default: ) Preshared key used when use-ipsec is enabled
mrru (disabled | integer; Default: disabled) Maximum packet size that can be received on the link. If a packet is bigger than tunnel MTU, it will be split into multiple packets, allowing full size IP or Ethernet packets to be sent over the tunnel.

To enable L2TP server:

 interface l2tp-server server> set enabled=yes
 interface l2tp-server server> print
          enabled: yes
          max-mtu: 1450
          max-mru: 1450
             mrru: disabled
   authentication: pap,chap,mschap1,mschap2
  default-profile: default-encryption
 interface l2tp-server server>

Настройка Windows 10 соединение VPN туннель PPTP L2TP IPsec

: 17 января 2017 12141

Некоторые важные особенности смотрите в конце страницы!

1. Откройте Центр уведомлений в правом нижнем углу экрана:

2. Далее выберите Виртуальная сеть (VPN):

3. В открывшемся окне Параметры во вкладке VPN нажмите на кнопку Добавление VPN-подключения:

4. В окне Добавить VPN-подключение заполните следующие параметры:

Поставщик услуг VPN: Windows (встроенные)

Имя подключения: VPNki

Имя или адрес подключения: vpnki.ru

Тип VPN: Протокол PPTP (либо Протокол L2TP/IPSec)

Тип данных для входа: Имя пользователя и пароль

Имя пользователя и пароль: полученные в системе vpnki (например userXXX)

5. Cохраните подключение

6. Далее выберите пункт Настройка параметров адаптера:

7. Нажмите правой кнопкой мыши на адаптер VPNki и выберите Свойства:

8. Выберите в списке IP версии 4 (TCP/IPv4) и нажмите кнопку Свойства:

9. Оставьте получение IP-адреса и адреса DNS-сервера автоматически и нажмите кнопку Дополнительно:

10. Во вкладке Параметры IP Снимите галочку с Использовать основной шлюз в удаленные сети и нажмите кнопку OK

11. Далее во вкладке Безопасность в поле Проверка подлинности выберите

Разрешить следующие протоколы и оставьте только Протокол проверки пароля (CHAP)

12. (Только для L2TP) нажмите кнопку Дополнительные параметры и выберите

Для проверки подлинности использовать общий ключ и введите ключ: vpnki

13. На этом настройка завершена, нажмите кнопку Подключиться и при успешном подключении

состояние VPNki должно измениться на Подключено

Это можно сделать двумя способами:

– добавив сети 192.168.x.x/x (ваша удаленная сеть) и 172.16.0.0/16 (сеть VPNKI) в таблицу маршрутов при помощи команды route add

– при помощи поступления данных с сервера по протоколу DHCP

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

Особенность 1

Для использования соединения с шифрованием вам необходимо в настройках соединения: – использовать авторизацию MS-CHAPv2 и указать что будет использоваться шифрование (MPPE)

Для соединения без шифрования вам необходимо:

– использовать авторизацию CHAP и указать, что шифрование использоваться не будет.

Будьте внимательны,

все иные сочетания методов авторизации и шифрования будут приводить к неработоспособности подключения!!!

Особенность 2

Работа протокола PPTP осуществляется с использованием протокола GRE, с которым у некоторых интернет провайдеров России имеются технические сложности. Эти сложности не позволят вам использовать PPTP для построения VPN туннлей. К таким провайдерам относятся МГТС (Московская городская телефонная сеть), Yota, Мегафон. Однако, такая ситуация не во всех частях их сетей.

Для пользователя ситуация будет выглядеть так, что проверка имени пользователя и пароля проходить не будут. Точнее до этого момента даже не дойдет…В пункте меню “События безопасности” вы будете видеть начало успешного подключения и последней будет являться фраза, говорящая о том, что мы готовы проверять имя и пароль, но …

Access granted. No whitelist is set for user. Ready to check username / password.

Отсуствие соединения и дальнейших записей в логе (при том, что вы твердо уверены в том, что логин и пароль верные), скорее всего, говорит о том, что GRE у вашего провайдера не пропускается. Можете погуглить на этот счет.

PS: В целях борьбы с зависшими сессиями мы принудительно отключаем пользовательские туннели с протоколами PPTP, L2TP, L2TP/IPsec через 24 часа после установления соединения. При правильной настройке соединения должны автоматически переустановиться.

Наша система будет работать с многими типами домашних и офисных маршрутизаторов. Более подробно смотрите в разделе по настройке оборудования, а начать настройку лучше с этого примера.

ДОПОЛНИТЕЛЬНО ПО ТЕМЕ

Немного более подробно про IP адреса можно прочитать на нашем сайте

Про выход в Интернет через VPN и центральный офис можно почитать здесь

Про удалённый доступ к компьютеру можно почитать на нашем сайте

Про VPN и протоколы можно почитать здесь

Настройка MikroTik VPN сервера L2TP

VPN сервер популярное средство для удаленного подключения одного ПК(или 100 ПК) к центральному узлу. Реализация такого сервиса есть масса, но на MikroTik работает быстро и без инцидентов по недоступности. В примере приведен случай L2TP как более защищенного средства для передачи трафика.

Для удаленного доступа сотрудников

Доступ к рабочему пространству с любого места, где есть интернет. Почта, сетевые папки, принтер, 1с – все это становится доступным.

Объединение офисов

Компьютеры, та и вся техника смогут обмениваться информацией вне зависимости от географического расположения.

Для VPN клиентов лучше создать отдельную подсеть, это добавит больше возможностей в ограничении доступа между VPN клиентами и локальной сетью, а также в самой маршрутизации.

Настройка находится IP->Pool

/ip pool add name=LAN-Ip-Pool ranges=192.168.10.100-192.168.10.150

Настройка находится PPP->Profile

Предварительно нужно задать сетевые параметры для VPN клиентов

/ppp profile
add change-tcp-mss=yes dns-server=192.168.10.1 local-address=\
192.168.10.1 name=l2tp remote-address=pool-1 use-encryption=yes

Настройка находится PPP->Interface->L2TP Server

/interface l2tp-server server
set authentication=mschap2 default-profile=l2tp enabled=yes \
ipsec-secret=mikrotik-config.ukr use-ipsec=required

Use-ipsec=required принудит vpn клиента к обязательному использованию IpSec;

Use-ipsec=yes(по умолчанию) проставляет выбор vpn клиенту в использовании IpSec, т.е. может не использоваться.

Поддержи автора статьи, сделай CLICK по рекламе ↓↓↓

Этой учётной записью будет пользоваться VPN клиент для удаленного подключения к VPN серверу.

Настройка находится PPP->Interface->Secrets

/ppp secret
add name=user1 password=user1 profile=l2tp

Global Section

auth file
Specify where to find the authentication file used to authenticate l2tp tunnels. The default is /etc/l2tpd/l2tp-secrets.
ipsec saref
Use IPsec Security Association trackinng. When this is enabled, packets received by xl2tpd should have to extra fields (refme and refhim) which allows
tracking of multiple clients using the same internal NATed IP address, and allows tracking of multiple clients behind the same NAT router. This neds to be
supported by the kernel. Currently, this only works with Openswan KLIPS in «mast» mode. (see http://www.openswan.org/)

Set this to yes and the system will provide proper SAref values in the recvmsg() calls.

Values can be yes or no. The default is no.

saref refinfo
When using IPsec Security Association trackinng, a new setsockopt is used. Since this is not (yet?) an official Linux kernel option, we got bumped.
Openswan upto 2.6.35 for linux kernels up to 2.6.35 used a saref num of 22. Linux 3.6.36+ uses 22 for IP_NODEFRAG. We moved our IP_IPSEC_REFINFO to 30. If not
set, the default is to use 30. For older SAref patched kernels, use 22.
listen-addr
The IP address of the interface on which the daemon listens. By default, it listens on INADDR_ANY (0.0.0.0), meaning it listens on all interfaces.
port
Specify which UDP port xl2tpd should use. The default is 1701.
access control
If set to yes, the xl2tpd process will only accept connections from peers addresses specified in the following sections. The default is no.
debug avp
Set this to yes to enable syslog output of L2TP AVP debugging information.
debug network
Set this to yes to enable syslog output of network debugging information.
debug packet
Set this to yes to enable printing of L2TP packet debugging information. Note: Output goes to STDOUT, so use this only in conjunction with the -D
command line option.
debug state
Set this to yes to enable syslog output of FSM debugging information.
debug tunnel
Set this to yes to enable syslog output of tunnel debugging information.

Устранение неполадок клиента

Windows: Правильная установка сертификата (для пользователей PKI)

Сертификат должен быть запакован в пакет PKCS12. Это может быть сделано посредством openssl или gnutls:

Когда создан файл .p12, импортируйте его в Windows. Однако, способ не очевиден. Не надо дважды щёлкать по ключу и следовать инструкциям, это не будет работать. Ключ будет импортирован в личное хранилище сертификатов, но в Windows в авторизации нуждается локальный компьютер, таким образом сертификат должен быть добавлен в хранилище ключей локального компьютера. Для этого используйте Консоль управления Microsoft (MMC). Для работы требуются привилегии администратора.

Код Импорт ключа в Windows

Пуск -> Выполнить -> mmc
Файл -> Добавить или удалить оснастку... -> Сертификаты -> Добавить
учетной записи компьютера -> локальным компьютером -> Готово -> OK.

Разверните Сертификаты. Выберете любую папку (без разницы какую), щёлкните правой кнопкой мыши, выберете «Все задачи», затем «Импорт…». Только сейчас следуйте указаниям мастера, но на последнем шаге убедитесь, что выбрано «Автоматически выбрать хранилище на основе типа сертификата».

Windows: Сетевые ошибки RAS

Ошибка 766: Сертификат не может быть найден

Если происходит такая ошибка, значит сертификат не был правильно импортирован. Убедитесь, что импортировали его через MMC, а не двойным щелчком файла.

Ошибка 810: VPN соединение не завершено

При использовании ipsec-tools (racoon) в системном логе может появится следующее сообщение:

Код Сообщение об ошибке в системном логе при использовании ipsec-tools/racoon

ERROR: ignore information because ISAKMP-SAhas not been established yet.

Это значит, что сертификат был неправильно импортирован, или пакет p12 отсутствует в сертификате ЦС. Убедитесь, что импортировали ключ через MMC и выбрали «Автоматически выбрать хранилище на основе типа сертификата» в конце процесса импорта.

Vista: Ошибка 835 Невозможно авторизоваться

Эта ошибка появляется только при использовании PKI. Она значит, что subjectAltName не соответствует серверу, к которому подключается клиент. Такое часто случается при использовании динамического DNS, – сертификат имеет внутреннее имя, а не внешнее. Добавьте к сертификату внешнее имя или отключите опцию «Проверить атрибуты имени и использования у сертификата сервера» в настройках соединения: Безопасность -> Дополнительные параметры -> L2TP.

Ошибка 741: Локальный компьютер не поддерживает требуемый тип шифрования

Windows будет пытаться реализовать MPPE (слабое) шифрование, когда

  • система не использует авторизацию PPP, или
  • система не имеет pppd с поддержкой MPPE, или
  • MPPE поддерживается, но не скомпилировано с ядром (или как модуль)

тогда происходит данная ошибка.

Если используется авторизация PPP, рекомендуется исправить pppd или ядро (с минимальными изменениями конфигурации), даже если нет смысла в двойном шифровании. Если система не использует авторизацию PPP, или двойное шифрование однозначно не требуется, тогда отключите его на вкладке Безопасность.

ЗаметкаСоединение всё же так или иначе защищено шифрованием IPsec, отключится только потребность в MPPE.

Mac OS X

Mac OS X клиенты должны быть требовательны к рекомендациям, с которыми они соглашаются. В частности:

  • dh_group должен быть .
  • my_identifier должен быть адресом, а не полным именем домена (адрес используется по умолчанию, таким образом просто уберите эту строку из racoon.conf).

Mac OS X не будет подключаться, если subjectAltName не соответствует имени сервера, с которым он соединяется. В отличие от Vista, эта проверка не может быть отключена.

Также, Mac OS X не подключится, если сертификат сервера содержит поля «Расширенное использование ключа» (EKU) (кроме устаревших ikeIntermediate). В частности, при использовании сертификатов из утилиты easy-rsa OpenVPN, добавляются EKU «TLS WWW Сервер» или «TLS WWW Клиент», поэтому такие сертификаты не будут работать. Однако, они всё же могут быть использованы Mac OS X клиентом, поскольку его интересуют только сертификаты сервера.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *