Установка openvpn в centos 7

Этап 2

В файловой системе программы есть документы, содержащие тестовые конфигурации OpenVPN. Для начала необходимо скопировать файл с именем server.conf — он послужит основой для создания новой совокупности параметров.

Чтобы открыть файл необходимо следующее:

В данной директории требуется внесение изменений. Необходимо установить определенное значение в файле настроек, чтобы при дальнейшей генерации ключи имели размер 2048 байт. Для корректного изменения необходимо поменять имя файла dh так, как это изображено ниже:

После необходимо удалить значок «;» в строке push «redirect-gateway def1 bypass-dhcp». Это необходимо для того, чтобы уведомления о необходимости перенаправления трафика через установленный клиент приходили своевременно.

Далее важно прописать значения публичных DNS-серверов Google. Это нужно сделать, чтобы клиентские приложения могли использовать сервер, так как им недоступны серверы провайдера

Чтобы внести нужные данные, параметры push «dhcp-option DNS» необходимо сначала раскомментировать, а затем указать данные серверов Google, как это указано ниже.

Чтобы была возможность запуска программы без привилегий, необходимо прописать такие настройки запуска, чтобы разрешить подключаться от имени пользователя и группы nobody. В указанных ниже строках нужно убрать необходимые символы. После завершения настройки сохраните внесенные данные и закройте документ.

Step 2: Install Easy RSA

The next step is to build a Public Key Infrastructure (PKI). To do this, you need to install easy RSA, a CLI utility for creating and managing a PKI Certificate Authority (CA).

Easy RSA helps you set up an internal certificate authority (CA) and generate SSL key pairs to secure the VPN connections.

1. To download the easy RSA package, use the command. If you don’t have wget on your CenOS system, install it by running:

2. At the time of writing, the latest version of the CLI utility is 3.0.8, which we will download. To use another version, check out easy RSA’s release page on GitHub.

3. Next, extract the downloaded archive:

4. Create and move into a new openvpn directory:

5. Then, create a subdirectory under the path :

6. Move the extracted directory into /etc/openvpn/easy-rsa:

To check whether you have successfully moved everything from the easy-rsa-3.0.8 directory, move into easy-rsa with and list the content with . You should see a list of files and folders, as in the image below.

Настройка OpenVPN-клиента

Для настройки клиента необходимо на сервере сгенерировать сертификаты, а на клиентском компьютере установить программу openvpn и настроить ее.

На сервере

Генерируем сертификаты для клиента. Для этого переходим в каталог easy-rsa (если мы из него выходили):

cd /usr/share/easy-rsa/3

Запускаем еще раз vars:

. ./vars

Создаем запрос и сам сертификат:

./easyrsa gen-req client1 nopass

./easyrsa sign-req client client1

* как и при генерировании сертификата сервера, подтверждаем правильность данных и вводим пароль корневого сертификата. В данном примере мы создадим сертификат для client1.

На сервере скопируем ключи во временную директорию, выполнив последовательно 3 команды:

mkdir /tmp/keys

cp pki/issued/client1.crt pki/private/client1.key pki/dh.pem pki/ca.crt pki/ta.key /tmp/keys

chmod -R a+r /tmp/keys

* сертификаты скопированы в каталог /tmp для удобства переноса их на клиентский компьютер.

Windows

1. Заходим на официальную страницу загрузки openvpn и скачиваем клиента для Windows:

Запускаем скачанный файл и устанавливаем программу, нажимая «Далее».

2. Переходим в папку C:\Program Files\OpenVPN\config. И копируем в нее файлы ca.crt, client.crt, client.key, dh2048.pem, ta.key из каталога /tmp/keys на сервере, например, при помощи программы WinSCP.

После переноса файлов, не забываем удалить ключи из временного каталога на сервере:

# rm -R /tmp/keys

3. Теперь возвращаемся к компьютеру с Windows, открываем блокнот от имени администратора и вставляем следующие строки:

