Skip to main content

Ўстаноўка і настройка OpenVPN на Debian 8



OpenVPN - гэта праграмны комплекс, які дазваляе абараніць ад «праслушкі» інтэрнэт-трафік карыстальніка, забяспечваючы зашыфраваную перадачу дадзеных ад прылады кліента да сервера з усталяваным OpenVPN. Выдатна падыходзіць пры выкарыстання публічных wifi кропак доступу, дзе інфармацыя можа быць перахопленая трэцімі асобамі. Або ў выпадку, калі ваш ip заблякаваны на пэўным сайце і трэба бяспечна абысці гэтае абмежаванне.



Акрамя ўстаноўкі і налады ОпенВПН на сэрвэры, неабходна ўмець наладзіць кліент для доступу з кампутара, дзе ў якасці аперацыйнай сістэмы будзе выкарыстоўвацца Windows.

Выкарыстоўваючы стандартны менеджэр пакетаў, усталюем openvpn.

  # Aptitude install openvpn 

Змест артыкула:

стварэнне сертыфікатаў

ОпенВПН ў абавязковым парадку патрабуе генерацыі сертыфікатаў для сервера і кліентаў. Гэта і лагічна, бо злучэнне ад кліента да сервера павінна быць зашыфравана.



Перайдзіце ў тэчку openvpn:

  # Cd / etc / openvpn 

Генераваць ключы мы будзем з дапамогай easy-rsa.

Ствараем тэчку з канфігурацыйнымі файламі і спасылкамі на скрыпты генерацыі сертыфікатаў:


  # Make-cadir rsa
 # Cd rsa 

Адкрыйце канфігурацыйны файл vars і зменіце параметры:

  export KEY_COUNTRY = "US"
 export KEY_PROVINCE = "CA"
 export KEY_CITY = "SanFrancisco"
 export KEY_ORG = "Fort-Funston"
 export KEY_EMAIL = "me@myhost.mydomain"

KEY_COUNTRY - пакажыце код краіны (RU, UA і г.д.);
KEY_PROVINCE - дадзены пункт не актуальны, калі вы не жывяце ў ЗША. :) Можна замяніць на XX;
KEY_CITY - ваш горад, дзе вы жывяце;
KEY_EMAIL - адрас вашай Электрапошта.

А таксама раскаментуйце радок export KEY_CN, у якасці значэння для якой пазначце імя сервера:

  export KEY_CN = "example.com" 

Усе зменныя запаўняюцца лацінкай.

Захавайце яго і запусціце яго выкананне:

  #.  vars 

Затым запусціце выдаленне старых сертыфікатаў:

  # ./clean-all 

Стварыце каранёвай сертыфікат:

  # ./build-ca 

Калі пры генерацыі каранёвага сертыфіката вы атрымаеце памылку error:0E065068:configuration file routines:STR_COPY:variable has no value:conf_def.c:618:line 198 , неабходна дадаць да файла vars радок:

  export KEY_ALTNAMES = "something" 

А пасля зноўку выканайце папярэднія каманды:. vars, ./clean-all, ./build-ca.

Наступны крок - стварэнне ключа і сертыфіката сервера.

  # ./Build-key-server server 

Пасля чаго стварыце сертыфікат і ключ для кліента:

  # ./Build-key client 

Звярніце ўвагу: для кожнага кліента варта генераваць ўласныя сертыфікат і ключ. Трэба толькі ўказваць розныя імёны (замест client) і змяняць шляхі да іх у канфігурацыйных файлах. Пры гэтым, вы можаце абараніць ключы кліентаў паролем, для гэтага выкарыстоўвайце каманду build-key-pass замест build-key.

Далей трэба стварыць ключ Диффи-Хеллмана для магчымасці выкарыстання Forward Secrecy:

  # ./build-dh 

І ключ для tls-аўтэнтыфікацыі:

  # Openvpn --genkey --secret /etc/openvpn/ta.key 

Цяпер неабходна скапіяваць серверныя сертыфікаты і ключы ў тэчку налад OpenVPN:

  # Cp keys / ca.crt keys / server.crt keys / server.key keys / dh2048.pem / etc / openvpn / 

А таксама выставіць на іх правы, якiя вырашаюць чытанне і змяненне толькі для іх уладальніка.

  # Chmod 0600 /etc/openvpn/ca.crt /etc/openvpn/server.crt /etc/openvpn/server.key /etc/openvpn/dh2048.pem /etc/openvpn/ta.key 

