Сайт о телевидении

Сайт о телевидении

» » Настройка сети и ВПН подключения «вручную» в Linux

Настройка сети и ВПН подключения «вручную» в Linux

Настройка с помощью Network Manager"а

Как бы там ни было, но все таки опиши настройку впн с помощью network-manager"а. Эта настройка вполне подойдет тем, у кого в подключении к сети используется автоматическое получение IP адреса с помощью DHCP.

1. Устанавливаем два необходимых нам пакета:
#apt-get install pptp-linux network-manager-pptp
Так как этих пакетов по умолчанию нет на диске с убунтой, а впн часто приходится настраивать на машине, у которой больше нет другого выхода в интернет, то советую заранее припастись этими пакетами с официального репозитория. Для этого заходим на сайт packages.ubuntu.com/ , там ищем два эти пакета, закачиваем их и в дальнейшем устанавливаем на нужной нам машине.
2. Если в аплете Network Manager не появился пункт «VPN соединения»(VPN Connections) или он не будет открываться, то надо перелогиниться или даже лучше - перезагрузиться.
3. Нажимаем левой клавишей мыши (по правой кнопке вызывается другое меню) по значку Network Manager"а и в выпавшем меню выбираем «VPN соединения» - «Настройка VPN»(Configure VPN). Добавляем новое соединение и выставляем все нужные опции для этого соединения.
4. После этого, ваше соединение должно появиться в меню «VPN соединения», если оно вдруг не появилось - перелогиньтесь или перезагрузитесь (ну что я могу поделать, на столько, все еще, сырой этот network-manager).
5. Все теперь можете подключаться к созданному вами впн соединению (а также и отключаться, выбрав пункт меню в Network Manager"е).

#apt-get install pptp-linux

Как я уже описывал выше в разделе установки с помощью network-manager"а, впн часто приходится настраивать на машине, у которой больше нет другого выхода в интернет, поэтому советую заранее припастись этим пакетом с официального репозитория packages.ubuntu.com/.

2. Редактируем файл options.pptp:
#nano /etc/ppp/options.pptp


lock noauth nobsdcomp nodeflate persist

Не буду описывать каждый из параметров, опишу лишь некоторые:
persist - этот парметр пытается по новой открыть соединение, когда оно закрывается;
nodeflate - не использовать deflate сжатие (хотя говорят с ним работает быстрее, не знаю - не проверял).
Также, если у вас в соединении используется шифрование, то добавляем одну из строк, в зависимости от типа шифрования - require-mschap-v2, require-mppe-40, require-mppe-128, require-mppe.

3. Создаем файл подключения /etc/ppp/peers/vpn (название vpn можете заменить на любое другое, но если замените, не забывайте менять его дальше в этой статье)

#nano /etc/ppp/peers/vpn

Вставляем туда следующие строки:
maxfail 0 lcp-echo-interval 60 lcp-echo-failure 4 defaultroute pty "pptp vpn.ava.net.ua --nolaunchpppd" name sukochev remotename PPTP +chap file /etc/ppp/options.pptp ipparam vpn

Внимание!!! Обязательно замените следующие опции на ваши:
Вместо vpn.ava.net.ua впишите адрес вашего впн сервера (можно использовать IP сервера). Вместо sukochev вставляете ваш логин подключения.
Опишу некоторые параметры:
maxfail 0 - всегда пытаться подключиться при отсутствии связи;
lcp-echo-interval - интервал времени, по прошествии которого, происходит опрос удаленной стороны;
lcp-echo-failure - количество не отвеченных запросов удаленной стороны, после чего система считает, что нас отключили;
defaultroute - устанавливаем маршрут по умолчанию;
+chap - тип аутентификации. Помимо +chap может использоваться тип +pap.
file - читать дополнительные настройки из заданного файла.
Также можно добавить, если нужно, следующие параметры:
deflate 15,15 - использовать deflate сжатие (в файле options.pptp не должно быть параметра nodeflate);
mtu - максимальный размер передаваемого пакета (изменяют этот параметр обычно тогда, когда часто отключается соединение или не открываются некоторые сайты);
mru - максимальный размер получаемого пакета.

4. Редактируем файл /etc/ppp/chap-secrets (если используется тип аутентификации PAP, то /etc/ppp/pap-secrets соответственно)

#nano /etc/ppp/chap-secrets

Вставляем туда строку, типа:

Sukochev PPTP password *

Внимание!!! Замените sukochev на свой логин, а password на ваш пароль для подключения.
5. Если это необходимо, то прописываем в файл /etc/network/interfaces нужные роуты. Например у меня роуты прописаны для того, чтобы при включенном впн-подключении я мог пользоваться местной локальной сетью. Вот пример моих роутов (те что начинаются на up route), у вас они естественно будут отличаться:

Auto eth1 iface eth1 inet dhcp up route add -net 10.1.0.0 netmask 255.255.0.0 gw 10.1.45.1 dev eth1 up route add -net 10.3.0.0 netmask 255.255.0.0 gw 10.1.45.1 dev eth1

Не забываем после изменения файла /etc/network/interfaces перезапустить сетевые подключения:

#/etc/init.d/networking restart

6. Теперь можете включать и выключать впн подключение с помощью следующих команд:
Включение

Выключение

Автоматическое подключение VPN при загрузке системы

Для этого редактируем файл /etc/network/interfaces
#nano /etc/network/interfaces

И вставляем в конец фйла следующие строки:
auto ppp0 iface ppp0 inet ppp provider vpn pre-up ip link set eth1 up up route del default up route add default dev ppp0

Где eth1 - это интерфейс сетевого устройства, через которое подключается впн-соединение, а vpn - название впн-соединения, которое вы создали в папке /etc/ppp/peers/.

VPN – Virtual Private Network (виртуальная частная сеть) – простыми словами, это служба, которая обеспечивает связь между удалёнными точками, путём объединения их в одну общую сеть. Протокол связи – PPPoE (point-to-point-over-ethernet), т.е. это туннелированное соединение с определёнными настройками шифрования, что в свою очередь позволяет не только объединить две удалённые сети в один сегмент, но и защитить такое соединение от перехвата пакетов злоумышленниками.

VPN можно использовать не только сетевым администраторам для нужд крупных компаний (объединение двух офисов), но и простым пользователям. Например для сетевых баталий, в случаях, когда игра не имеет официального сервера и не подразумевает неофициальные, а поиграть с товарищами ну очень хочется. Тогда можно объединить 2,3,4 и более компьютеров в единую сеть. Даже если вы отдалены от товарищей и находитесь на другом континенте, пользуетесь услугами другого провайдера и прочее…

В ОС Linux служба VPN настраивается путём установки пакета pptpd и редактирования конфигурационных файлов под ваши нужды. Я постараюсь максимально понятно объяснить что к чему. Вместе с вами мы настроим VPN сервер на Linux, научимся соединять с ним Linux машины с помощью графических утилит и просто терминала. Ну и конечно же мы разберём с вами подключение из под ОС Windows.

Итак, приступаем к установке и настройке:

Пункт первый – устанавливаем пакет pptpd. В Linux Debian/Ubuntu и подобных воспользуйтесь утилитой apt-get. Кстати пакет находится обычно в стандартных репозиториях, так что дополнительно ничего подключать не надо.

apt-get install pptpd

Пункт второй – конфигурируем главный файл – pptpd-options. Лежит файлик в папке /etc/ppp и редактируется с правами администратора редактором на ваш вкус. Кстати, на всякий случай, чтобы было понятнее понять что к чему, я потрудился перевести pptpd-options на русский язык. Собственно вот он:

##############################################################################

Перевод pptpd-options на русский язык.

Вы можете использовать pptpd-options с комментариями на русском языке в своей системе.

Вы можете свободно распространять текст перевода pptpd-options со ссылкой на источник.

Конфигурационный файл pptpd-options переведён Squ1sh специально для сайт

###############################################################################

Аутентификация

Имя локальной системы аутентификации

(Должно быть вторым в файле /etc/ppp/chap-secrets) (после имени пользователя)

name pptpd

Опционально – имя домена для аутентификации.

domain mydomain.net

Префикс домена из имени пользователя до аутентификации.

(применяется если вы используете pppd с chapms-strip-domain патчем)

#chapms-strip-domain

Шифрование

На заметку – refuse-выкл. тип шифрования, require – вкл. тип шифрования

refuse-pap

refuse-chap

Включим MPPE 128-bit шифрование. На нём и будет всё завязано.

(Внимание! MPPE использует MSCHAP-V2 во время аутентификации)

require- mppe-128

Сеть и маршруты

Если pppd работает для Microsoft Windows клиентов, включите в

pppd поддержку одного или двух DNS (Domain Name Server – Сервер имён). Для linux клиентов не работает!

адресов для клиентов. Первым указывается адрес первичного DNS сервера вашей #локальной сети; Вторым — вторичный (если таковой есть)

#ms-dns 10.0.0.1

#ms-dns 10.0.0.2

По той же схеме можно указать адреса WINS серверов.

#ms-wins 10.0.0.3

#ms-wins 10.0.0.4

#Proxyarp — это одна из функциональных возможностей протокола ARP, позволяющая #имитировать принадлежность разных IP-сетей к одному Ethernet-сегменту

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

proxyarp

Не назначать маршрутом по умолчанию (defaultroute – назначение этого #соединения маршрутом по умолчанию в таблице маршрутизации)

nodefaultroute

Пишем логи

Включаем дебаггинг с записью логов.

Показать все установленные опции.

(Часто по просьбе список рассылки, чтобы поверить опции). Лично я вообще не #понял что это за вещь, и с чем её едят. Я даже сомневаюсь в правильности

#перевода… Ну да ладно, всё равно опция не важна.

Разное

Использовать блокировку портов UCPP, чтобы одновременно несколько # последовательных устройств не обращались к одному порту

Отключить BSD-Compress сжатие.

nobsdcomp

###########################################################################

Как вы могли заметить, я выделил несколько параметров жирным. Это минимальные 7 параметров для приемлемой работы VPN сервера. Т.е. ваш минимальный конфиг pptpd-options может выглядеть так:

name pptpd

require-mschap-v2

require-mppe-128

proxyarp

nodefaultroute

nobsdcomp

Его вполне хватит для того, чтобы играться по сети, или объединить 2 офиса в сеть. Но, если не указать DNS-сервера в файле pptpd-options, то невозможно будет обращаться к компьютеру по Net-Bios имени (только по ip-адресу), что создаст некоторые трудности при не статичных адресах (работающий DHCP-сервер в сети), если вы не знаете адреса, а только имя нужной машины.

________________________________________

Пункт третий – настройка адресов/диапазона адресов в VPN. Пользователь, который будет подключаться к нашей сети должен естественно получить ip-адрес. Вы можете выдавать адреса из диапазона, либо привязать каждого пользователя к определённому адресу (уж как вам нравится). Если привяжете IP к имени пользователя VPN, то можете пропустить настройку pptpd.conf, если будете выдавать адреса из диапазона – читаем внимательно. Итак, файл pptpd.conf. Находится он прямо в корне папки /etc. Из него нам нужно только 2 параметра, их я и перевёл. Листаем файл в самый конец и видим следующее:

IP-адрес сервера в локальной сети

localip 192.168.1.1

Диапазон адресов для клиентов PPTP-сервера

remoteip 192.168.1.50-254

По этому файлу всё.

Пункт четвёртый – заводим пользователей VPN. Список пользователей, паролей и привязанных к ним ip-адресов хранится в файле chap-secrets. Лежит он в /etc/ppp.

Приведу 2 примера добавления пользователей:

#Пример №1 – пользователь получает ip-адрес из указанного нами в /etc/pptpd.conf диапазона адресов

Username pptpd password “*”

#Пример №2 – привязка ip-адреса к аккаунту VPN пользователя.

Username pptpd password “192.168.1.52

Т.е. принцип таков – сначала пишем логин пользователя, потом имя службы (ту, котоую указали в параметре name в начале файла pptpd-options), затем идёт пароль, и в кавычках указываем ip-адрес, или * если выдавать из диапазона. Вот собственно и вся настройка.

Кстати, после того, как отредактируете все нужные файлы – перезапустите службу

/etc/init.d/pptpd restart

Естественно к вашему серверу должен быть доступ извне, т.е. в правилах iptables по необходимости добавить следующее:

Разрешить всем протокол GRE iptables -A INPUT -p gre -j ACCEPT # Разрешить соединение с VPN-сервером; iptables -A INPUT -m tcp -p tcp —dport 1723 -j ACCEPT

ВНИМАНИЕ! Это только половина статьи! О том, как подключаться разными клиентами на разных операционных системах, а так же маршрутизации и приведение примера объединения двух и более офисов в 1 сеть, мы расскажем вам позже.

2015-12-12T18:46:56+00:00 admin Обзоры Статьи pptpd,VPN,Администрирование,Безопасность,Установка

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

Но когда в Ubuntu, Fedora, OpenSUSE или других дистрибутивах Linux доходит дело до VPN, у пользователей могут возникнуть проблемы. Для разработчиков важнее пользователи Windows, а Linux до сих пор еще не в приоритете. В этой статье мы рассмотрим лучшие VPN для Linux, которые вам обязательно будут полезными. В списке будут как платные так и бесплатные сервисы.

Обычно, для подключения VPN в Linux используются такие технологии, как OpenVPN, OpenConnect или NetworkManager. Но будет намного лучше, если VPN провайдер выпускает свой клиент для Linux. Его намного проще настроить, и здесь есть намного больше функций. Большинство VPN в этом списке имеют свой клиент для операционной системы Linux.

1. PIA - Private Internet Access

Провайдер Private Internet Access - это один из лучших и самых распространенных VPN на сегодняшний день. Он доступный, позволяет подключить сразу несколько устройств, предлагает приемлемую скорость работы сети, а также полностью безопасен. В том числе, это один из самых популярных VPN сервисов для Linux. Это вполне заслужено. Здесь используется OpenVPN с шифрованием с помощью 256 битного AES ключа. У сервиса есть свой клиент как для Debian, так и для Red Hat систем. Но учитывая все преимущества сервиса, стоит он не дешево - 3,33 $ в месяц.

2. ExpressVPN

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

Список серверов всегда будет в актуальном состоянии, а пользователи могут переключиться между протоколами UDP и TCP при работе по OpenVPN. Самым большим недостатком этого VPN для Linux есть цена. Сервис стоит вдвое больше чем PIA. В течение 30 дней сервис возвращает деньги, так что вы можете попробовать VPN бесплатно. Но у серверов более внушительные характеристики, а скорость сети намного больше.

ExpressVPN работает на Ubuntu, Fedora, Debian и CentOS. Одновременно вы можете подключить до трех устройств, а также теперь вы можете работать с netflix.

3. AirVPN

AirVPN предлагает официальные клиенты для дистрибутивов Linux - Debian, Ubuntu, OpenSUSE и Fedora. Вы можете использовать его как из командной строки, так и через графический интерфейс. Здесь больше всего настроек безопасности. Вы можете подключиться с помощью OpenVPN, SSH или SSL, а также пересылать трафик через ряд альтернативных портов. Этот сервис тоже платный, цена как и у PIA.

4. Buffered

Это новый VPN сервис, основанный в Венгрии. Вы можете подключить одновременно три устройства, а трафик неограничен. Сервис дорогой, но есть гарантия возврата денег в течение 30-ти дней. Интересной вещью есть то, что клиент может искать открытые порты на защищенных серверах. Это отличная возможность обойти страницы входа в систему, которые часто встречаются в гостиницах и аэропортах. Серверы находятся в 16-ти странах, но скорость работы очень быстрая. Клиент работает в большинстве дистрибутивов Linux.

5. Mullvad

Сервис Mullvad пошел еще дальше и предлагает клиент с открытым исходным кодом для Debian и Ubuntu. Поддерживаются такие функции, как отключение интернета, защита от утечки DNS, маршрутизация ipv6. Сервис ведет журналы, но не логи соединений, поэтому в плане безопасности он надежный. Одновременно можно использовать три соединения. Также доступно перенаправление портов. Выбор сервера ограничен, но это допустимо. На официальном сайте есть пакеты для Debian и Ubuntu, но программа будет работать в большинстве дистрибутивов. Дальше рассмотрим лучшие бесплатные VPN 2016.

6. Itshidden

Это уже бесплатный VPN Linux. Все сервисы, что мы рассматривали выше - платные, но они более надежны. Ни один из них не ведет логов подключений, а это значит, что к вашей информации никто не сможет получить доступ: ни злоумышленники, ни правоохранительные органы. В бесплатных сервисах все намного по-другому. Многие из них ведут логи, а также используют небезопасные протоколы связи.

Например, этот VPN сервис использует протокол PPTP, так что она не совсем безопасна, но если аналогов нет, то использовать можно. Политика конфиденциальности заявляет, что никакие логи посещений не ведутся, так что к вашим данным по-прежнему не могут получить доступ, по крайней мере, со стороны сервера VPN.

7. SecurityKISS

Это еще один лучший бесплатный VPS для Linux, у которого есть официальный клиент для этой операционной системы. Поддерживаются различные протоколы работы в том числе SSH, FTP, RDP, Telnet и так далее. Но как и у других бесплатных VPS здесь есть несколько минусов. Компания хранит журналы и IP адреса пользователей, а это не желательно для тех, кто хочет защитить свою конфиденциальность. Также в бесплатной версии количество доступного трафика ограничено 300 мегабайт в сутки, а это очень мало.

Выводы

Даже если провайдер VPN не предоставляет официального клиента для Linux, почти все они могут быть настроены с помощью OpenVPN. В этой статье мы рассмотрели лучшие VPN для Linux, причем как бесплатные, так и платные, поэтому вы сможете выбрать то что вам нужно. Бесплатные VPN для Linux имеют свои ограничения, но в некоторых ситуациях с этим можно мириться. А вы используете VPN для работы в сети? Какие бесплатные сервисы могли бы посоветовать другим пользователям? Напишите в комментариях!

На завершение небольшая лекция, о том, что такое VPN и как работает эта технология:

Предположим, вы не доверяете VPN-сервисам, либо вас не устраивают высокие тарифы, либо хотите иметь полный контроль над сервером, с возможностью подключать сколько угодно клиентом и использовать любые протоколы. Для вас и предназначен данный раздел! Здесь мы рассмотрим процесс настройки VPN-сервера на Linux, на машине с Debian 7 64bit на борту и OpenVPN, в качестве реализации.

Процесс настройки VPN вручную состоит из нескольких этапов:

  1. Организация сертификационного центра
  2. Настройка VPN-сервера, выдача сертификата
  3. Настройка VPN клиента/ов, выдача сертификататов

Прежде всего стоит сказать, две вещи:

  1. Мы выбрали наиболее простой метод настройки - не идеальный, в плане безопасности, но чуть более универсальный и быстрый в развертывании. В любом случае, в конце данного руководства вы получите защищенную VPN-сеть, которую, при легком “допиливании напильником” можно подстроить под любые потребности и к которой легко подключать новых клиентов (ведь для большинства пользователей, это приоритет).
  2. Всё же, отдавая предпочтение самостоятельной настройке, вы теряете в географической гибкости - быстро менять IP не получится (хотя, при наличии нескольких серверов, клиент легко может между ними переключаться).

Разворачиваем сертификационный центр

Настройка VPN начинается с построения (Public Key Infrastructure) на основе x.509 сертификатов и открытых ключей - это программный комплекс, включающий в себя сам СА со списком отзыва сертификатов и софт для генерации ключей. Выдавать сертификаты можно несколькими способами:

  1. Безопасный метод Создается PKI и сертификационный центр, аналогичный софт ставится на машины клиентов. Чтобы получить сертификат, клиент должен сформировать запрос и закрытый ключ - запрос передается СА - СА подписывает его или отклоняет - подписанный сертификат передается клиенту. Передача происходит вручную, или по защищенным каналам.
  2. Сертификационный центр самостоятельно генерирует закрытый ключ и сертификат, или оные вместе в зашифрованном пакете PKCS12 - пакет передается на машину клиента — клиент может подключаться к VPN.

Мы говорили об этом выше, но повторим - сертификаты и ключи нужны для ограничения круга лиц, имеющих доступ к серверу; передавать закрытые ключи по сети крайне нежелательно (по крайней мере, в незашифрованном виде), открытый ключ распространяется свободно и математически связан с закрытым - он служит для расшифровки данных, зашифрованных закрытым ключом. А сертификаты объединяют в себе функции открытого ключа и подтверждают, что такой-то ключ принадлежит такому-то хосту, действует столько-то, и с этим ключом можно получить доступ к серверу. Проще говоря, x.509 сертификат - это улучшенный открытый ключ из философии ассиметричного шифрования.

Для настройки OpenVPN потребуется пакет openvpn - он лежит в репозиториях большинства Linux-систем.

# apt-get update

# apt-get install openvpn

После установки, по пути “/usr/share/doc/openvpn/examples/” должна появиться директива /easy-rsa/2.0. Если её нет - дополнительно установите пакет easy-rsa:

# apt-get install easy-rsa

И тогда нужная папка появится по пути “/ush/share/easy-rsa”

Настройку СА не стоит производить из под root [в идеале - это вообще должна быть отдельная машина, не подключенная к сети], но так как в нашем случае СА и VPN-сервер - одна и та же машина, то будем работать под root. В противном случае, лучше создать для СА отдельного пользователя без рутовых прав.

# useradd - s /bin/bash -m ca

# passwd ca

Дабы избежать удаления всех конфигов при очередном обновлении, перенесем утилиту easy-rsa в директиву конфигов openvpn:

# sudo cp -R /usr/share/doc/openvpn/examples/easy-rsa/ /etc/openvpn

# sudo cp -R /usr/share/easy-rsa/ /etc/openvpn

И перейдем в директорию easyrsa:

# cd /etc/openvpn/easy-rsa/2.0

В данной директории лежат скрипты для генерации сертификатов и формирования запросов на сертификаты, примеры конфига openssl, и главное - подробный файл README, объясняющий, как это всё работает. Распакуйте его утилитой gzip:

# gzip -d README.gz

И, желательно, изучите.

Файл vars - своеобразный шаблон, на основании которого заполняются поля сертификатов - его мы и отредактируем в первую очередь. Нас интересуют лишь следующие строки:

# Битовая длина алгоритма шифрования, которым шифруется закрытый ключ. Если вы параноик - измените значение на 2048 - это замедлит взлом, но и скорость VPN-соединения слегка упадет.

export KEY_SIZE=1024

# Срок годности в днях по умолчанию, для корневого сертификата сертификационного центра.

export CA_EXPIRE=3650

# Срок годности по умолчанию для всех сертификатов.

export KEY_EXPIRE=3650

# Информация о владельце сертификата. Ни на что, особо, не влияет, если вы разворачиваете сеть VPN для себя.

export KEY_COUNTRY="RU" #Код страны владельца

export KEY_PROVINCE="RU" #Код области владельца

export KEY_CITY="Moscow" #Город

export KEY_ORG="cs-companion" #Организация

export KEY_EMAIL=" Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. " #контактный email

export KEY_EMAIL= Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. #контактный email 2

Сохраним, применим изменения и очистим папку.keys скриптом./clean-all:

source ./vars

source ./clean-all

(Важно: если после изменений файл vars не запускается - сделайте его исполняемым: “chmod +x ./vars”)

Шаблон готов - можно создавать корневой сертификат СА, и на его основе создавать сертификаты остальных пользователей. Для генерации корневого сертификата выполним:

# ./build-ca

Во время генерации вам предложат самостоятельно заполнить поля, хотя можно просто жать Enter - тогда они заполнятся на основании шаблона.

Итак, после генерации в папке./keys появилось два ключа:

  • ca.crt - открытый
  • ca.key - закрытый.

Наверняка вам будет интересно, как же выглядит этот сертификат изнутри - как-то так:

Или на человеческом:

Посмотреть содержимое сертификата в виде текста можно средствами openssl, вот такой командой:

# openssl x509 -in [путь/к/сертификату] -noout -text

В сгенерированный нами сертификат входит:

  1. Версия
  2. Уникальный серийный номер
  3. Информация о держателе (организация, имя, контакты).
  4. Сроки начала и конца действия сертификата
  5. Информация о использумых алгоритмах.
  6. Открытый ключ
  7. Цифровая подпись сертификата

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

Немного теории.

Файл ca.key должен лежать только на машине самого сертификационного центра, а вот открытый - напротив, должен передаваться на каждую машину, которая собирается сделать запрос на сертификат и затем получить доступ к VPN-серверу.

Попробуем объяснить, как это работает:

У СА есть свой сертификат и закрытый ключ. С помощью закрытого ключа трафик шифруется, с помощью открытого - расшифровывается - это значит, что у VPN-сервера должен быть:

  1. свой открытый и закрытый ключ
  2. открытый ключ СА
  3. открытые ключи всех клиентов,

У СА должен быть:

  1. свой закрытый и открытый ключ,
  2. открытый ключ сервера и всех клиентов.

А у всех клиентов, которые будут взаимодействовать с сервером:

  1. свои закрытые и открытые ключи
  2. открытый ключ сервера и СА

Но всё это - в идеале, то есть в случае, если сертификаты выдаются по запросу. Мы же используем протокол PKCS12, значительно упрощающий развертывание OpenVPN сети — пакеты с сертификатами мы будем генерировать самостоятельно, а клиенту нужно только прописать путь к нему в конфигах, и IP-адрес сервера.

Сертификационный центр готов, теперь сгенерируем сертификат для самого сервера:

# ./build-key-server [имя-сертификата-сервера]

Во время генерации, вас попросят ввести пароль, которым будем защищен закрытый ключ сервера - запомните его, ведь он вам ещё понадобится.

Помимо ключей, OpenVPN использует дополнительные средства защиты - хэш-суммы и протокол Диффи-Хеллмана. Не будем углублятся в теорию работы второго - просто сгенерируйте одноименный файл командой:

./build-dh

Итак, вернемся в папку./keys, и что мы видим:

  1. dh1024.pem - Файл Диффи-Хеллмана
  2. ca.crt - открытый ключ (сертификат) СА
  3. ca.key - закрытый ключ СА
  4. vpnserver.key - закрытый ключ сервера
  5. vpnserver.crt - сертификат сервера.

Все они, кроме закрытого ключа СА, должны быть перемещены в главную директорию VPN-сервера - /etc/openvpn.

Если вы дошли до этого этапа - значит наш СА работает как часы. Следующим шагом будет настройка самого VPN-сервера и клиентов, а пока подробнее остановимся на том, как генерировать и удалять сертификаты.

Работа с CRL и выдача сертификатов.

Как генерировать сертификаты:

build-key [имя] - сгенерировать пару закрытый/открытый сертификат.

build-key-pass [имя] - аналогично, но сертификат защищен паролем, который спрашивается каждый раз при использовании.

build-key-pkcs12 - сгенерировать сертификаты в виде pkcs12-пакета.

Что же такое этот pkcs12-пакет? Цитируя руководство openssl - “Some would argue that the PKCS#12 standard is one big bug:-)” - и, тем не менее, это наиболее удобный способ распространения сертификатов. Как уже говорилось - это своеобразный пакет, зашифрованный на стороне сервера, и включающий в себя связку сертификатов - открытый СА; закрытый и открытый клиента. Поступая к клиенту, софт OpenVPN посылает с ним запрос на VPN-сервер, а сервер, если такой пакет был сгененерирован подходящим центром сертификации, распознает его и пускает клиента в свою сеть. С p12 пакетами вы получаете дополнительный слой шифрования пакетов и больше нет необходимости пересылать каждый сертификат отдельно.

Сгенерируем такой пакет для нашего клиента:

# ./build-key-pkcs12 lain.iwakura.Vorona

Во время генерации вы должны ввести пароли [пароль закрытого ключа и пароль экспорта], последний из которых будет спрашиваться при каждом подключении, а также заполнить данные сертификата. После этого - можно передавать пакет на машину клиента - отправим пакет lain.iwakura.Vorona.p12 на машину клиента под Arch Linux, через scp.

# scp ./keys/lain.iwakura.Vorona.p12 user@ip:/home/

Позже, при настройке клиента, он нам понадобится.

Как отзывать сертификаты

Выполните “./list-crl” - результатом выполнения будет создание списка отзыва сертификатов - CRL. CRL необходим для того, чтобы администратор СА смог в любой момент запретить какому-либо хосту доступ к серверу со своим сертифкатом.

Отозвать сертификат предельно просто - командой:

./revoke-full [имя]

К примеру, сгенерируем pkcs12 сертификат iwakuralain и тут же отзовем:

./revoke-full iwakuralain

Посмотреть список отозванных сертификатов можно командой:

./list-crl

А самой базой данных отозванных сертификатов является файл crl.pem из папки keys. После отзыва очередного сертификата необходимо скопировать его в папку /etc/openvpn VPN-сервера и перезагрузить, для обновления базы данных:

# /etc/init.d/openvpn restart

new player 27 мая 2011 в 22:04

Настройка сети и ВПН подключения «вручную» в Linux

  • Чулан *

Мы будем настраивать параметры сети используя дистрибутив Ubuntu, для других дистрибутивов настройка будет незначительно отличатся.

В некоторых дистрибутивах Вы найдете утилиту настройки сети «network-manager», которая позволяет настраивать параметры сети через графический интерфейс. В данном руководстве мы откажемся от её использования и будем настраивать всё сами, вручную.

Так как ВПН часто приходится настраивать на машине, у которой больше нет другого выхода в интернет, то советую заранее припастись пакетом pptp-linux с официального репозитория. В некоторых дистрибутивах пакет pptp-linux находится на установочном диске. В дальнейшем он нам понадобится для настройки VPN-соединения.

Настройка сети
1. Запускаем терминал . Applications (Приложения) - Стандартные - Терминал.
Выполним такую команду sudo apt-get remove network-manager , далее пароль пользователя и удаляем «network-manager».

2. Вводим команду ifconfig -a , перед нами появляется список всех(активных и неактивных) сетевых устройств, которые именуются как eth0, eth1, eth2 и т.д. У меня стоит одна сетевая карта (eth0 ) к которой подключена локальная сеть, поэтому в примерах будет использоваться eth0 .

3. Почти вся информация о настройках сети и методах ее активации хранится в файле /etc/network/interfaces, именно с ним мы и будем работать. Вводим в терминале sudo nano /etc/network/interfaces , далее пароль пользователя. Итак, мы запустили консольный редактор nano, с помощью которого и будут редактироваться файлы настроек. Перемещение курсора осуществляется с помощью стрелок вверх, вниз, влево, вправо:-). В открытом файле будут такие строки:

Auto lo
iface lo inet loopback

auto lo - говорит о том, что локальная петля lo поднимается автоматически при загрузке системы.
Интерфейс lo - интерфейс обратной петли и позволяет компьютеру обращатся к самому себе. Интерфейс имеет ip-адрес 127.0.0.1 и необходим для нормальной работы системы.

4. Редактируем файл и добавляем несколько строк:

Auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address xxx.ххх.ххх.ххх
netmask 255.255.255.0
gateway xxx.ххх.ххх.1

auto eth0 - говорит о том, что сетевая карта eth0 поднимается автоматически во время загрузке системы.
iface eth0 inet static - указывает, что интерфейс(iface) сетевой карты(eth0) находится в диапазоне адресов ipv4(inet) со статическим ip(static)
address xxx.ххх.ххх.ххх - статический ip адрес, тут Вы должны записать свой ip
netmask - стандартная маска сети
gateway xxx.ххх.ххх.1 - ip адрес основного шлюза, также замените на ip адрес Вашего шлюза

Редактирование закончено. Жмем Ctrl+O для сохранения, Ctrl+X для выхода из консольного редактора nano.

5. Необходимо записать адреса основного и вспомогательного серверов DNS в файл /etc/resolv.conf. Снова идем в терминал и набираем sudo nano /etc/resolv.conf, далее пароль пользователя. Добавляем строку:

nameserver xxx.xxx.xxx.1
nameserver xxx.xxx.xxx.2

xxx.xxx.xxx.1 и xxx.xxx.xxx.2 - замените на ip адреса Вашего основного и вспомогательного серверов DNS. Жмем Ctrl+O для сохранения, Ctrl+X для выхода из консольного редактора nano.

Теперь перейдем к настройке VPN-соединения
Помните в начале рукаводства я просил скачать пакет pptp-linux, надеюсь он уже имеется у Вас. Пришло время его установить. Установили? Отлично, переходим дальше.

1. Снова идем в терминал и набираем sudo nano /etc/ppp/options.pptp , далее пароль пользователя. Добавляем нижеуказанные строки:

lock
noauth
nobsdcomp
nodeflate
persist

Все остальные строки просто комментируйте используя знак # в начале строки.

2. Создаем файл подключения VPN. Для этого набираем в терминале sudo nano /etc/ppp/peers/vpn
defaultroute
pty "pptp MyVPN.com --nolaunchpppd"
name MyLogin
remotename PPTP
+chap
file /etc/ppp/options.pptp
ipparam vpn

Обязательно замените значение MyLogin на Ваш логин, а MyVPN.com на адресс Вашего VPN сервера. Жмем Ctrl+O для сохранения, Ctrl+X для выхода из консольного редактора nano.

Опишу некоторые параметры:
defaultroute - устанавливаем маршрут по умолчанию;
+chap - тип аутентификации. Помимо +chap может использоваться тип +pap .
file - читать дополнительные настройки из заданного файла.

3. Редактируем файл /etc/ppp/chap-secrets. Для этого вводим в терминале sudo nano /etc/ppp/chap-secrets , далее пароль пользователя. Добавляем строку:
MyLogin PPTP MyPassword *

Замените MyLogin на свой логин, а MyPassword на Ваш пароль для подключения. Жмем Ctrl+O для сохранения, Ctrl+X для выхода из консольного редактора nano.

4. Набираем в терминале sudo nano /sbin/vpn , далее пароль пользователя. Вставляем туда следующие строки:
#!/bin/sh
case "$1" in
start)
echo -n "Starting vpn: "
pon vpn
sleep 5
route add default dev ppp0
ifconfig
echo
;;
stop)
echo -n "Stopping vpn: "
poff vpn
sleep 5
route del default dev ppp0
ifconfig
echo
;;
*)
echo "*** Usage: vpn {start|stop}"
exit 1;
;;
esac
exit 0

Жмем Ctrl+O для сохранения, Ctrl+X для выхода из консольного редактора nano.

На этом наши настройки заканчиваются. Теперь перезагрузить сетевое соединение, используясь команду sudo /etc/init.d/networking restart , далее пароль пользователя.

Для подключения ВПН набираем в терминале:
sudo sh /sbin/vpn start

Для отключения ВПН набираем в терминале:
sudo sh /sbin/vpn stop

Теги: linux vpn сеть