Во денешно време, 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“ вредноста на параметарот во 1.
За да ги примените промените без да го рестартирате компјутерот, извршете ја командата
sudo sysctl -p /etc/sysctl.conf
Преводот на мрежната адреса е конфигуриран со помош на iptables. Прво, проверете го името на вашиот надворешен мрежен интерфејс што ја извршува командата „ИП-линк шоу“ - ќе ви треба на следниот чекор. Нашето име е „ens3“.
Овозможете превод на мрежна адреса на вашиот надворешен интерфејс за сите локални мрежни јазли.
sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
Забележете дека треба да го наведете вистинското име на интерфејсот на вашиот сервер, тој може да се разликува од нашиот.
Стандардно, сите правила создадени од iptables се ресетираат по рестартирање на серверот. За да го спречите тоа, користете „iptables-упорно“ корисност. Инсталирајте го следниот пакет:
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 провајдер: „Windows (вграден)“
- Име на врската: „vpn_connect“ (можете да изберете кое било име)
- Име или адреса на серверот: (наведете ја надворешната IP адреса на серверот)
- Вид VPN: „Автоматски“
- Вид на информации за најавување: „Корисничко име и лозинка“
- Корисничко име: vpnuser (името наведено во датотеката „chap-secrets“ на серверот)
- Лозинка: 1 (како во датотеката „chap-secrets“)
Откако ќе ги зачувате параметрите, во прозорецот ќе ја видите новата VPN конекција. Лево-клик на врската и изберете „Поврзи се“. Во случај на успешна врска, ќе видите „Поврзано“ статус.
Во Опции, ќе најдете внатрешни адреси на клиентот и серверот. Поле „Адреса на дестинација“ ја прикажува адресата на надворешниот сервер.
Кога е поврзан, внатрешната IP адреса на серверот, 172.16.0.1 во нашиот случај, станува стандардна порта за сите појдовни пакети.
Користејќи која било онлајн услуга, можете да бидете сигурни дека надворешната IP адреса на компјутерот сега е иста како и IP адресата на вашиот VPN сервер.
OpenVPN сервер
Конфигурација на серверот
Ајде да го промовираме нивото на дозволи на тековниот корисник бидејќи за нашата понатамошна конфигурација ќе ни треба root пристап.
sudo -s
Инсталирајте ги сите потребни пакети. ќе ни треба „Лесно-RSA“ пакет за управување со клучеви за шифрирање.
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
Во овој чекор, одговорете со „да“ за да го потврдите потписот, а потоа внесете ја лозинката што беше креирана за време на генерирањето на root сертификатот.
Генерирај Diffie-Hellman параметри. Овие параметри се користат за безбедна размена на клучеви помеѓу серверот и клиентот.
./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
Внесете ја лозинката што ја поставивме при креирањето на root сертификатот и оставете ја вредноста Common Name како стандардна.
Потпишете го генерираното барање за сертификат на клиентот.
./easyrsa sign-req client client1
Во овој чекор, одговорете со „да“ за да го потврдите потписот, а потоа внесете ја лозинката што беше креирана за време на генерирањето на root сертификатот.
За погодност, да креираме папка со име „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
Променете го сопственикот на директориумот и сите датотеки „~/client1/“ да може да ги дистрибуира до клиентот. Ајде да направиме „Михаил“ сопственикот во нашиот случај.
chown -R mihail:mihail ~/client1
Одете на клиентскиот компјутер и копирајте ја содржината на „~/client1/“ папка. Можете да го направите тоа со помош на „PSCP“ корисност, што оди со Putty.
PSCP -r mihail@[IP_сервера]:/home/mihail/client1 c:\client1
Можете да зачувате клучни датотеки „ca.crt“, „client1.crt“, „client1.key“ каде сакаш. Во нашиот случај, тие се во оваа папка „c:\Program Files\OpenVPN\keys“, и ја модифицираме конфигурациската датотека „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 GUI“.
Десен-клик на иконата на апликацијата во лентата со задачи и изберете „Поврзи се“. Ако врската е успешна, иконата ќе стане зелена.
Користете која било онлајн услуга за да бидете сигурни дека вашата јавна IP адреса е променета и сега е иста како и IP адресата на серверот.