Настройка VPN сервера на базе Ubuntu Создание защищенных

advertisement
Настройка VPN сервера на базе Ubuntu
Создание защищенных каналов является важной задачей в работе корпоративных сетей. Они
могут применяться для защиты передаваемых данных между филиалами, чтобы объединить
офисы в единую сеть, также для подключения удаленных пользователей к корпоративной сети с
целью использования ее внутренних ресурсов или просто для обхода ограничений в локальной
сети. Вот как раз, для решения этих задач можно использовать OpenVPN.
Рассмотрим сценарий подключения удаленных пользователей, которые смогут подключаться к
нашей локальной сети снаружи, а также выходить в интернет через офисную сеть.
Например, данный сценарий позволяет подключаться к своей домашней сети и обходить
ограничение локальной сети в который вы находитесь.
Схема работы сети:
Рассмотрим схему более подробно:
DNS запросы у нас будут идти по не защищенному каналу, ведь доступ в интернет у нас все таки
есть, мы будем пользоваться DNS сервером от Гугла, а вот содержимое того что запрашивается
будет идти по защищенному каналу между клиентским ПК и OpeтVPN сервером, а сервер уже
будет передавать данные наружи, получать ответ и возвращать их нам по VPN каналу. Также
передаваемые между VPN клиентом и VPN сервером еще и сжимаются, правда это создает
нагрузку на ЦПУ сервера, но не особо сильную. Для примера виртуальная машина с одним ядром
и 1Гб ОЗУ имеет, при закачке торретов на скорости 30Мбит/с загрузку по ЦПУ в районе 32%, а по
использованию ОЗУ +112Мб.
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 в зависимостях. О пакетах которые прописаны в
зависимостях беспокоиться не надо, они будут установлены автоматически с 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 nano /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
Затем в файл /etc/ppp/chap-secrets добавляем пользователей которые будут иметь право
подключатся к VPN-сети.
Набираем в Терминале:
sudo nano /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 должен быть доступен с любой
точки мира, где только есть интернет.
Download