Этап 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:
- Sign in to your Linux system on the console or via SSH and obtain root privileges.
- 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.