Данас ВПН технологија постаје све популарнија. Обични корисници користе ВПН за безбедан приступ Интернету. Такође помаже заобићи локално блокиране веб локације и услуге и штити од могућег спољног злонамерног понашања. Када се повезујете на ВПН сервер, између вашег рачунара и сервера постоји безбедан тунел којем се не може приступити споља, тако да ВПН сервер постаје ваша Интернет приступна тачка. Постоји много ВПН услуга, бесплатних и плаћених, али ако из неког разлога не раде за вас, увек можете да конфигуришете сопствени ВПН сервер.
Да бисте покренули свој ВПН, требало би изнајмите ВПС сервер. Постоји различит софтвер који вам омогућава да креирате ВПН везу. Међусобно се разликују по подржаним оперативним системима и коришћеним алгоритмима. Погледаћемо два независна приступа за постављање ВПН сервера. Први је заснован на ППТП протоколу који се већ сматра застарелим и није безбедан, али се заиста лако конфигурише. Други користи модеран и безбедан софтвер ОпенВПН, али захтева инсталирање клијентске апликације треће стране и детаљнији процес подешавања.
У нашем тестном окружењу користићемо виртуелни сервер који покреће Убунту Сервер 18.04. Заштитни зид ће бити искључен на серверу јер његова конфигурација заслужује посебан чланак. Описаћемо процес подешавања на Виндовс 10.
Priprema
Без обзира који ВПН сервер одаберете, приступ Интернету ће бити постављен интегрисаним средствима оперативног система. Да бисте отворили приступ Интернету преко спољног сервисног интерфејса, морате дозволити прослеђивање пакета између интерфејса и конфигурисати превод мрежних адреса.
Да бисте укључили прослеђивање пакета, отворите датотеку “/етц/сисцтл.цонф” и промена “нет.ипв4.ип_форвард” вредност параметра у 1.
Да бисте применили промене без поновног покретања рачунара, покрените команду
sudo sysctl -p /etc/sysctl.conf
Превођење мрежних адреса је конфигурисано помоћу iptables. Прво проверите име вашег спољног мрежног интерфејса који покреће команду “ип линк схов” - требаће вам у следећем кораку. Зовемо се “енс3”.
Омогућите превод мрежних адреса на свом спољном интерфејсу за све чворове локалне мреже.
sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
Имајте на уму да морате да наведете право име интерфејса вашег сервера, оно може бити другачије од нашег.
Подразумевано, сва правила која креира иптаблес се ресетују након поновног покретања сервера. Да бисте то спречили, користите “иптаблес-персистент” корисност. Инсталирајте следећи пакет:
sudo apt install iptables-persistent
У неком тренутку током процеса инсталације, видећете прозор за конфигурацију који ће вам предложити да сачувате тренутна правила иптаблес-а. Пошто су правила већ дефинисана, само потврдите и кликните "Да" два пута. Од сада ће се правила аутоматски примењивати након поновног покретања сервера.
ППТП сервер
Конфигурација сервера
Инсталирајте пакет:
sudo apt install pptpd
Након завршетка инсталације, отворите датотеку “/етц/пптпд.цонф” у било ком уређивачу текста и уредите га овако:
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
Након тога, уредите датотеку “/етц/ппп/пптпд-оптионс”. Већина параметара је подразумевано подешена.
#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 pptpd 1 *
„пптпд“ вредност је име услуге коју смо навели у датотеци „пптпд-опције“. Уместо "*" можете одредити фиксну ИП адресу. Као резултат, фајл „тајне главе“ треба да изгледа овако:
Да бисте применили подешавања, ресетујте пптпд услугу и додајте је у аутоматско учитавање.
sudo systemctl restart pptpd
sudo systemctl enable pptpd
Конфигурација сервера је завршена.
Конфигурација клијента
отворен "Почетак" - "Подешавања" - Мрежа и Интернет - „ВПН“ и кликните на дугме „Додај ВПН везу“
Унесите параметре везе у прозор који се отвори и кликните "Сачувати"
- ВПН провајдер: „Виндовс (уграђени)“
- Име везе: „впн_цоннецт“ (можете изабрати било које име)
- Име или адреса сервера: (наведите спољну ИП адресу сервера)
- Тип ВПН-а: „Аутоматски“
- Тип информација за пријављивање: „Корисничко име и лозинка“
- Корисничко име: впнусер (име наведено у датотеци „цхап-сецретс“ на серверу)
- пассворд: 1 (као у датотеци „цхап-сецретс“)
Након што сачувате параметре, видећете нову ВПН везу у прозору. Кликните левим тастером миша на везу и изаберите "Цоннецт". У случају успешне везе, видећете "Повезан" Статус.
У Опцијама ћете пронаћи интерне адресе клијента и сервера. Поље „Адреса одредишта“ приказује адресу спољног сервера.
Када је повезан, интерна ИП адреса сервера, 172.16.0.1 у нашем случају, постаје подразумевани гатеваи за све одлазне пакете.
Користећи било коју услугу на мрежи, можете се уверити да је спољна ИП адреса рачунара сада иста као ИП адреса вашег ВПН сервера.
ОпенВПН сервер
Конфигурација сервера
Хајде да унапредимо ниво дозвола тренутног корисника јер ће нам за даље конфигурисање бити потребан роот приступ.
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
Током процеса креирања, биће вам затражено да поставите и запамтите лозинку. Такође ћете морати да одговорите на питања и унесете информације о власнику кључа. Можете оставити подразумеване вредности наведене у угластим заградама. Притисните „Ентер“ да бисте завршили унос.
Генеришите приватни кључ и захтев за сертификат. Као аргумент, наведите произвољно име; у нашем случају, то је „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/
Отворите датотеку “/етц/опенвпн/сервер.цонф” за уређивање, уверите се да садржи следеће редове и уредите их ако је потребно:
#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
Конфигурација сервера је завршена!
Конфигурација клијента
Идите на званичну веб страницу ОпенВПН-а “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/
Копирајте шаблон конфигурационе датотеке клијента у исти директоријум. Промените екстензију датотеке у „.овпн“ приликом копирања.
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client1/client.ovpn
Промените власника директоријума и свих датотека “~/клијент1/” да би могли да их дистрибуирају клијенту. Хајде да направимо "михаил" власник у нашем случају.
chown -R mihail:mihail ~/client1
Идите на клијентски рачунар и копирајте садржај “~/клијент1/” фолдер. То можете учинити уз помоћ „ПСЦП“ корисност, то иде уз Путти.
PSCP -r mihail@[IP_сервера]:/home/mihail/client1 c:\client1
Можете да складиштите кључне датотеке “ца.црт”, “цлиент1.црт”, „клиент1.кључ“ где год хоћеш. У нашем случају, они се налазе у овој фасцикли “ц:\Програм Филес\ОпенВПН\кеис”, и мењамо конфигурациону датотеку “цлиент.овпн” у “ц:\Програм Филес\ОпенВПН\цонфиг” директоријум.
Сада пређимо на конфигурисање клијента. Отворите датотеку “ц:\Програм Филес\ОпенВПН\цонфиг\цлиент.овпн” у уређивачу текста и уредите следеће редове:
#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
Остало оставите нетакнуто.
Сачувајте датотеку и покрените клијентску апликацију „ОпенВПН ГУИ“.
Кликните десним тастером миша на икону апликације на траци задатака и изаберите "Цоннецт". Ако је веза успешна, икона ће постати зелена.
Користите било коју услугу на мрежи да бисте били сигурни да се ваша јавна ИП адреса променила и да је сада иста као ИП адреса сервера.