Инсталиране и конфигуриране на OpenVPN сървър на CentOS 7

В тази статия ще разгледаме инсталирането и конфигурирането на OpenVPN сървър, базиран на Linux CentOS 7, и ще покажем как да използваме конфигурирания OpenVPN сървър за свързване на два отдалечени компютъра (или офиси), разположени зад NAT в една мрежа. Ще извършим удостоверяване на VPN клиенти според сертификати.

Съдържание:

  • Инсталирайте OpenVPN и Easy-RSA
  • Лесна настройка на RSA и издаване на сертификат
  • Ние създаваме ключове и сертификати за OpenVPN сървъра
  • Конфигуриране на OpenVPN сървър: конфигурационен файл, защитна стена
  • Ние комбинираме няколко офиса (компютри), използвайки OpenVPN

VPN - Набор от технологии, които ви позволяват да изградите защитена мрежа върху обществени мрежи или InterTet. Използвайки VPN, можете да комбинирате отделени от интернет мрежови сегменти в една локална мрежа..

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 без firewalld, тогава трябва да стартирате следните команди:

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

Не забравяйте периодично да отменяте клиентските сертификати, ако те не се използват за защита на вашите данни.