… [Trackback]
[…] There you will find 63982 additional Information to that Topic: blog.neterra.cloud/bg/какво-е-openvpn-и-как-да-го-инсталирате-на-ubuntu-18-04-20-04/ […]
OpenVPN е софтуер с отворен код, отговорен за обработката на комуникации между клиент и сървър, които прилагат техники за виртуална частна мрежа за създаване на защитени връзки от точка до точка или от сайт към сайт. Той борави с криптиране и удостоверяване, осъществяващи се на слой 2 или слой 3 от OSI модела, като използва стандартното за индустрията SSL / TLS за криптиране. „Пакетирането“ се извършва със стандартизирани UDP или опционални TCP пакети.
Трите основни цели на VPN сигурността:
OpenVPN обработва криптирането и удостоверяването с помощта на картографския протокол TLS (Transport Layer Security) / SSL (Secure Sockets Layer). TLS е изграден върху по-ранните SSL спецификации, разработени от Netscape. Протоколът TLS цели основно да осигури поверителност и цялост на данните. SSL / TLS използва една от най-добрите технологии за криптиране, наречена асиметрично криптиране, за да гарантира идентичността на VPN партньора. Всеки от двамата партньори притежава два ключа – един публичен и един частен.
OpenVPN използва драйвера TUN / TAP, който е и проект с отворен код, включен във всички съвременни дистрибуции на Linux / Unix, както и в Windows, Solaris и Mac OS X. Устройството TUN може да се използва като виртуална точка, точков интерфейс, а TAP устройството може да се използва като виртуален Ethernet адаптер.
Някои от предимствата на използването на OpenVPN са:
Ще ви трябва VPS или виртуална машина с Ubuntu 18.04 / 20.04 за VPN сървъра и един компютър за клиента.
Преди да започнете да инсталирате пакети на вашия Ubuntu сървър, винаги препоръчваме да се уверите, че всички системни пакети са актуализирани:
root@test:~# apt update root@test:~# apt upgrade
Превключете директорията (ако не сте там):
root@test:~# cd ~
Следващата стъпка е да инсталирате Easy RSA
root@test:/etc/openvpn/server# cd && wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.5/EasyRSA-nix-3.0.5.tgz
Когато изтеглянето завърши, извлечете архива
root@test:~# tar xzf EasyRSA-nix-3.0.5.tgz
Превключете директорията и копирайте файла
root@test:~# cd ~/EasyRSA-3.0.5/ root@test:~/EasyRSA-3.0.5# cp vars.example vars
Разкоментирайте и актуализирайте следните записи, за да съответстват на вашата информация:
root@test:~/EasyRSA-3.0.5# nano ~/EasyRSA-3.0.5/vars
set_var EASYRSA_REQ_COUNTRY "US" set_var EASYRSA_REQ_PROVINCE "California" set_var EASYRSA_REQ_CITY "San Francisco" set_var EASYRSA_REQ_ORG "Copyleft Certificate Co" set_var EASYRSA_REQ_EMAIL "me@example.net" set_var EASYRSA_REQ_OU "My Organizational Unit"
Ctrl+o ; Ctrl + x # За да запазите и излезете от редактора
Първо, трябва да инициализираме нов PKI:
root@test:~/EasyRSA-3.0.5# ./easyrsa init-pki Note: using Easy-RSA configuration from: ./vars Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020 init-pki complete; you may now create a CA or requests. Your newly created PKI dir is: /root/EasyRSA-3.0.5/pki
Сега можем да създадем сертификата за CA:
root@test:~/EasyRSA-3.0.5# ./easyrsa build-ca
Ще бъдете помолени да въведете парола и име (т.н. потребител, клиент, сървър):
Note: using Easy-RSA configuration from: ./vars Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020 Enter New CA Key Passphrase: Re-Enter New CA Key Passphrase: Generating RSA private key, 2048 bit long modulus (2 primes) ...............+++++ Common Name (eg: your user, host, or server name) [Easy-RSA CA]:test Your new CA certificate file for publishing is at: /root/EasyRSA-3.0.5/pki/ca.crt
root@test:~/EasyRSA-3.0.5# apt update root@test:~/EasyRSA-3.0.5# apt install openvpn
Генериране на ключ Diffie-Hellman (размяната на ключове Diffie-Hellman беше едно от най-важните разработки в криптографията с публичен ключ). Ще отнеме известно време, за да се инсталира и копира в директорията openvpn:
root@test:~/EasyRSA-3.0.5# ./easyrsa gen-dh root@test:~/EasyRSA-3.0.5# cp ~/EasyRSA-3.0.5/pki/dh.pem /etc/openvpn/
Генериране на HMAC (Hash-базиран код за удостоверяване на съобщението (HMAC) е механизъм за изчисляване на код за удостоверяване на съобщение, включващ хеш функция в комбинация със секретен ключ.):
root@test:~/EasyRSA-3.0.5# openvpn --genkey --secret ta.key root@test:~/EasyRSA-3.0.5# cp ~/EasyRSA-3.0.5/ta.key /etc/openvpn/
Сега трябва да създадем сертификат за сървър и частен ключ (ще трябва да въведете парола)
root@test:~/EasyRSA-3.0.5# ./easyrsa gen-req test-server nopass root@test:~/EasyRSA-3.0.5# cp ~/EasyRSA-3.0.5/pki/private/test-server.key /etc/openvpn/ root@test:~/EasyRSA-3.0.5# ./easyrsa sign-req server test-server root@test:~/EasyRSA-3.0.5# cp ~/EasyRSA-3.0.5/pki/private/test-server.crt /etc/openvpn/
Сменете директорията и копирайте файловете crt и ca:
cd issued/ cp test-server.crt /etc/openvpn/ cd .. cp ca.crt /etc/openvpn/
Копирайте примерния конфигурационен файл:
sh -c "gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server1.conf"
Отворете файла с nano редактора:
nano /etc/openvpn/server1.conf
Разкоментирайте и заменете с правилните данни за вашия сървър по-долу редовете:
cert server1.crt # коригирайте името на crt файлът key server1.key # коригирайте името на key файлът dh dh.pem push "redirect-gateway def1 bypass-dhcp" (разкоментирайте - махнете ;) push "dhcp-option DNS 208.67.222.222" (разкоментирайте - махнете ;) push "dhcp-option DNS 208.67.220.220" (разкоментирайте - махнете ;) user nobody (remove the ;) group nogroup (remove the ;)
Добавете в долната част на файла (това ще промени алгоритъма за удостоверяване (HMAC) от SHA1 на SHA256)
auth SHA256
Сега трябва да активиратe, старирате и проверите статуса на OpenVPN
root@test:~/EasyRSA-3.0.5# systemctl enable openvpn root@test:~/EasyRSA-3.0.5# systemctl start openvpn root@test:~/EasyRSA-3.0.5# systemctl status openvpn â— openvpn.service - OpenVPN service Loaded: loaded (/lib/systemd/system/openvpn.service; enabled; vendor preset: enabled) Active: active (exited) since Thu 2020-08-06 17:15:34 EEST; 7s ago Process: 48692 ExecStart=/bin/true (code=exited, status=0/SUCCESS) Main PID: 48692 (code=exited, status=0/SUCCESS) Aug 06 17:15:34 test systemd[1]: Starting OpenVPN service... Aug 06 17:15:34 test systemd[1]: Finished OpenVPN service.
Сега трябва да променим маршрута и да отворим портовете на защитната стена.
Можете да видите текущата конфигурация с:
# ip a show tun0
Трябва да редактирате файла sysctl.conf
root@test:~# nano /etc/sysctl.conf
Разкоментирайте реда по-долу, запазете файла и излезете от него. След това приложите промените.
net.ipv4.ip_forward=1 root@test:~# sysctl -p
Проверете интерфейса:
root@test:~# ip -o -4 route show to default | awk '{print $5}' eth0
Редактирайте този файл, като промените правилата по подразбиране на „ACCEPT“ – запазете файла и излезте
root@test:~# nano /etc/default/ufw DEFAULT_FORWARD_POLICY="ACCEPT"
Редактирайте файла before.rules:
root@test:~# nano /etc/ufw/before.rules
Добавете в долната част на файла:
# NAT правила *nat :POSTROUTING ACCEPT [0:0] # Пренасочване на трафика през eth0 (в моя случай интерфейсът е eth0, трябва да го замените с вашия) -A POSTROUTING -s 10.8.0.0/16 -o eth0 -j MASQUERADE # не изтривайте реда „COMMIT“ или тези правила няма да бъдат обработвани COMMIT
Сега трябва да отворим порта за VPN и да разрешим OpenSSH:
root@test:~# ufw allow 1194/udp root@test:~# ufw allow OpenSSH root@test:~# ufw disable root@test:~# ufw enable root@test:~# iptables -nvL POSTROUTING -t nat Chain POSTROUTING (policy ACCEPT 9 packets, 670 bytes) pkts bytes target prot opt in out source destination 1190 135K MASQUERADE all -- * eth0 10.8.0.0/16 0.0.0.0/0
Създайте OpenVPN директория за клиентските файлове
Създайте директориите:
root@test:~# mkdir -p ~/openvpn-clients/{configs,base,files}
Копирайте файловете ta.key и ca.crt:
root@test:~# cp ~/EasyRSA-3.0.5/ta.key ~/openvpn-clients/base/ root@test:~# cp /etc/openvpn/ca.crt ~/openvpn-clients/base/
Копирайте примерната конфигурацията на клиента в основната директория и я редактирайте:
root@test:~# cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/openvpn-clients/base/ root@test:~# nano ~/openvpn-clients/base/client.conf
Заменете YOUR_SERVER_IP с IP адреса на сървъра ви
remote YOUR_SERVER_IP 1194
Коментирайте по-долу редовете:
ca ca.crt cert client.crt key client.key
Добавете в края на файла:
auth SHA256
Запазете файла и излезте.
Отидете в EasyRSA директорията и генерирайте Key файл с името на клиента:
root@test:~# cd ~/EasyRSA-3.0.5/ root@test:~/EasyRSA-3.0.5# ./easyrsa gen-req client1 nopass root@test:~/EasyRSA-3.0.5# cp ~/EasyRSA-3.0.5/pki/private/client1.key ~/openvpn-clients/files/
Генерирайте crt сертификат:
root@test:~/EasyRSA-3.0.5# ./easyrsa sign-req client client1 root@test:~/EasyRSA-3.0.5# cp ~/EasyRSA-3.0.5/pki/issued/client1.crt ~/openvpn-clients/files/
Отидете в директорията /root/openvpn-clients/ и направете файл с текстовият редактор:
# cd /root/openvpn-clients/ # nano ~/openvpn-clients/gen_config.sh
Поставете редовете по-долу във файла:
#!/bin/bash FILES_DIR=$HOME/openvpn-clients/files BASE_DIR=$HOME/openvpn-clients/base CONFIGS_DIR=$HOME/openvpn-clients/configs BASE_CONF=${BASE_DIR}/client.conf CA_FILE=${BASE_DIR}/ca.crt TA_FILE=${BASE_DIR}/ta.key CLIENT_CERT=${FILES_DIR}/${1}.crt CLIENT_KEY=${FILES_DIR}/${1}.key # Test for files for i in "$BASE_CONF" "$CA_FILE" "$TA_FILE" "$CLIENT_CERT" "$CLIENT_KEY"; do if [[ ! -f $i ]]; then echo " The file $i does not exist" exit 1 fi if [[ ! -r $i ]]; then echo " The file $i is not readable." exit 1 fi done # Generate client config cat > ${CONFIGS_DIR}/${1}.ovpn <<EOF $(cat ${BASE_CONF}) <key> $(cat ${CLIENT_KEY}) </key> <cert> $(cat ${CLIENT_CERT}) </cert> <ca> $(cat ${CA_FILE}) </ca> <tls-auth> $(cat ${TA_FILE}) </tls-auth> EOF
* скриптът е взет от тук!
Направете файла изпълним:
root@test:~/openvpn-clients# chmod u+x ~/openvpn-clients/gen_config.sh
Генерирайте файла:
root@test:~/openvpn-clients# ./gen_config.sh client1
Файлът се намира в ~ / openvpn-clients / configs:
root@test:~/openvpn-clients/configs# ls ~/openvpn-clients/configs
Вземете текста и го копирайте във файл на клиентската машина с разширение .ovpn
root@test:~/openvpn-clients/configs# cat client1.ovpn
Можете да намерите полезни команди и повече информация за сертификатите тук!
… [Trackback]
[…] There you will find 63982 additional Information to that Topic: blog.neterra.cloud/bg/какво-е-openvpn-и-как-да-го-инсталирате-на-ubuntu-18-04-20-04/ […]
… [Trackback]
[…] Information on that Topic: blog.neterra.cloud/bg/какво-е-openvpn-и-как-да-го-инсталирате-на-ubuntu-18-04-20-04/ […]
… [Trackback]
[…] Read More on that Topic: blog.neterra.cloud/bg/какво-е-openvpn-и-как-да-го-инсталирате-на-ubuntu-18-04-20-04/ […]
… [Trackback]
[…] Here you will find 61861 additional Information to that Topic: blog.neterra.cloud/bg/какво-е-openvpn-и-как-да-го-инсталирате-на-ubuntu-18-04-20-04/ […]
… [Trackback]
[…] Info on that Topic: blog.neterra.cloud/bg/какво-е-openvpn-и-как-да-го-инсталирате-на-ubuntu-18-04-20-04/ […]
… [Trackback]
[…] Read More Info here on that Topic: blog.neterra.cloud/bg/какво-е-openvpn-и-как-да-го-инсталирате-на-ubuntu-18-04-20-04/ […]
… [Trackback]
[…] Read More here on that Topic: blog.neterra.cloud/bg/какво-е-openvpn-и-как-да-го-инсталирате-на-ubuntu-18-04-20-04/ […]
… [Trackback]
[…] Read More Information here on that Topic: blog.neterra.cloud/bg/какво-е-openvpn-и-как-да-го-инсталирате-на-ubuntu-18-04-20-04/ […]
… [Trackback]
[…] Find More on on that Topic: blog.neterra.cloud/bg/какво-е-openvpn-и-как-да-го-инсталирате-на-ubuntu-18-04-20-04/ […]
… [Trackback]
[…] Here you will find 72616 additional Info to that Topic: blog.neterra.cloud/bg/какво-е-openvpn-и-как-да-го-инсталирате-на-ubuntu-18-04-20-04/ […]
… [Trackback]
[…] Find More Information here on that Topic: blog.neterra.cloud/bg/какво-е-openvpn-и-как-да-го-инсталирате-на-ubuntu-18-04-20-04/ […]