client
resolv-retry infinite
nobind
remote 192.168.0.15 443
proto udp
dev tun
comp-lzo
ca ca.crt
cert client1.crt
key client1.key
dh dh.pem
tls-client
tls-auth ta.key 1
float
keepalive 10 120
persist-key
persist-tun
verb 0

* где 192.168.0.15 443 — IP-адрес OpenVPN-сервера и порт, на котором он принимает запросы.

Сохраняем файл с именем config.ovpn в папке C:\Program Files\OpenVPN\config.

4

Запускаем с рабочего стола программу «OpenVPN GUI» от имени администратора (это важно)

Нажимаем правой кнопкой по появившемуся в трее значку и выбираем «Подключиться»:

Произойдет подключение и значок поменяет цвет с серого/желтого на зеленый.

Linux

1. Устанавливаем клиента одной из команд.

а) для Rocky Linux / CentOS:

yum install epel-release

yum install openvpn

б) для Ubuntu / Debian:

apt-get install openvpn

2. Переходим в каталог:

cd /etc/openvpn

Копируем в каталог файлы ca.crt, client1.crt, client1.key, dh.pem, ta.key из каталога /tmp/keys на сервере, например, при помощи утилиты scp:

scp [email protected]:/tmp/keys/* .

* где admin — имя пользователя, под которым можно подключиться к серверу по SSH; 192.168.0.15 — IP-адрес сервера.

Для закрытых ключей разрешаем доступ только для владельца:

chmod 600 client1.key ta.key

После переноса файлов, не забываем удалить ключи из временного каталога на сервере:

rm -R /tmp/keys

3. Создаем конфигурационный файл:

vi /etc/openvpn/client.conf

client
resolv-retry infinite
nobind
remote 192.168.0.15 443
proto udp
dev tun
comp-lzo no
ca ca.crt
cert client1.crt
key client1.key
dh dh.pem
tls-client
tls-auth ta.key 1
float
keepalive 10 120
persist-key
persist-tun
verb 0

* где 192.168.0.15 443 — IP-адрес OpenVPN-сервера и порт, на котором он принимает запросы.

4. Разово запустим клиента:

cd /etc/openvpn

openvpn —config /etc/openvpn/client.conf

Соединение должно выполниться. Мы можем увидеть предупреждения — по желанию, межете их исправить самостоятельно.

5. Прерываем выполнение подключения комбинацией Ctrl + C и запустим клиента в качестве службы:

systemctl enable openvpn@client —now

Проверить, что соединение состоялось можно пинганув сервер по VPN-адресу:

ping 172.16.10.1

Примеры команд

Рассмотрим отдельно примеры работы с FreeIPA посредством командной строки.

Работа с группами

1. Создание группы безопасности:

ipa group-add —desc=’Group for managers departmen’ managers

* создаем группу безопасности managers.

2. Добавить пользователя в группу:

ipa group-add-member managers —users=user1,user2,user3

* добавим в группу managers пользователей user1, user2 и user3.

3. Переименовать группу:

ipa group-mod —rename=<новое имя> <старое имя>

Например:

ipa group-mod —rename=admins users

* в данном примере мы переименуем группу users в группу admins.

Работа с сертификатами

1. Выпустить сертификат для компьютера (выполняется на компьютере, который присоединен к freeipa):

ipa-getcert request -k /etc/pki/tls/certs/freeipa.key -f /etc/pki/tls/certs/freeipa.crt -r

* в данном примере будет сформирован запрос на получение сертификата и сохранен в каталог /etc/pki/tls/certs.

2. Посмотреть список запросов на сертификат с узла можно командой:

ipa-getcert list

3. Удалить запрос можно командой:

ipa-getcert stop-tracking -i <идентификатор>

Например:

ipa-getcert stop-tracking -i openvpn

4. Обновить сертификат:

ipa-getcert resubmit —id=»20210923072007″

* где 20210923072007 — идентификатор запроса, который можно посмотреть командой ipa-getcert list.

Этап 3

После изменения настроек и их сохранения, переходите к этапу созданию ключей и сертификатов. В пакете есть специальные скрипты для их генерации.

Первый шаг – создание пути, где будут храниться готовые ключи. Директория располагается здесь:

Туда необходимо перенести скрипты для генерации сертификатов и ключей.

Чтобы упростить дальнейшее использование OpenVPN, вносятся определенные изменения в скрипты, генерирующие ключи. Это поможет оптимизировать работу и не дублировать ввод значений несколько раз. Чтобы изменить скрипт, необходимо внести правки в файл vars, расположенный здесь:

Найдите поля, начинающиеся с KEY_ , туда будет вноситься информация о компании. Обязательно необходимо заполнить строки KEY_NAME и KEY_CN.

В первом параметре необходимо вписать значение server. Это делается для того, чтобы не пришлось менять все файлы конфигурации, где есть упоминания server.key и server.crt.

Во втором параметре нужно вписать имя домена.

В прочие строки KEY_ по желанию вносится дополнительная информация. Ниже приведены примеры, при редактировании их нужно заменить на данные вашей компании.

Если определить версию программы невозможно, то могут возникать сбои в загрузке SSL. Чтобы исключить риск возникновения подобной проблемы, нужно скопировать приведенные ниже данные и стереть номер версии из его названия.

Переходите в директорию easy-rsa, где необходимо ввести «source» для создания новых ключей и сертификатов.

Иные данные, лежащие в директории, необходимо удалить.

Внесите данные об организации, которой принадлежит сертификат.

Далее следует этап генерации ключей и сертификатов. Так как все необходимые изменения уже были внесены, то на вопросы системы можно нажимать Enter , то есть далее. В конце необходимо нажать «ДА» («Y»), чтобы сохранить изменения.

Далее необходимо создать файл обмена по криптографическому протоколу Диффи-Хеллмана, сгенерировав дополнительный ключ.

Сгенерируем вспомогательный ключ ta.key

Созданные данные должны быть скопированы в папку OpenVPN.

Для того, чтобы клиентские приложения могли устанавливать связь с сервером, необходимы ключи и сертификаты. Для каждого конкретного приложения создается уникальный ключ со своим именем. Ниже описан процесс для одного клиента.

Finish configuration and setup users in the web interface

Using the information from the previous step, connect to the Admin Web UI and sign in with the openvpn user and password.

For example: https://address/admin/
(replace address with the IP or DNS hostname of your server)

The Access Server Admin Web Interface provides an intuitive tool to manage settings for OpenVPN Access Server. But the first time you access it, you will receive a warning that the security or privacy of the website can’t be determined. This is expected. Access Server comes with a self-signed, untrusted SSL certificate so that the web service will function. You may override this warning message and proceed. We recommend you set up a valid DNS hostname for your Access Server and install a valid signed SSL certificate to resolve this message.

For more details on this step refer to Finishing Configuration of Access Server.

Установка Zabbix на RedHat/CentOS/Fedora

Установим сервер с заббиксом, у меня он имеют лейбу — Zabbix-Server.VM4, и выполняем установку:

# yum install zabbix-agent zabbix-server-mysql zabbix-frontend-php zabbix-web-mysql

Сейчас, можно немного поправить конфиг apache (можно собственно не лезть и не менять нечего):

# vim /etc/httpd/conf.d/zabbix.conf

Нужно убрать комментарий со строки:


php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value date.timezone Europe/Kiev

В этой строке прописываем свою временную зону ( я себе установил г.Киев). Как это сделаете, нужно перезагрузить апач:

# service httpd restart

Устанавливаем mysql/mariadb сервер:

Если mysql установлен, то еще необходимо создать пользователя, который будет управлять данной БД. Для начала, подключаемся к серверу:

# mysql -proot -p

Создаем базу и пользователя с паролем:

> create database zabbix character set utf8 collate utf8_bin;
> grant all privileges on zabbix.* to 'zabbix'@'localhost' IDENTIFIED BY 'passwd_user_zabbix';

Импортируем данные в созданную БД:

# mysql zabbix <  /usr/share/doc/zabbix-server-mysql-2.4.8/create/schema.sql
# mysql zabbix <  /usr/share/doc/zabbix-server-mysql-2.4.8/create/images.sql
# mysql zabbix <  /usr/share/doc/zabbix-server-mysql-2.4.8/create/data.sql

Выполняем установку через веб-интерфейс. Вводим данные которые были созданы выше(  zabbix — база данных, zabbix — пользователь,  passwd_user_zabbix — его пароль). После установки, можно будет зайти в админ панель:

  • Пользователь — Admin
  • Пароль для пользователя — zabbix

CentOS.VM1 и CentOS.VM2

# yum install zabbix-agent

 Zabbix-Proxy.VM3

# yum install zabbix-agent  zabbix-proxy-mysql zabbix-proxy

Настройка Iptables
Для работы Web-интерфейса Zabbix нам потребуется открыть 80 порт, а также 10051 для взаимодействия внешних Zabbix-агентов с сервером.

# iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
# iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 10051 -j ACCEPT
# service iptables save

Отзыв сертификата

В случае, когда необходимо прекратить действие определенного сертификата, можно его отозвать (revoke). Чтобы настроить отзыв сертификата в OpenVPN, нужно указать файл для проверки отозванных сертификатов, затем отозвать сам сертификат.

Настройка OpenVPN

Открываем конфигурационный файл:

vi /etc/openvpn/server/server.conf

Добавляем строку:


crl-verify keys/crl.pem

* в данном примере, сервер будет проверять список отозванных сертификатов в файле keys/crl.pem.

Отзыв сертификата

В нашем примере мы создали сертификат client1 — сделаем его отзыв. Переходим в каталог:

cd /usr/share/easy-rsa/3

Отзываем сертификат командой:

./easyrsa revoke client1

* здесь мы отзываем сертификат для клиента client1.

Подтверждаем наши намерения:

  Continue with revocation: yes

… и вводим пароль для центра сертификации.

После этого создаем/обновляем файл crl.pem:

./easyrsa gen-crl

* необходимо будет ввести пароль центра сертификации.

Копируем файл crl.pem в каталог openvpn:

cp pki/crl.pem /etc/openvpn/server/keys/

После перезагружаем сервис openvpn:

systemctl restart openvpn-server@server

Подключение клиентов

Linux

В вашем дистрибутиве или среде рабочего стола может быть инструмент или графический пользовательский интерфейс для подключения к серверам OpenVPN. В этом руководстве мы покажем вам, как подключиться к серверу с помощью инструмента .

  • Установите OpenVPN в Ubuntu и Debian

  • Установите OpenVPN на CentOS и Fedora

После установки пакета для подключения к VPN-серверу используйте команду и укажите файл конфигурации клиента:

Windows

Скопируйте файл в папку конфигурации OpenVPN ( или ).

Запустите приложение OpenVPN.

Щелкните правой кнопкой мыши значок OpenVPN на панели задач, и имя скопированного файла конфигурации OpenVPN отобразится в меню. Щелкните Подключить.

Android и iOS

Приложение VPN, разработанное OpenVPN, доступно как для Android, так и для iOS. Установите приложение и импортируйте клиентский файл.

Step 7 – Generate Client Certificate and Key File

Next, you will need to generate the key and certificate file for the client.

First, run the following command to build the client key file:

./easyrsa gen-req client nopass

You should see the following output:

Note: using Easy-RSA configuration from: ./vars

Using SSL: openssl OpenSSL 1.1.1c FIPS  28 May 2019
Generating a RSA private key
......................................................+++++
...+++++
writing new private key to '/etc/openvpn/easy-rsa/pki/private/client.key.e38GUtzHie'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) :

Keypair and certificate request completed. Your files are:
req: /etc/openvpn/easy-rsa/pki/reqs/client.req
key: /etc/openvpn/easy-rsa/pki/private/client.key

Next, sign the client key using your CA certificate:

./easyrsa sign-req client client

You should get the following output:

Note: using Easy-RSA configuration from: ./vars

Using SSL: openssl OpenSSL 1.1.1c FIPS  28 May 2019


You are about to sign the following certificate.
Please check over the details shown below for accuracy. Note that this request
has not been cryptographically verified. Please be sure it came from a trusted
source or that you have verified the request checksum with the sender.

Request subject, to be signed as a client certificate for 365 days:

subject=
    commonName                = client


Type the word 'yes' to continue, or any other input to abort.
  Confirm request details: yes
Using configuration from /etc/openvpn/easy-rsa/pki/safessl-easyrsa.cnf
Enter pass phrase for /etc/openvpn/easy-rsa/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'client'
Certificate is to be certified until Feb 16 05:11:19 2021 GMT (365 days)

Write out database with 1 new entries
Data Base Updated

Certificate created at: /etc/openvpn/easy-rsa/pki/issued/client.crt

Next, copy all client certificate and key file to the /etc/openvpn/client/ directory:

cp pki/ca.crt /etc/openvpn/client/
cp pki/issued/client.crt /etc/openvpn/client/
cp pki/private/client.key /etc/openvpn/client/

Install updates and set the correct time

We recommend you start by updating your operating system to the latest version and ensure it’s set to the correct time:

  1. Sign in to your Linux system on the console or via SSH and obtain root privileges.
  2. Run the commands below to install updates and set time and date correctly:

Note: We assume your OS comes with a time synchronization tool to ensure the correct date and time. If it doesn’t, you must ensure they’re correct and consider installing a Network Time Protocol (NTP) client program to keep accurate time on your server. Access Server relies on accurate time for time-based one-time passwords for multi-factor authentication and certificate management.

Установка и настройка Dnsmasq

Dnsmasq — это легкий и быстроконфигурируемый DNS, DHCP и TFTP сервер, предназначенный для обеспечения доменными именами и связанными с ними сервисами небольшие сети. Может обеспечивать именами локальные машины, которые не имеют глобальных DNS-записей. DHCP сервер интегрирован с DNS сервером.

Настройку будем проводить на сервере с операционной системой CentOS7

Настройка DHCP-сервера

Настройка производится в конфигурационному файле /etc/dnsmasq.conf

cat /etc/dnsmasq.conf


# Указываем пользователя и группу с правами которых будет запущен демон

user=nobody
group=nobody

# Указываем интерфейсы на которых будут приниматься запросы
interface=eth0
interface=eth1

# Или интерфейсы на которых не будут приниматься запросы

except-interface="интерфейс" 

# Или ip-адреса

listen-address= "ip-адрес"

#Если вы хотите что бы интерфейс принимал только DNS запросы

no-dhcp-interface= "интерфейс"


# Указываем диапозон адресов и время аренды

dhcp-range=192.168.0.50,192.168.0.150,10h

# Для статической привязки адресов указываем MAC-адрес хоста и 
#адрес, который будем ему выдавать

dhcp-host=11:22:33:44:55:66,192.168.0.51

# или ip-адрес и имя хоста

dhcp-host=11:22:33:44:56:77,mail-server,192.168.0.55,60m

# Можем выдать один ip-адрес одному из хостов кто первый успеет

dhcp-host=12:21:33:43:88:11,22:11:55:44:88:81,192.168.0.59

# Указание опций DHCP

# Шлюз по умолчанию

dhcp-option,3,192.168.0.1

# DNS сервер

dhcp-option,6,192.168.0.1

# Лимит на аренду ip-адреса в секундах (по-умолчанию 150)

dhcp-lease-max=3600

# Указание файла для хранения информации об аренде адресов

dhcp-leasefile=/var/lib/dnsmasq/dnsmasq.leases

# Указание, что DHCP сервер работает в режиме authritative

dhcp-authoritative


Возможных настроек намного больше, но мы рассмотрели самые часто используемые, для полного перечня обращайтесь к документации

Перечень всех опций DHCP можно найти по сслыке IANA (Internet Assigned Numbers Authority).

Настройка DNS

Настройка DNS сервера производится в том же конфигурационном файле /etc/dnsmasq.conf

cat /etc/dnsmasq.conf

# Указание интерфейсов и ip-адрес мы рассмотрели в секции DHCP

# Указываем доменое имя

domain=test.un

# можно указать отдельное доменое имя, для отдельной сети

domain=wifi.test.un,192.168.100.0/24

#Или для определенного диапозона адресов

domain=range.test.un,192.168.100.100,192.168.100.200

# Указание серверов для форвардинга запросов

server=8.8.8.8

# Указание адресов доменных серверов для перенаправления запроса к определенным зонам

server=/office.un/192.168.50.10

# Аналогично можно указать для обратной зоны

server=/50.168.192.in-addr.arpa/192.168.50.10

#По умолчанию dnsmasq использует файл /etc/hosts для сопоставления имен
#хостов IP-адресам, но это тоже можно изменить. Если вы не хотите
#использовать /etc/hosts, вы можете указать это при помощи опции

no-hosts

# Если вы хотите использовать для этих целей другой файл

addn-hosts= "путь к файлу"

#Записи зоны

#Запись типа А

address=/mail-server.test.un/192.168.0.55

address=/ldap.test.un/192.168.0.210

#Запись CNAME

cname=mail-server,mail # алиасом для mail-server будет имя mail

#Запист типа SRV

srv-host=_ldap._tcp.test.un,ldap.test.un,389

#Алиасы или подмена ip-адресов
#Кроме задания собственных записей DNS можно изменять информацию,
#получаемую от внешних DNS-серверов путем подмены полученного IP-адреса.
#Для замены одного адреса

alias=10.10.1.1,172.20.1.1 # если при запросе от внешнего DNS сервера мы получили адрес 
						   #10.10.1.1 то мы подменим его на 172.20.1.1

#Или можно заменять целую сеть

alias=10.10.1.0,172.20.1.0,255,255,255,0


#Dnsmasq читает файл /etc/resolv.conf для определения перечня DNS серверов
#для форвардинга, если вы хотите поменять это и указать другой файл для этих целей

resolv-file= "путь к файлу"


Для того, чтобы обращения к DNS шли именно на dnsmasq на том же сервере, где он сам работает, необходимо указать первой записью в /etc/resolv.conf следующую строку

nameserver 127.0.0.1

установка

Итак первым делом нам потребуется установить пакет

yum install openvpn

1 yum install openvpn

у меня он был в дистрибутиве…
и… во-первых: очень старый

во-вторых: писал в лог вот такую ошибку

×
Jan 16 13:47:17 localhost openvpn: OpenVPN 2.0.9 x86_64-redhat-linux-gnu built on Nov 12 2010
Jan 16 13:47:17 localhost openvpn: Sorry, ‘Auth’ password cannot be read from a file
Jan 16 13:47:17 localhost openvpn: Exiting

В общем, мало того что старая версия, так ещё и собрана без поддержки логина-пароля, а на микротике без этого никак. Но проблема очень просто решается, надо добавить репозиторий EPEL

yum install epel-release

1 yum install epel-release

либо

rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

1 rpm-Uvh http//download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

а затем снова набираем

yum install openvpn

1 yum install openvpn

Step 8: Connect a Client to OpenVPN

The instructions on how to connect to OpenVPN differ depending on your client machine’s operating system.

For Windows Users

1. First, copy the client.ovpn configuration file in the C:Program FilesOpenVPNconfig directory.

2. Download and install the OpenVPN application. You can find the latest build on the OpenVPN Community Downloads page. Once you have installed the application, launch OpenVPN.

3. Right-click the OpenVPN system tray icon and select Connect. To perform this task, you need administrative privileges.

For macOS Users

You can connect to OpenVPN from a macOS system using Tunnelblick (an open-source graphic user interface for OpenVPN on OS X and macOS).

Before launching Tunnelblick, make sure to store the client.ovpn configuration file in the ~/Library/Application Support/Tunnelblick/Configurations directory.

Conclusion

After reading this article, you should have successfully set up and configured OpenVPN on a CentOS server. Additionally, you should have learned how to access the OpenVPN server from a Linux, Windows, or macOS client machine.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: