Данас ВПН технологија постаје све популарнија. Обични корисници користе ВПН за безбедан приступ Интернету. Такође помаже заобићи локално блокиране веб локације и услуге и штити од могућег спољног злонамерног понашања. Када се повезујете на ВПН сервер, између вашег рачунара и сервера постоји безбедан тунел којем се не може приступити споља, тако да ВПН сервер постаје ваша Интернет приступна тачка. Постоји много ВПН услуга, бесплатних и плаћених, али ако из неког разлога не раде за вас, увек можете да конфигуришете сопствени ВПН сервер.
Да бисте покренули свој VPN, требало би да изнајмите VPS сервер . Постоје различити софтвери који вам омогућавају да креирате VPN везу. Разликују се једни од других по подржаним оперативним системима и коришћеним алгоритмима. Погледаћемо два независна приступа за подешавање VPN сервера. Први је заснован на PPTP протоколу који се већ сматра застарелим и небезбедним, али је заиста једноставан за конфигурисање. Други користи модеран и безбедан софтвер OpenVPN, али захтева инсталирање клијентске апликације треће стране и темељитији процес подешавања.
У нашем тестном окружењу користићемо виртуелни сервер који покреће Убунту Сервер 18.04. Заштитни зид ће бити искључен на серверу јер његова конфигурација заслужује посебан чланак. Описаћемо процес подешавања на Виндовс 10.
Priprema
Без обзира који ВПН сервер одаберете, приступ Интернету ће бити постављен интегрисаним средствима оперативног система. Да бисте отворили приступ Интернету преко спољног сервисног интерфејса, морате дозволити прослеђивање пакета између интерфејса и конфигурисати превод мрежних адреса.
Да бисте укључили прослеђивање пакета, отворите датотеку „/etc/sysctl.conf“ и промените вредност параметра „net.ipv4.ip_forward“ на 1.
Да бисте применили промене без поновног покретања рачунара, покрените команду
sudo sysctl -p /etc/sysctl.conf
Превод мрежних адреса се конфигурише помоћу iptables-а . Прво, проверите име вашег екстерног мрежног интерфејса покретањем команде „ip link show“ - биће вам потребна у следећем кораку. Наше име је „ens3“.
Омогућите превод мрежних адреса на свом спољном интерфејсу за све чворове локалне мреже.
sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
Имајте на уму да морате да наведете право име интерфејса вашег сервера, оно може бити другачије од нашег.
Подразумевано, сва правила креирана помоћу iptables-а се ресетују након поновног покретања сервера. Да бисте то спречили, користите услужни програм „iptables-persistent“ . Инсталирајте следећи пакет:
sudo apt install iptables-persistent
У неком тренутку током процеса инсталације, видећете прозор за конфигурацију који ће вам предложити да сачувате тренутна iptables правила. Пошто су правила већ дефинисана, само потврдите и кликните два пута на „Да“ . Пошто ће се сада правила аутоматски применити након поновног покретања сервера.
ППТП сервер
Конфигурација сервера
Инсталирајте пакет:
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-options“ . Већина параметара је подразумевано подешена.
#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-options“ . Уместо „*“ можете навести фиксну IP адресу. Као резултат, датотека „chap-secrets“ би требало да изгледа овако:
Да бисте применили подешавања, ресетујте pptpd сервис и додајте га у аутоматско учитавање.
sudo systemctl restart pptpd
sudo systemctl enable pptpd
Конфигурација сервера је завршена.
Конфигурација клијента
Отворите „Старт“ - „Подешавања“ - „Мрежа и интернет“ - „VPN“ и кликните на „Додај VPN везу“
Унесите параметре везе у отворени прозор и кликните на „Сачувај“
- ВПН провајдер: „Виндовс (уграђени)“
- Име везе: „впн_цоннецт“ (можете изабрати било које име)
- Име или адреса сервера: (наведите спољну ИП адресу сервера)
- Тип ВПН-а: „Аутоматски“
- Тип информација за пријављивање: „Корисничко име и лозинка“
- Корисничко име: впнусер (име наведено у датотеци „цхап-сецретс“ на серверу)
- пассворд: 1 (као у датотеци „цхап-сецретс“)
Након чувања параметара, видећете нову VPN везу у прозору. Кликните левим тастером миша на везу и изаберите „Повежи се“ . У случају успешне везе, видећете статус „Повезано“ .
У опцијама ћете пронаћи интерне адресе клијента и сервера. Поље „Адреса одредишта“ приказује адресу екстерног сервера.
Када се повеже, интерна IP адреса сервера, у нашем случају 172.16.0.1 , постаје подразумевани gateway за све одлазне пакете.
Користећи било коју услугу на мрежи, можете се уверити да је спољна ИП адреса рачунара сада иста као ИП адреса вашег ВПН сервера.
ОпенВПН сервер
Конфигурација сервера
Хајде да унапредимо ниво дозвола тренутног корисника јер ће нам за даље конфигурисање бити потребан роот приступ.
sudo -s
Инсталирајте све потребне пакете. Биће нам потребан пакет „Easy-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
Током процеса креирања, биће вам затражено да поставите и запамтите лозинку. Такође ћете морати да одговорите на питања и унесете информације о власнику кључа. Можете оставити подразумеване вредности наведене у угластим заградама. Притисните „Ентер“ да бисте завршили унос.
Генеришите приватни кључ и захтев за сертификат. Као аргумент, наведите произвољно име; у нашем случају, то је „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
Генеришите приватни кључ и захтев за сертификат за клијента. Као аргумент, наведите произвољно име; у нашем случају, то је „клијент1“.
./easyrsa gen-req client1 nopass
Унесите лозинку коју смо поставили приликом креирања коренског сертификата и оставите вредност „Уобичајено име“ као подразумевану.
Потпишите генерисани захтев за клијентски сертификат.
./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
Промените власника директоријума и свих датотека „~/client1/“ да бисте могли да их дистрибуирате клијенту. У нашем случају, нека власник буде „mihail“ .
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“.
Кликните десним тастером миша на икону апликације у траци задатака и изаберите „Повежи се“ . Ако је повезивање успешно, икона ће постати зелена.
Користите било коју услугу на мрежи да бисте били сигурни да се ваша јавна ИП адреса променила и да је сада иста као ИП адреса сервера.