Абавязкова скапіруйце сабе на кампутар, напрыклад, на працоўны стол, з папкі keys ключы, неабходныя для падлучэння кліента: client.crt, client.key, ca.crt, ta.key.

На гэтым працэс падрыхтоўкі сертыфікатаў скончаны.

Настройка сервера

У каталогу / usr / share / doc / openvpn / размяшчаецца файл-прыклад для настройкі сервера Openvpn. Скапіруйце яго ў каталог / etc / openvpn / і разархівуецца:

  cd / etc / openvpn; cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz / etc / openvpn /; gunzip server.conf.gz 

Зараз разгледзім неабходныя для працы openvpn параметры.

Порт, на якім Openvpn будзе прымаць злучэнні. Па-змаўчанні, 1194. Рэкамендую змяніць яго ў мэтах утойвання. Можна нават замаскіраваць опенвпн пад Web-сервер, паказаўшы порт 80.

  port 20100 

Прапісваем шляху да файлаў сертыфікатаў і ключа сервера.

  ca ca.crt
 cert server.crt
 key server.key 

Шлях да ключа Диффи-Хеллмана.

  dh dh2048.pem 

Могуць быць паказаны як шляху адносна каталога / etc / openvpn (калі файлы размешчаны ў ім), так і абсалютныя.

Знаходзім і раскомментируем радок:

  push "redirect-gateway def1 bypass-dhcp" 

Яна патрэбна для магчымасці выхаду ў інтэрнэт праз сервер ОпенВПН. Калі яе не раскаментаваць, то будуць даступныя толькі кампутары ўнутры сеткі.

Таксама трэба паказаць dns-серверы для тых, хто падлучаецца кліентаў.

  push "dhcp-option DNS 213.183.57.55"
 push "dhcp-option DNS 87.98.175.85" 

У залежнасці ад месцазнаходжання сервера, можна падабраць іншыя dns-серверы, напрыклад, на праекце OpenNIC .

Далей знаходзім і раскомментируем параметр tls-auth.

  tls-auth ta.key 0 

Увага! У наладах кліента апошняя лічба гэтага параметру павінна быць заменена на 1 - tls-auth ta.key 1.

Ледзь ніжэй у канфігурацыйным файле варта пералік даступных шыфраў. Раскаментуйце шыфр AES-128-CBC.

  cipher AES-128-CBC # AES 

Пры неабходнасці, яго можна замяніць на AES-256-CBC. У канфігурацыйным файле кліента шыфр павінен быць ідэнтычны сервернага шыфра.

Таксама дадайце параметр auth. Па-змаўчанні, для аўтэнтыфікацыі выкарыстоўваюцца ключы sha1 даўжынёй 160 біт, але алгарытм sha1 прызнаны уразлівым. Пры ўказанні ніжэй прапісаныя параметру будуць выкарыстоўвацца ключы SHA512 даўжынёй 512 біт.

  auth SHA512 

А таксама параметр tls-version-min, які вызначае версію tls. У дадзеным выпадку, апошнюю версію 1.2. Увага! Network Manager не падтрымлівае (на момант напісання артыкула) гэты параметр. Таму, калі вы плануеце падлучацца да ВПН сервера праз Network Manager, то гэты параметр НЕ прапісваем у наладах сервера.

  tls-version-min 1.2 

OpenVPN ня варта запускаць ад імя root. Таму раскаментуйце радкі:

  user nobody
 group nogroup 

Не лішнім будзе ўключэнне логаваў для OpenVPN. Асабліва, на першым часе выкарыстання пасля налады для пошуку памылак і г.д.

  log /var/log/openvpn.log 

Усе астатнія параметры канфігурацыйнага файла /etc/openvpn/server.conf пакіньце са значэннямі па-змаўчанні. На гэтым налада сервера OpenVPN скончаная.

Актывуйце openvpn камандай:

  # Systemctl enable openvpn 

І перазапусціце:

  # Service openvpn restart 

Таксама нялішнім будзе праверыць лог на наяўнасць памылак.

Перанакіраванне трафіку праз OpenVPN

Каб мець магчымасць выхаду ў інтэрнэт праз сервер опенвпн, неабходна сёе-тое зрабіць для гэтага.

