В тази статия ще разгледаме инсталирането и конфигурирането на OpenVPN сървър, базиран на Linux CentOS 7, и ще покажем как да използваме конфигурирания OpenVPN сървър за свързване на два отдалечени компютъра (или офиси), разположени зад NAT в една мрежа. Ще извършим удостоверяване на VPN клиенти според сертификати.
Съдържание:
- Инсталирайте OpenVPN и Easy-RSA
- Лесна настройка на RSA и издаване на сертификат
- Ние създаваме ключове и сертификати за OpenVPN сървъра
- Конфигуриране на OpenVPN сървър: конфигурационен файл, защитна стена
- Ние комбинираме няколко офиса (компютри), използвайки OpenVPN
OpenVPN - една от реализациите на VPN технология с отворен код, базирана на SSL / TLS (базирана на OpenSSL библиотеката). Използвайки OpenVPN, можете да комбинирате както отдалечени офиси, така и отделни локални компютри, разположени зад NAT, в една мрежа.
Инсталирайте OpenVPN и Easy-RSA
Първата стъпка е да свържете хранилището на EPEL и да актуализирате системата:
yum инсталирайте epel-release -y
yum актуализация -y
Когато системата се актуализира, трябва да инсталирате с помощта на yum пакета за управление OpenVPN и Easy-RSA (ще ни е необходима за внедряване на PKI инфраструктурата на ключовете на VPN сървъра).
yum инсталирате openvpn easy-rsa -y
Лесна настройка на RSA и издаване на сертификат
Копирайте всички скриптове лесна RSA към каталога / и т.н. / openvpn /:
cp -r / usr / share / easy-rsa / и т.н. / openvpn /
Да отидем на каталога / etc / openvpn / easy-rsa / 3 / и създайте файл там Варс:
cd / etc / openvpn / easy-rsa / 3 /
nano vars
Добавете съдържанието на файла (можете да го поправите за себе си):
set_var EASYRSA "$ хората с увреждания" set_var EASYRSA_PKI "$ EASYRSA / PKI" set_var EASYRSA_DN "cn_only" set_var EASYRSA_REQ_COUNTRY "RU" set_var EASYRSA_REQ_PROVINCE "МСК" set_var EASYRSA_REQ_CITY "МСК" set_var EASYRSA_REQ_ORG "IT-компания" set_var EASYRSA_REQ_EMAIL "[email protected]. РУ "set_var EASYRSA_REQ_OU" ИТ отдел "set_var EASYRSA_KEY_SIZE 4096 set_var EASYRSA_ALGO RSA set_var EASYRSA_CA_EXPIRE 7500 set_var EASYRSA_CERT_EXPIRE 3650 set_var EASYRSA_NS_SUPPORT" не "set_var EASYRSA_NS_COMMENT" Certificate Authority "set_var EASYRSA_EXT_DIR" $ EASYRSA / x509 типове "set_var EASYRSA_SSL_CONF" $ EASYRSA / OpenSSL-1.0 .cnf "set_var EASYRSA_DIGEST" sha512 "
Данните във файла могат да се вземат произволно, това няма да попречи на настройката на сървъра и по-нататъшната работа.
Файлът трябва да бъде изпълним, така че:
chmod + x vars
Ние създаваме ключове и сертификати за OpenVPN сървъра
Преди да създадем ключа, трябва да инициализираме директорията PKI и създайте ключ CA.cd / etc / openvpn / easy-rsa / 3 /
# ./easyrsa init-pki
Забележка: използване на Easy-RSA конфигурация от: ./vars init-pki complete; сега можете да създадете CA или заявки. Вашият новосъздаден PKI dir е: / etc / openvpn / easy-rsa / 3 / pki
Създайте ключ CA:
./ easyrsa build-ca
След изпълнение на командата ще трябва да посочим парола, така че сертификатите и ключът да бъдат генерирани. В бъдеще ще бъде необходима парола за подписване на сертификати.
Създайте сървър ключ (име на сървъра) server.vpn.ru):
опция nopass - деактивирайте паролата за server.vpn.ru
# ./easyrsa gen-req server.vpn.ru nopass
Забележка: използване на конфигурация Easy-RSA от: ./vars Използване на SSL: openssl OpenSSL 1.0.2k-fips 26 януари 2017 г. Генериране на 4096 битов RSA частен ключ ... ++ ... ++ записване на нов частен ключ на '/ etc / openvpn / easy -rsa / 3 / pki / private / server.vpn.ru.key.R4IYCbD1zP '----- Предстои ви да въведете информация, която ще бъде включена във вашата заявка за сертификат. Това, което предстои да въведете, е това, което се нарича Разграничено име или DN. Има доста полета, но можете да оставите празно За някои полета ще има стойност по подразбиране, Ако въведете „.“, Полето ще остане празно. ----- Общо име (напр .: вашето потребител, хост или сървър име) [server.vpn.ru]: Въвеждане на заявка за клавиатура и сертификат. Вашите файлове са: req: /etc/openvpn/easy-rsa/3/pki/reqs/server.vpn.ru.req ключ: /etc/openvpn/easy-rsa/3/pki/private/server.vpn.ru .key
В процеса на издаване на сертификат, в колоната Общо име трябва да щракнете Въведете,.
Ще подпишем ключа server.vpn.ru, използвайки нашия сертификат за CA:
./ easyrsa sign-req server server.vpn.ru
Когато подписвате сертификата, ще ви трябва паролата, която сме задали при издаването на сертификата CA:
Както е посочено на екрана, в процеса ще трябва да въведете да и парола от CA.
За да проверите дали сертификатите са генерирани без грешки, изпълнете командата:
# openssl провери -CAfile pki / ca.crt pki / izdano / server.vpn.ru.crt
pki / izd / server.vpn.ru.crt: ОК
Всички създадени сертификати на OpenVPN сървър.
- Коренният сертификат се намира: 'pki / ca.crt'
- Частният ключ на сървъра се намира: 'pki / private / server.vpn.ru.key'
- Сертификат на сървъра: „pki / izd / server.vpn.ru.crt“
За да генерирате клиентския ключ, трябва да изпълните командата:
./ easyrsa gen-req клиент име nopass
Генериране на клиентски ключ admin1:
# ./easyrsa gen-req admin1 nopass
Забележка: използване на конфигурация Easy-RSA от: ./vars Използване на SSL: openssl OpenSSL 1.0.2k-fips 26 януари 2017 г. Генериране на 4096 битов RSA частен ключ ... ++ ... ++ записване на нов частен ключ на '/ etc / openvpn / easy -rsa / 3 / pki / private / admin1.key.R5OY6reT2e '----- Предстои ви да въведете информация, която ще бъде включена в заявката ви за сертификат. Това, което предстои да въведете, е това, което се нарича Разграничено име или DN. Има доста полета, но можете да оставите празно За някои полета ще има стойност по подразбиране, Ако въведете „.“, Полето ще остане празно. ----- Общо име (например: вашето потребител, хост или сървър име) [admin1]: Завършена е заявка за въвеждане на ключ и сертификат. Вашите файлове са: req: /etc/openvpn/easy-rsa/3/pki/reqs/admin1.req ключ: /etc/openvpn/easy-rsa/3/pki/private/admin1.key
Както при сървърния ключ, трябва да го подпишете чрез сертификат за CA:
./ easyrsa sign-req клиент admin1
Сертификат, създаден за потребителя.
Освен това трябва да генерирате ключ Diffie-Hellman, който ще се използва при размяна на ключове:
./ easyrsa gen-dh
Той се генерира за дълго време:
Тогава генерираме сертификата за TLS:
openvpn --genkey --secret ta.key
Ако планираме да отнемем клиентски сертификати в бъдеще, трябва да генерираме CRL ключ:
# ./easyrsa gen-crl
Забележка: използване на конфигурация Easy-RSA от: ./vars Използване на SSL: openssl OpenSSL 1.0.2k-fips 26 януари 2017 г. Използване на конфигурация от /etc/openvpn/easy-rsa/3/pki/safessl-easyrsa.cnf Въведете фраза за /etc/openvpn/easy-rsa/3/pki/private/ca.key: Създаден е актуализиран CRL. CRL файл: /etc/openvpn/easy-rsa/3/pki/crl.pem
За да оттеглите сертификат, изпълнете командата:
./ easyrsa отменя admin1
- където admin1 това е името на сертификата
Създадени са необходимите сертификати за работа, копирайте ги в работните директории:
Сертификати на сървъра:
cp pki / ca.crt / и т.н. / openvpn / сървър /
cp pki / izd / server.vpn.ru.crt / и т.н. / openvpn / сървър /
cp pki / private / server.vpn.ru.key / и т.н. / openvpn / сървър /
cp pki / private / dh.pem / и т.н. / openvpn / сървър /
cp pki / private / ta.key / и т.н. / openvpn / сървър /
cp pki / crl.pem / и т.н. / openvpn / сървър /
Клиентски сертификати:
cp pki / izd / admin1.crt / и т.н. / openvpn / клиент /
cp pki / private / admin1.key / и т.н. / openvpn / клиент /
Конфигуриране на OpenVPN сървър: конфигурационен файл, защитна стена
Нека да преминем към настройките на конфигурационния файл на OpenVPN. Първо, създайте конфигурационен файл на OpenVPN server.conf:
cd / etc / openvpn / && nano server.conf
Променете съдържанието на файла в следното:
# Посочете порта, протокола и пристанището на устройството 1194 proto udp dev tun # Посочете пътя към сертификатите на сървъра ca /etc/openvpn/server/ca.crt cert /etc/openvpn/server/server.vpn.ru.crt ключ / etc / openvpn /server/server.vpn.ru.key # Пътеки към клавишите CRL и DH dh /etc/openvpn/server/dh.pem crl-verify /etc/openvpn/server/crl.pem # Посочете настройките на IP мрежата, адресите от които VPN клиентите ще получават сървър 15.10.2.0 255.255.255.0 push "пренасочване-шлюз def1" # Посочете местоназначението DNS сървър натиснете "dhcp-опция DNS 77.88.8.8" push "dhcp-опция DNS 8.8.4.4" # Разрешаване на различни клиенти да се свържат, със същия ключ дубликат-cn # TLS защита tls-auth /etc/openvpn/server/ta.key 0 шифър AES-256-CBC tls-version-min 1.2 tls-cipher TLS-DHE-RSA-WITH-AES-256- GCM-SHA384: TLS- DHE-RSA-WITH-AES-256-CBC-SHA256: TLS-DHE-RSA-WITH-AES-128-GCM-SHA256: TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 auth SHA512 auth-nocache # Друга конфигурация на keepalive 20 60 persist-key persist-tun comp-lzo yes daemon потребител никой никой не групира # Пътят към лог-файла log-append /var/log/openvpn.log verb 3
След това запазете файла. Посочих стандартния UDP порт 1194 за VPN сървъра, но за OpenVPN можете да зададете всеки свободен порт на сървъра.
Остава да конфигурирате правилата на защитната стена, за да позволи връзка и маршрутизация между сегментите.
Ако използвате Firewalld, първо трябва да активирате модула на ядрото спедиция:
# echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
# sysctl -p
net.ipv4.ip_forward = 1
Добавете услугата openvpn към firewalld, и интерфейс tun0 до надеждна зона
firewall-cmd - постоянен --add-service = openvpn
firewall-cmd - постоянен --zone = надежден --add-интерфейс = tun0
Активирайте „MASQUERADE“ за доверената зона firewalld:firewall-cmd - постоянен --zone = надежден --add-маскарад
Активирайте NAT:
защитна стена-cmd - постоянен - директен - преминава през ipv4 -t nat -A ОТСТРОЙКА -s 15.10.2.0/24 -o сървър IP -j MASQUERADE
firewall-cmd -reload
iptables -t nat -A ИЗПЪЛНЕНИЕ -s 15.10.2.0/24 -o eth0 -j MASQUERADE
iptables -A INPUT -p tcp -dport 1194 -j ACCEPT
услуга iptables запишете
Стартирайте OpenVPN и го добавете към стартиране на Linux:
systemctl стартиране на openvpn @ сървър
systemctl активира openvpn @ сървър
Проверете дали порт 1194 се слуша от услугата:
# lsof -i: 1194
КОМАНДА PID ПОТРЕБИТЕЛ FD ТИП УСТРОЙСТВО НА УСТРОЙСТВО / ИЗКЛЮЧВАНЕ НАГРАДА ИМЕ openvpn 11887 никой 5u IPv4 45892 0t0 UDP *: openvpn
Нека проверим IP настройките на мрежовия интерфейс:
# ip a
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3: tun0: mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100 link / none inet 15.10 .2.1 партньор 15.10.2.2/32 обхват глобален tun0 valid_lft завинаги предпочитан_lft завинаги inet6 fe80 :: db7c: 7fed: 6d4f: 70d2 / 64 флаг за връзка връзка 800 valid_lft завинаги предпочитан_lft завинаги
Както можете да видите, на устройството tun0 мрежата, посочена по време на конфигуриране, е добавена.
Това са минималните настройки, които трябва да направите, за да работи OpenVPN..
Ние комбинираме няколко офиса (компютри), използвайки OpenVPN
Помислете как да се свържете към OpenVPN сървъра от два отдалечени компютъра, които са свързани към Интернет чрез NAT, и организирайте обща мрежа между тях. За да се свържа от компютър с Windows към сървъра на OpenVPN, използвам официалния клиент от разработчиците. Можете да го изтеглите на официалния уебсайт, няма да се фокусираме върху това, но ще преминем направо към настройката.
След като инсталирате клиента, трябва да отидете на конфигурационния файл, който трябва да създадете по пътя:
C: \ програмни файлове \ OpenVPN \ config \
Създадох файл клиент и добавете следното съдържание към него:
клиент dev tun proto udp дистанционно 182.122.41.12 1194 резолюция-повторен безкраен nobind блок-извън-dns persist-key persist-tun mute-rey-предупреждения отдалечен-cert-tls сървър tls-client auth SHA512 tls-auth "C: \\ Програмни файлове \\ OpenVPN \\ config \\ ta.key "1 дистанционно потвърждение на уеб сървъра TLS" ca "C: \ Program Program Files \\ OpenVPN \\ config \\ ca.crt" cert "C: \\ Program Files \\ OpenVPN \\ config \\ admin1.crt "ключ" C: \\ Program Files \\ OpenVPN \\ config \\ admin1.key "шифър AES-256-CBC comp-lzo verb 3
За конфигуриране се нуждаем от предварително създадени клиентски, защитни и сървърни сертификати. Те трябва да бъдат изтеглени от сървъра и поставени в удобна за вас директория, след което трябва да посочите пътя към тях в конфигурационния файл на OpenVPN клиент.
След като се свържем чрез клиентския пряк път Open VPN в тавата:
Свързах се и получих следния IP за моя компютър:
IPv4 адрес ...: 10.15.2.14 Маска на подмрежата ...: 255.255.255.252
На втория компютър за NAT извърших същите стъпки, след като създадох сертификата за втория потребител, когато свързах втория компютър, получих и IP от мрежата:
IPv4 адрес ...: 15.10.2.6 Маска на подмрежата ...: 255.255.255.252
След свързването и двата компютъра са в една и съща мрежа и се виждат.
Пуснете ping на втория компютър:
Пакетна обмяна от 10.15.2.14 до 32 байта с данни: Отговор от 10.15.2.14: брой байтове = 32 време = 67ms TTL = 127
Пуснете ping на първия компютър:
Пакетна обмяна от 10/15 / 2.6 до 32 байта данни: Отговор от 10/15 / 2.6: брой байтове = 32 време = 71ms TTL = 127
И двамата свързани VPN клиенти могат да обменят пакети и директно да прехвърлят файлове един към друг. Така успяхме да комбинираме два компютъра, разположени в различни части на страната, в една локална мрежа.
На сървър с OpenVPN можете да създадете неограничен брой ключове и сертификати за потребителите. Ако имате нужда от нов сертификат, изпълнете следните команди в директорията / etc / openvpn / easy-rsa / 3:
./ easyrsa gen-req клиент име nopass
./ име на клиент за easyrsa sign-req
Не забравяйте периодично да отменяте клиентските сертификати, ако те не се използват за защита на вашите данни.