В этой статье мы рассмотрим настройку PPTP–VPNсервера в Ubuntu. VPN сервер – это очень полезная в хозяйстве вещь, обеспечивающая безопасное, шифрованное подключение к локальной сети (напр. домашней сети) удаленных компьютеров, смартфонов и подобных устройств. Например, свой VPN сервер позволит вам:
- Обеспечить конфиденциальность переданных и полученных данных, когда вы (ваш ноутбук, смартфон) находитесь в недоверительной сети, и существует угроза со стороны этой сети.
- Безопасно управлять сервером через Remote Desktop, ведь пароль на общий доступ к экрану обычно передается в открытом виде (исключение – удаленный рабочий стол в Mac OS X и управление им с помощью Apple Remote Desktop), из-за чего совершенно недопустимо подключаться к рабочему столу напрямую через Интернет.
- То же самое можно сказать, если вы пользуетесь классическим FTP для передачи файлов – протокол также не обеспечивает механизма безопасной аутентификации, из-за чего при возможности стараются использовать SFTP.
- Безопасно обмениваться данными как с сервером, так и с компьютерами составляющими вашу локальную (домашнюю) сеть (при условии отсутствия атаки ХПВК, Хакеры Прямо В Квартире).
Вообще говоря, VPN обеспечит вам зашифрованный виртуальный туннель между сервером и удаленной машиной, со всеми вытекающими отсюда следствиями. Если представить Internet в виде трубы, то VPN создает внутри нее трубу меньшего диаметра, доступную только для «своих».
Теперь, когда мы рассмотрели сплошные преимущества VPN, самое время познакомиться с технологией более детально, и разобраться какие разновидности VPN существуют.
VPN (Virtual Private Network — виртуальная частная сеть) — обобщённое название технологий, позволяющих построить логическую сеть поверх другой сети (например, Интернет). Благодаря использованию средств защиты (аутентификация, шифрование), технологии VPN обеспечивают конфиденциальность данных, не смотря на то, что информация физически передается по общедоступным каналам (Интернет). Подробнее о VPN на Википедии:
http://ru.wikipedia.org/wiki/VPN
На сегодняшний день существует несколько реализаций VPN:
PPTP (англ. Point-to-point tunneling protocol) – туннельный протокол типа точка-точка, позволяющий компьютеру устанавливать защищённое соединение с сервером за счёт создания специального туннеля в стандартной, незащищённой, сети. PPTP удалось добиться популярности благодаря тому что это первый VPN протокол, поддерживаемый корпорацией Microsoft. Все версии Microsoft Windows, начиная с Windows 95 OSR2, включают в свой состав PPTP-клиент. Наиболее простой в настройке вариант подключения. К сожалению, большинство интернет провайдеров по различным соображениям блокируют работу PPTP подключений. Также следует иметь ввиду, что разработчик протокола (Microsoft) рекомендует отказываться от использования PPTP в пользу более защищенного L2TP-over-IPSec, из-за уязвимостей, которые есть в PPTP. Поддержка PPTP в современных продуктах (например Windows 7, Mac OS X 10.6, iOS 4) существует лишь для совместимости с существующими продуктами и технологиями, и совершенно ничего не говорит об актуальности PPTP.
L2TP (англ. Layer 2 Tunneling Protocol) – протокол туннелирования второго (канального по модели
OSI ) уровня, сочетающий в себе протокол эстафетной передачи на втором уровне (L2F) от Cisco и туннельный протокол точка-точка (PPTP) от Microsoft. По общему мнению, протокол L2TP вобрал в себя лучшие черты PPTP и L2F. Позволяет организовывать VPN с заданными приоритетами доступа, однако не содержит в себе средств шифрования и механизмов аутентификации. Поэтому, для создания защищённой VPN его используют совместно с
IPSec, который предоставляет конфиденциальность, аутентификацию и целостность. По различным мнениям, является наиболее защищенным вариантом VPN подключения, несмотря на сложность настройки.
OpenVPN – свободная реализация технологии Виртуальной Частной Сети (VPN) с открытым исходным кодом для создания зашифрованных каналов типа точка-точка или сервер-клиенты между компьютерами. Она позволяет устанавливать соединения между компьютерами находящимися за NAT-firewall без необходимости изменения его настроек. Требует установки дополнительного программного обеспечения для всех ОС.
Как уже было сказано в начале статьи, мы рассмотрим установку и настройку PPTP VPN, не смотря на то, что этот тип VPN соединения считается самым небезопасным по сравнению с остальными. Тем не менее, PPTP можно считать достаточным для «личного» применения, кроме того он чрезвычайно прост в настройке, что, наверное, и обуславливает (к сожалению) его популярность. Благодаря своей простоте, PPTP будет хорошим началом для знакомства с технологиями VPN вообще.
Установка и настройка PPTP
Итак, с теоретическим вступлением разобрались, приступим непосредственно к практике. Нам нужно будет установить пакет pptpd, который и является собственно PPTP-сервером, а также несколько пакетов которые прописаны у pptpd в зависимостях (это, возможно, bcrelay). О пакетах которые прописаны в зависимостях беспокоиться не надо, они будут установлены автоматически с pptpd.
Если у вас еще не установлен пакет pptpd – запускаем его установку следующей командой:
sudo apt-get install pptpd
Теперь перейдем к настройке параметров VPN-сервера, и начнем с файла /etc/ppp/pptpd-options.
Вводим в Терминале:
sudo pico /etc/ppp/pptpd-options
В этот файл можно скопировать примерно такое содержимое (вам наверняка прийдется изменить адрес ms-dns на DNS который используется в вашей сети):
# Название сервиса для аутентификации
# (должно совпадать со вторым полем в записях /etc/ppp/chap-secrets)
name pptpd
# Откажемся работать с явно ненадежными механизмами проверки пароля,
# такими как PAP, CHAP и MS CHAP v1
refuse-pap
refuse-chap
refuse-mschap
# Разрешим аутентификацию пользователей
# по самому защищенному из протоколов — MS CHAP v2:
require-mschap-v2
# Потребуем максимально возможный для PPTP
# механизм шифрованная mppe-128
require-mppe-128
# Адрес DNS-сервера, указываемого клиентам:
# (У меня это локальный адрес роутера)
ms-dns 10.0.0.1
# Включение этого параметра позволяет PPTP-клиентам работать
# с локальной сетью без добавления правил маскарадинга (NAT)
# в цепочки брандмауэра iptables. Если используются
# цепочки iptables, этот параметр следует закомментировать.
# proxyarp
# Чтобы не сбивался маршрут по умолчанию:
nodefaultroute
lock
nobsdcomp
Вот пример такого же конфигурационного файла от разработчиков, с оригинальными комментариями:
http://poptop.sourceforge.net/dox/options.pptpd.txt
После этого правим файл /etc/pptpd.conf выполнив в Терминале:
sudo pico /etc/pptpd.conf
Вот как этот файл выглядит у меня:
option /etc/ppp/pptpd-options
logwtmp
localip 192.168.18.1
remoteip 192.168.18.2-254
# Включим передачу VPN-клиентам широковещательных пакетов,
# которые сервер получает по сетевому интерфейсу eth0:
bcrelay eth0
# Смотрим, чтобы было закомментировано,
# при включении данного параметра IP-адрес клиента не передается
# скриптам ip-up через демон pppd:
# noipparam
Наиболее полную русскую документацию по файлам pptpd-options и pptpd.conf вы найдете здесь: «
Описание опций /etc/pptpd.conf и /etc/ppp/options.pptpd»
Затем в файл /etc/ppp/chap-secrets добавляем пользователей которые будут иметь право подключатся к VPN-сети. Набираем в Терминале:
sudo pico /etc/ppp/chap-secrets
И добавляем в этот файл информацию в таком виде:
# Secrets for authentication using CHAP
# client server secret IP addresses
andrey pptpd andrey12 *
Таким образом, мы наделили пользователя andrey с паролем andrey12 правом подключаться к нашей VPN сети. Пользователю andrey будет выдаваться первый доступный IP адрес из указанного диапазона. Если же необходимо, чтобы пользователю всегда выдавался один и тот же IP адрес, укажите желаемый IP вместо «*». Обратите внимание на название сервиса – pptpd – оно должно быть таким же, как указано в параметре name в файле /etc/ppp/pptpd-options.
С настройками VPN-сервера мы завершили, теперь нужно его перезапустить для того, чтобы изменения которые мы внесли вступили в силу. Для этого выполним в Терминале:
sudo /etc/init.d/pptpd restart
Если необходимо, чтобы для подключенных удаленных клиентов был доступен интернет через VPN, открываем /etc/rc.local и НАД ‘exit 0′ добавляем такие строки:
# PPTP IP forwarding
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
и раскомментируем эту строчку в файле /etc/sysctl.conf:
net.ipv4.ip_forward=1
В случае если ваш VPN сервер не подключен напрямую к интернету, вам скорее всего понадобится направить порт TCP-1723 и «протокол 47», он же
GRE, на локальный IP адрес VPN сервера. Обратитесь к инструкции по настройке роутера чтобы выполнить необходимые шаги. Очевидно, что у сервера за роутером должен быть постоянный локальный IP, а у самого роутера – постоянный «внешний» IP, либо прийдется воспользоваться услугой «динамический DNS», но это совсем другая тема.
Перезагружаем сервер. Можно пробовать подключаться. Ваш VPN должен быть доступен с любой точки мира, где только есть интернет.