1. Наладзіць sysctl

У кансолі запусціце каманду:

  # Sysctl net.ipv4.ip_forward 

Калі выснова каманды будзе роўным net.ipv4.ip_forward = 1, то змяняць што-небудзь не патрабуецца. Калі ж значэнне зменнай будзе роўна 0, то ў файл /etc/sysctl.conf трэба дадаць радок:

  net.ipv4.ip_forward = 1 

І перазагрузіць правілы камандай:

  # Sysctl -p 

2. Наладзіць iptables

Па чарзе выканайце ў кансолі наступныя каманды:

  # Iptables -A FORWARD -i eth0 -o tun0 -m state --state ESTABLISHED, RELATED -j ACCEPT
 # Iptables -A FORWARD -s 10.8.0.0/24 -o eth0 -j ACCEPT
 # Iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE 

Такім чынам, мы дазволім прапускаць трафік праз сервер OpenVPN для падсеткі 10.8.0.0 ў рамках ужо устаноўленых злучэнняў.

Калі кліенту openvpn трэба прысвоіць пэўны знешні ip адрас сервера, то замест апошніх камандаў з спісу папярэдніх для iptables, неабходна выканаць гэтую:

  -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to-source 127.0.0.1 

Дзе пасля параметру -to-source варта паказаць знешні ip сервера.

OpenVPN кліент на Windows

Прыступаем да налады Openvpn кліента на Windows. Тут усё проста: спампоўваем кліент з афіцыйнага сайта, усталёўваем, ствараем канфігурацыйны файл і запускаем.

Варта адзначыць, што запускаць опенвпн на Windows варта з правамі адміністратара, калі актыўны кантроль рахункаў.

Калі вы не змянялі шлях ўстаноўкі, то прыклады канфігурацыйных файлаў на вашым ПК размяшчаюцца ў каталогу C: \ Program Files \ OpenVPN \ sample-config. Скапіруйце адсюль файл client.ovpn і змесціце яго ў каталог C: \ Program Files \ OpenVPN \ config.

Памятаеце пра створаныя для кліента сертыфікатах? Іх таксама варта спампаваць з сервера і скапіяваць у гэты каталог.

Адкрыйце канфігурацыйны файл client.ovpn і знайдзіце параметр remote my-server-1 1194. Замест my-server пакажыце ip або даменнае імя вашага сервера. Затым порт, які мы змянілі раней. У выніку радок можа выглядаць так:

  remote 192.168.0.1 20100 

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

  ca ca.crt
 cert client.crt
 key client.key 

Таксама варта раскаментаваць параметр, які паказвае шлях да tls-ключу.

  tls-auth ta.key 1 

Раней ужо гаварылася пра тое, што апошняя лічба на сэрвэры павінна быць 0, на кліенце - 1.

І апошнія параметру - гэта шыфры, якія вы ўсталявалі на сэрвэры.

  cipher AES-128-CBC
 auth SHA512
 tls-version-min 1.2 

Гэта ўсё, што патрабуецца для налады кліента. Паспрабуйце запусціць кліент OpenVPN і падлучыцца да вашага сервера. Неабходная інфармацыя аб падключэнні будзе адлюстравана ў акенцы openvpn gui.

OpenVPN сумесна з NetworkManager

Усталёўваем графічны інтэрфейс для Network Manager.

  # Aptitude install network-manager-openvpn-gnome 

І перазапускаем.

  # Service network-manager restart 

Капіюем згенераваныя для кліента сертыфікаты ў адвольную тэчку на комьютера. Напрыклад, у /home/user/.openvpn/.

Клікаем правай клавішай мышы на значку network manager, выбіраем пункт «змяніць злучэння», дадаем новае падключэнне тыпу «OpenVPN».

добавить новое подключение network manager

паказваем:

  • Назва злучэння
  • Шлюз (дамен або ip сервера)
  • Тып: сертыфікаты

Сертыфікат карыстальніка - сертыфікат, які мы згенеравалі ў пачатку для кліента (client.crt).
Сертыфікат ЦС - файл ca.crt.
Асабісты ключ - ключ кліента (client.key).

openvpn новое соединение

Націскаем на кнопку «Дадаткова». У якое адкрылася акне, ва ўкладцы «Агульныя» спатрэбіцца змяніць некалькі пунктаў.

  • Выкарыстаць іншы порт шлюза (калі вы паказалі нестандартны пры наладзе сервера)
  • Выкарыстоўваць сціск lzo

