У наш час тэхналогія VPN становіцца ўсё больш папулярнай. Звычайныя карыстальнікі выкарыстоўваюць VPN для бяспечнага доступу ў Інтэрнэт. Гэта таксама дапамагае абыйсці лакальна заблакаваныя вэб-сайты і службы і абараніць ад магчымых знешніх шкоднасных паводзін. Калі вы падключаецеся да сервера VPN, паміж вашым кампутарам і серверам існуе бяспечны тунэль, да якога нельга атрымаць доступ звонку, таму сервер VPN становіцца вашай кропкай доступу ў Інтэрнэт. Існуе мноства сэрвісаў VPN, як бясплатных, так і платных, але калі яны вам па нейкай прычыне не падыходзяць, вы заўсёды можаце наладзіць свой уласны сервер VPN.
Каб запусціць свой VPN, вы павінны арэнда VPS сервера. Ёсць рознае праграмнае забеспячэнне, якое дазваляе стварыць злучэнне VPN. Яны адрозніваюцца адзін ад аднаго падтрымоўванымі аперацыйнымі сістэмамі і выкарыстоўванымі алгарытмамі. Мы разгледзім два незалежных падыходу да наладжвання сервера VPN. Першы заснаваны на пратаколе PPTP, які ўжо лічыцца састарэлым і небяспечным, але вельмі просты ў наладзе. Іншы выкарыстоўвае сучаснае і бяспечнае праграмнае забеспячэнне OpenVPN, але патрабуе ўстаноўкі кліенцкага прыкладання трэцяга боку і больш стараннага працэсу наладкі.
У нашым тэставым асяроддзі мы будзем выкарыстоўваць віртуальны сервер на базе Ubuntu Server 18.04. На серверы будзе адключаны брандмаўэр, таму што яго канфігурацыя заслугоўвае асобнага артыкула. Мы апішам працэс налады ў Windows 10.
падрыхтоўка
Незалежна ад таго, які VPN-сервер вы абралі, доступ у Інтэрнэт будзе наладжаны інтэграванымі сродкамі аперацыйнай сістэмы. Для таго, каб адкрыць доступ у Інтэрнэт праз знешні інтэрфейс службы, вы павінны дазволіць пераадрасацыю пакетаў паміж інтэрфейсамі і наладзіць трансляцыю сеткавых адрасоў.
Каб уключыць пераадрасацыю пакетаў, адкрыйце файл “/etc/sysctl.conf” і змяненне «net.ipv4.ip_forward» значэнне параметру into 1.
Каб прымяніць змены без перазагрузкі кампутара, выканайце каманду
sudo sysctl -p /etc/sysctl.conf
Трансляцыя сеткавых адрасоў наладжваецца з дапамогай Iptables. Спачатку праверце назву вонкавага сеткавага інтэрфейсу, які запускае каманду «Паказаць IP-спасылку» - гэта вам спатрэбіцца на наступным этапе. Наша імя «ens3».
Уключыце трансляцыю сеткавых адрасоў на знешнім інтэрфейсе для ўсіх вузлоў лакальнай сеткі.
sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
Звярніце ўвагу, што вам неабходна ўказаць сапраўднае імя інтэрфейсу вашага сервера, яно можа адрознівацца ад нашага.
Па змаўчанні ўсе правілы, створаныя iptables, скідаюцца пасля перазапуску сервера. Каб прадухіліць гэта, выкарыстоўвайце «iptables-persistent» карыснасць. Усталюйце наступны пакет:
sudo apt install iptables-persistent
У нейкі момант у працэсе ўстаноўкі вы ўбачыце акно канфігурацыі, якое прапануе вам захаваць бягучыя правілы iptables. Паколькі правілы ўжо вызначаны, проста пацвердзіце і націсніце "Так" двойчы. Цяпер правілы будуць прымяняцца аўтаматычна пасля перазапуску сервера.
PPTP сервер
Канфігурацыя сервера
Усталюйце пакет:
sudo apt install pptpd
Пасля завяршэння ўстаноўкі адкрыйце файл “/etc/pptpd.conf” у любым тэкставым рэдактары і адрэдагуйце яго так:
option /etc/ppp/pptpd-options #path to the settings file
logwtmp #client connections logging mechanism
connections 100 #number of simultaneous connections
localip 172.16.0.1 #the address that will serve as a client gateway
remoteip 172.16.0.2-200 #range of addresses
Пасля гэтага адрэдагуйце файл «/etc/ppp/pptpd-параметры». Большасць параметраў настроены па змаўчанні.
#name of the service for new client records
name pptpd
#restrict obsolete authentication methods
refuse-pap
refuse-chap
refuse-mschap
#allow a more secure authentication method
require-mschap-v2
#enable encryption
require-mppe-128
#specify dns servers for clients (use any available servers)
ms-dns 8.8.8.8
ms-dns 8.8.4.4
proxyarp
nodefaultroute
lock
nobsdcomp
novj
novjccomp
nologfd
На наступным этапе вам трэба будзе стварыць запіс для кліенцкіх падключэнняў. Дапусцім, вы хочаце дадаць карыстальніка «карыстальнік vpnuser» з паролем "1" і дазволіць яму дынамічную адрасацыю. Адкрыйце файл “/etc/ppp/chap-secrets” і дадайце ў канец файла наступны радок з параметрамі карыстальніка:
vpnuser pptpd 1 *
«pptpd» значэнне - гэта назва службы, якую мы паказалі ў файле «параметры pptpd». Замест «*» вы можаце паказаць фіксаваны IP-адрас. У выніку файл «чап-сакрэты» павінна выглядаць так:
Каб прымяніць налады, скіньце pptpd сэрвіс і дадаць яго ў аўтазагрузку.
sudo systemctl restart pptpd
sudo systemctl enable pptpd
Канфігурацыя сервера скончана.
Канфігурацыя кліента
адкрыты «Пуск» - «Настройка» - Сетка і Інтэрнэт - VPN і націсніце «Дадаць VPN-злучэнне»
У якое адкрылася акне увядзіце параметры злучэння і націсніце "Захаваць"
- Пастаўшчык VPN: «Windows (убудаваны)»
- Імя злучэння: «vpn_connect» (вы можаце выбраць любое імя)
- Імя або адрас сервера: (укажыце знешні IP-адрас сервера)
- Тып VPN: «Аўта»
- Тып інфармацыі для ўваходу: «Імя карыстальніка і пароль»
- User name: vpnuser (імя вызначана ў файле «chap-secrets» на серверы)
- пароль: 1 (як у файле «chap-secrets»)
Пасля захавання параметраў у акне вы ўбачыце новае VPN-злучэнне. Пстрыкніце злучэнне левай кнопкай мышы і выберыце "Падключэнне". У выпадку паспяховага падлучэння вы ўбачыце «Падключаны» Статус.
У Параметры вы знойдзеце ўнутраныя адрасы кліента і сервера. Палявы «Адрас прызначэння» адлюстроўвае адрас знешняга сервера.
Пры падключэнні ўнутраны IP-адрас сервера, 172.16.0.1 у нашым выпадку становіцца шлюзам па змаўчанні для ўсіх выходных пакетаў.
Выкарыстоўваючы любы інтэрнэт-сэрвіс, вы можаце пераканацца, што знешні IP-адрас камп'ютара цяпер супадае з IP-адрасам вашага сервера VPN.
Сервер OpenVPN
Канфігурацыя сервера
Давайце павысім узровень дазволаў бягучага карыстальніка, таму што для нашай далейшай канфігурацыі нам спатрэбіцца каранёвы доступ.
sudo -s
Усталюйце ўсе неабходныя пакеты. Нам спатрэбіцца «Ізі-РСА» пакет для кіравання ключамі шыфравання.
apt install openvpn easy-rsa iptables-persistent
Дазволіць уваходныя злучэнні на порце 1194 праз пратакол UDP і прымяніць правілы iptables.
sudo iptables -I INPUT -p udp --dport 1194 -j ACCEPT
sudo netfilter-persistent save
Стварыце каталог са скапіяванымі файламі з пакета «Easy-RSA» і перайдзіце ў яго.
make-cadir ~/openvpn
cd ~/openvpn
Стварыць інфраструктуру адкрытых ключоў (PKI).
./easyrsa init-pki
Стварыце каранёвы сертыфікат цэнтра сертыфікацыі (CA).
./easyrsa build-ca
Падчас стварэння вам будзе прапанавана ўсталяваць і запомніць пароль. Вам таксама трэба будзе адказаць на пытанні і ўвесці інфармацыю пра ўладальніка ключа. Вы можаце пакінуць значэнні па змаўчанні, указаныя ў квадратных дужках. Націсніце «Enter», каб завяршыць увод.
Згенеруйце закрыты ключ і запыт на сертыфікат. У якасці аргумента пазначце адвольную назву; у нашым выпадку гэта «vpn-server».
./easyrsa gen-req vpn-server nopass
Пакіньце значэнне «Агульная назва» па змаўчанні.
Падпішыце згенераваны запыт на сертыфікат сервера.
./easyrsa sign-req server vpn-server
На гэтым этапе адкажыце «так», каб пацвердзіць подпіс, а затым увядзіце пароль, які быў створаны падчас генерацыі каранёвага сертыфіката.
Генераваць параметры Дыфі-Хелмана. Гэтыя параметры выкарыстоўваюцца для бяспечнага абмену ключамі паміж серверам і кліентам.
./easyrsa gen-dh
Усе неабходныя файлы згенераваны. Давайце створым тэчку "keys" у рабочым каталогу OpenVPN для захоўвання ключоў і скапіюем туды створаныя файлы.
mkdir /etc/openvpn/keys
sudo cp pki/ca.crt pki/issued/vpn-server.crt pki/private/vpn-server.key pki/dh.pem /etc/openvpn/keys
Наладзьце NAT з дапамогай iptables правілы. Стварыце файл з назвай nat і адкрыйце яго для рэдагавання ў /etc/openvpn/ каталог.
#!/bin/sh
# Reset firewall settings
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
# (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
# Allow OpenVPN connections (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -p udp --dport 1194 -j ACCEPT
iptables -A INPUT -i tun0 -j ACCEPT
# (eth0 in our case, may vary):
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
# (eth0 in our case, may vary)
iptables -A FORWARD -i eth0 -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Enable masquerading for the local network (eth0 in our case, may vary)
iptables -t nat -A POSTROUTING -o eth0 -s 10.8.0.0/24 -j MASQUERADE
# Deny incoming connections from outside
iptables -A INPUT -i eth0 -j DROP
# Deny transit traffic from outside (eth0 in our case, may vary)
iptables -A FORWARD -i eth0 -o tun0 -j DROP
sudo netfilter-persistent save
Захавайце файл і зрабіце яго выканальным.
sudo chmod 755 /etc/openvpn/nat
Скапіюйце шаблон канфігурацыі сервера.
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/
адкрыць файл “/etc/openvpn/server.conf” для рэдагавання пераканайцеся, што ён змяшчае наступныя радкі, і пры неабходнасці адрэдагуйце іх:
#Port, protocol, and interface
port 1194
proto udp
dev tun
#Path to the encryption keys
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/vpn-server.crt
key /etc/openvpn/keys/vpn-server.key
dh /etc/openvpn/keys/dh.pem
#SHA256 Hashing Algorithm
auth SHA256
#Switching off additional encryption
#tls-auth ta.key 0
#Network parameters
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist /var/log/openvpn/ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
#Ping every 10 seconds to check the connection.
keepalive 10 120
#Set up AES-256 encryption for the tunnel.
cipher AES-256-GCM
#Demoting the service OpenVPN after launch
user nobody
group nogroup
#Switching on parameters saving after reboot
persist-key
persist-tun
#Set log verbosity
verb 3
#Redirecting logs
log-append /var/log/openvpn/openvpn.log
#Script the rule installation launch.
up /etc/openvpn/nat
Уключыць пераадрасацыю трафіку на серверы.
sudo sysctl -w net.ipv4.ip_forward=1
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
Запусціце OpenVPN, каб прымяніць канфігурацыю.
systemctl restart openvpn@server
Канфігурацыя сервера скончана!
Канфігурацыя кліента
Перайдзіце на афіцыйны сайт OpenVPN "https://openvpn.net», перайсці да «СУПОЛЬНАСЦЬ» падзел.
Пракруціце ўніз і запампуйце ўсталёўнік для вашай версіі аперацыйнай сістэмы. У нашым выпадку гэта Windows 11 ARM64.
Усталюйце прыкладанне, пакінуўшы ўсе параметры па змаўчанні.
На наступным этапе вам спатрэбіцца падрыхтаваць наступныя файлы на серверы і перанесці іх на кліенцкі кампутар:
- адкрыты і прыватны ключы;
- копія ключа сертыфікацыйнага цэнтра;
- Шаблон файла канфігурацыі.
Падключыцеся да сервера, павысьце прывілеі і перайдзіце ў створаны намі каталог "~/openvpn".
sudo -s
cd ~/openvpn
Згенеруйце закрыты ключ і запыт на сертыфікат для кліента. У якасці аргумента пазначце адвольную назву; у нашым выпадку гэта «client1».
./easyrsa gen-req client1 nopass
Увядзіце пароль, які мы ўстанавілі пры стварэнні каранёвага сертыфіката, і пакіньце значэнне Common Name па змаўчанні.
Падпішыце згенераваны запыт на сертыфікат кліента.
./easyrsa sign-req client client1
На гэтым этапе адкажыце «так», каб пацвердзіць подпіс, а затым увядзіце пароль, які быў створаны падчас генерацыі каранёвага сертыфіката.
Для зручнасці давайце стварым у хатнім каталогу тэчку з назвай «client1» і скапіюем у яе ўсе файлы, прызначаныя для перадачы на кліенцкі камп'ютар.
mkdir ~/client1
cp pki/issued/client1.crt pki/private/client1.key pki/ca.crt ~/client1/
Скапіруйце шаблон файла канфігурацыі кліента ў той жа каталог. Зменіце пашырэнне файла на «.ovpn» падчас капіравання.
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client1/client.ovpn
Змяніць уладальніка каталога і ўсіх файлаў “~/кліент1/” каб мець магчымасць распаўсюджваць іх кліенту. Давайце зробім «міхаіл» гаспадар у нашым выпадку.
chown -R mihail:mihail ~/client1
Перайдзіце на кліенцкі кампутар і скапіруйце змесціва файла “~/кліент1/” папка. Вы можаце зрабіць гэта з дапамогай «PSCP» утыліта, якая ідзе з Putty.
PSCP -r mihail@[IP_сервера]:/home/mihail/client1 c:\client1
Вы можаце захоўваць ключавыя файлы «ca.crt», «client1.crt», «client1.key» дзе заўгодна. У нашым выпадку яны знаходзяцца ў гэтай тэчцы «c:\Program Files\OpenVPN\ключы», і мы наладжваем файл канфігурацыі «client.ovpn» ў «c:\Program Files\OpenVPN\config» каталог.
Зараз пяройдзем да налады кліента. Адкрыйце файл «c:\Program Files\OpenVPN\config\client.ovpn» у тэкставым рэдактары і адрэдагуйце наступныя радкі:
#announce that this is the client
client
#interface and protocol just like on the server
dev tun
proto udp
#IP address of the server and port
remote ip_address 1194
#saving parameters after reload
persist-key
persist-tun
#key paths
ca “c:\\Program Files\\OpenVPN\\keys\\ca.cert”
cert “c:\\Program Files\\OpenVPN\\keys\\client1.crt”
key “c:\\Program Files\\OpenVPN\\keys\\client1.key”
#enable server verification
remote-cert-tls server
#disable extra encryption
#tls-auth ta.key 1
cipher AES-256-CBC
auth-nocache
verb 3
Астатняе пакіньце некранутым.
Захавайце файл і запусціце кліенцкае прыкладанне «Графічны інтэрфейс OpenVPN».
Пстрыкніце правай кнопкай мышы значок праграмы на панэлі задач і абярыце "Падключэнне". Калі злучэнне прайшло паспяхова, значок стане зялёным.
Выкарыстоўвайце любы інтэрнэт-сэрвіс, каб пераканацца, што ваш агульнадаступны IP-адрас змяніўся і цяпер супадае з IP-адрасам сервера.