Перамыкаемся на ўкладку "Бяспека". Выбіраем шыфр, як у параметрах сервера. У якасці значэння параметра «Аўтэнтыфікацыя hmac" неабходна ўказаць алгарытм, як у значэнні auth сервера. У артыкуле мы абралі SHA512.

Адкрываем ўкладку «Аўтэнтыфікацыя TLS» і адзначаем галачкай пункты:

  • Verify peer ...
  • Выкарыстоўваць дадатковую аўтэнтыфікацыю TLS

Для апошняга параметру паказваем шлях да файла ta.key, у якасці напрамкі ключа з выпадальнага спісу выбіраем 1. Аналагічна канфігурацыйнаму файлу для Windows.

Захоўваем злучэнне і спрабуем падлучыцца. :)

На ўсялякі выпадак, глядзім, што піша NM пры падключэнні ў сістэмны лог:

  # Tail -f / var / log / syslog 


Як вы ацэніце артыкул?
Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (7 адзнак, сярэдняе: 5,00 з 5)
Загрузка ...

” 14 Каментары "Усталяванне і настройка OpenVPN на Debian 8"

  1. Аўтар як я не стараўся зрабіць дебаггинг каб зразумець чаму ў мяне кліенты не могуць падлучыцца, openvpn ня птишет логі! падкажы што зрабіць!

    1. Значыць, трэба праверыць логі кліентаў. OpenVPN GUI такой лог абавязкова вядзе. Правы клік мышы -> паказаць часопіс.

      Можа быць, прапушчаны нейкі пункт з інструкцыі ...

  2. Дзякуй, але як аказалася трэба было зрабіць так #openvpn /opt/vp/vp.conf і дадатак падчапіць конфіг файл - логі пайшлі - я ўсё прагледзеў і зрабіў ВПН працоўным.

    Ещебы мануальчик аўтар у цябе спытаць. Як зрабіць тунель паміж серверам на Дебіане і микротиком. З'ядналіся іх лакальную сетку. 2 кватэры.

    1. У сябе на андроіда-смартфоне выкарыстоўваю афіцыйны кліент ад распрацоўніка Openvpn - «Openvpn connect» https://play.google.com/store/apps/details?id=net.openvpn.openvpn

      Ён даволі просты ў наладзе. Згенераваныя файлы для кліента трэба закінуць у любую тэчку на флэшцы тэлефона. Затым запусціць Openvpn Connect, у меню абраць пункт «Import», далей - «Import Profile from SD card». Адкрыецца файлавы менеджэр, дзе трэба выбраць файл * .ovpn, клікнуць па кнопцы «Select». У пацверджанне паспяховага імпарту на экране адлюструецца паведамленне «Profile imported».

      Для падлучэння націскаем кнопку «Connect». Вось і ўсё. :)

      Не ведаю пра іншых кліентах, але гэты выдатна працуе.

      PS Калі плануецца падлучацца адначасова і з кампутара, і з тэлефона, то для апошняга варта згенераваць ўласныя ключ і сертыфікат.

  3. upd.
    п.2 адважыўся устаноўкай правоў на ключ client.key (мабыць праглядзеў спачатку). + Спатрэбілася выставіць тып падлучэння TCP відавочна і пазначыць тып адаптара - TAP / TUN

  4. Наладзіў усё па інструкцыі, аднак ёсць такая праблема:
    Кліент злучаецца з серверам, але інэту няма. З кліента пінг як сервер VPN 10.8.0.1, так і вылучаны ip сервера. З самага сервера знешнія сайты пінг без праблем. Атрымліваецца што сабака закапаная дзесьці ў IPtables і ip.frwarding. Ёсць якія-небудзь думкі? можа што хутчэй параіце, чым разбірацца з гэтым лесам?

    1. Трэба прапісаць іншыя правілы маршрутызацыі
      iptables -t nat -A POSTROUTING -o venet0 -j SNAT -to IP_АДРЕС_ВАШЕГО_СЕРВЕРА
      iptables -A FORWARD -i venet0 -o tun0 -m state -state RELATED, ESTABLISHED -j ACCEPT
      iptables -A FORWARD -i tun0 -o venet0 -j ACCEPT

Дадаць каментар

Ваш e-mail не будзе апублікаваны.