Бвязка OpenVPN Π½Π° Windows Server ΠΈ Mikrotik с ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠ΅ΠΉ этого Π΄ΠΎΠ±Ρ€Π° Π² Linux

Π”ΠΎΠ±Ρ€ΠΎΠ³ΠΎ!

ΠšΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΡŽ Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ, Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ, становится Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ доступ.
Π‘ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ доступ ΠΊ своим сСтям Π½Π° прСдприятии сталкиваСтся практичСский ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ АйВишник.

МСня, ΠΊΠ°ΠΊ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ…, эта ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Π½Π°ΠΊΡ€Ρ‹Π»Π° с Π³Ρ€ΠΈΡ„ΠΎΠΌ β€œΠ²Ρ‡Π΅Ρ€Π°β€. ΠŸΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π² всС Β«Π·Π°Β» ΠΈ Β«ΠΏΡ€ΠΎΡ‚ΠΈΠ²Β», Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Π»ΠΎΠΏΠ°Ρ‚ΠΈΠ² Ρ‚ΠΎΠ½Π½Ρ‹ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈ ΠΏΠΎΠΊΠΎΠ²Ρ‹Ρ€ΡΠ²ΡˆΠΈΡΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π² Ρ‚Π΅ΠΎΡ€ΠΈΠΈ, я Ρ€Π΅ΡˆΠΈΠ» ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ установкС.

Π’ цСлях бСзопасности, Π±Ρ‹Π» Π²Ρ‹Π±Ρ€Π°Π» OpenVPN Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ: Π½Π° сСрвСр с ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой Windows Server 2012 Π±Ρ‹Π»Π° установлСна Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина, Π½Π° Π½Π΅ΠΉ Ρ‚Π°ΠΊΠΆΠ΅, Windows Server 2012, Π° Π½Π° Π½Π΅ΠΌ, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, сСрвСр OpenVPN, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выпускал ΠΈ подписывал сСртификаты.

Для удобства ΠΎΠ±Π·ΠΎΠ²Π΅ΠΌ Π΅Π³ΠΎ «сСрвСр сСртификации». Π”Π°Π»Π΅Π΅, взял сСртификат сСрвСра, Π·Π°Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΠ» Π΅Π³ΠΎ Π² Mikrotik, Π° Π½Π° самом ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ‚ΠΎΡ€Π΅ Mikrotik поднял OpenVPN с ΡƒΡ‡Π΅Ρ‚Π½Ρ‹ΠΌΠΈ записями, профилями. Для выпуска сСртификата ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Ρ‚Π°ΠΊΠΆΠ΅ использовал сСрвСр сСртификации.

РСализация, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, аховая, ΠΈ, хотя Π½Π° Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΠΎΠ΅Π³ΠΎ ΠΎΠΏΡ‹Ρ‚Π° Π² ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… Π²Π΅Ρ‰Π°Ρ… Π±Ρ‹Π»ΠΎ, скаТСм, Π½Π΅ достаточно, Π² вопросах обСспСчСния бСзопасности, это Π±Ρ‹Π»ΠΎ Π½Π΅ самоС ΠΏΠ»ΠΎΡ…ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅.

Данная связка ΠΏΠΎΡ€Π°Π±ΠΎΡ‚Π°Π»Π° ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ врСмя ΠΈ ΠΌΠ½Π΅ Π±Ρ‹Π»Π° Π²Ρ‹Π΄Π°Π½Π° новая вводная: пСрСнСсти сСрвСр сСртификации Π½Π° Linux, ΠΏΡ€ΠΈ этом связь с Mikrotik ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ β€” ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΡΡ‚Ρ€Π°Π΄Π°Ρ‚ΡŒ.

Мои знания ΠΏΠΎ Linux Π½Π° Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π»ΠΈΡΡŒ Π½Π° Ubuntu 16.04LTS с графичСским интСрфСйсом, которая использовалась ΠΊΠ°ΠΊ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠΎ RDP ΠΊ сСрвСру Windows. Π’ΠΎ Π΅ΡΡ‚ΡŒ, sudo apt-get -f install -y, ΠΈ Π½ΠΈ сантимСтра большС.

Π˜Π·ΡƒΡ‡ΠΈΠ² вопрос, какая OS ΠΈΠ· Linux сСмСйства Π±ΠΎΠ»Π΅Π΅ устойчива ΠΈ пСрспСктивна для ΠΌΠΎΠ΅ΠΉ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ, я остановился Π½Π° CentOS 7 Minimal.

Для Π½Π°Ρ‡Π°Π»Π° я Ρ€Π΅ΡˆΠΈΠ» Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΊΠΎΠΏΠ°Ρ‚ΡŒΡΡ Π² Ρ‚Π΅ΠΎΡ€ΠΈΠΈ, ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΊΠ°ΠΊ это Π²ΠΎΠΎΠ±Ρ‰Π΅ устроСно ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Π» Π²ΠΈΠ΄Π΅ΠΎ ΡƒΡ€ΠΎΠΊΠΈ Π½Π° ΠΊΠ°Π½Π°Π»Π΅ www.youtube.com/channel/UCKdRgZWgy42YxoFcTJ30LTA (Π’ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ Ρ€Π΅ΠΊΠ»Π°ΠΌΠ°, просто ΠΎΠ½ΠΈ попались ΠΌΠ½Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌΠΈ). Π”Π΅Π²ΡƒΡˆΠΊΠ° с приятным голосом ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ»Π° мСня с основами Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ OS.

Для Π½Π°Ρ‡Π°Π»Π° я запустил Π½Π° своСм ΠΊΠΎΠΌΠΏΠ΅ Hyper-V, установил Ρ‚ΡƒΠ΄Π° CentOS 7 Minimal, Π²ΠΎ врСмя установки создал ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Admin ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π·Π°ΠΊΡ€Ρ‹Π» ssh для root. ΠŸΠΎΠΏΡ€ΠΎΡ‰Π°Π²ΡˆΠΈΡΡŒ с красивым Ρ€Π°Π·Π½ΠΎΡ†Π²Π΅Ρ‚Π½Ρ‹ΠΌ экраном, погрузился Π² Ρ‡Π΅Ρ€Π½ΠΎ-Π±Π΅Π»Ρ‹ΠΉ ΠΌΠΈΡ€ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°.

Π”ΡƒΠΌΠ°ΡŽ, Π½Π΅Ρ‚ смысла ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ процСсс установки софта, Π»ΡƒΡ‡ΡˆΠ΅ Π·Π°ΠΎΡΡ‚Ρ€ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ Π² процСссС ΠΈ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠ½Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ нСбольшой скрипт (ΠΎΠ½ ΠΏΠΎΠ΄ ΠΊΠ°Ρ‚ΠΎΠΌ. ОписаниС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅, Π½ΠΎ Π² Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° я всС это Π΄Π΅Π»Π°Π», этого скрипта Π΅Ρ‰Π΅ Π½Π΅ Π±Ρ‹Π»ΠΎ, всС дСлалось Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅, Π½Π° ΠΎΡ‰ΡƒΠΏΡŒ ΠΈ Π½Π°ΡƒΠ³Π°Π΄).

Π’ скриптС я постарался Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ установку минимально Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ для сСрвСра, ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Selinux, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Epel, ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ OpenVPN, ΠΈ ΠΏΡ€. НиТС сам скрипт, ΠΎΠ½ простой, Π½ΠΎ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Π Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π½Π΅ Π±ΡƒΠ΄Ρƒ, Π½ΠΎ Ссли ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ потрСбуСтся, ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΎΡ‚Π²Π΅Ρ‡Ρƒ.

ПослС использования скрипта ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ ΡƒΠΆΠ΅ настроСнный сСрвСр OpenVPN, ΠΏΠΎΠ΄ΠΌΠΈΠ³ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ Π·Π΅Π»Π΅Π½Ρ‹ΠΌ Π³Π»Π°Π·ΠΎΠΌ.

#!/bin/bash
cd /etc/sysconfig/
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' selinux
sudo setenforce 0
cd /home/Admin
sudo yum update -y
sudo yum install epel-release -y
sudo yum install mc -y
sudo yum install nano -y
sudo cp /usr/share/mc/syntax/sh.syntax /usr/share/mc/syntax/unknown.syntax
sudo yum install chrony -y
sudo systemctl start chronyd
sudo systemctl enable chronyd
sudo yum install net-tools -y
sudo yum install iftop -y
sudo yum install htop -y
sudo yum install lsof -y
sudo yum install dos2unix -y
sudo yum install wget -y
sudo yum install tcpdump -y
sudo yum install openvpn -y
wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.3/EasyRSA-3.0.3.tgz
sudo tar -xvzf EasyRSA-3.0.3.tgz
sudo chown -R Admin:Admin /var/log
sudo chmod 755 /var/log
mkdir /var/log/openvpn
mkdir /etc/openvpn/ccd	
sudo chown -R Admin:Admin /etc/openvpn/ccd
sudo chown -R Admin:Admin /var/log/openvpn
chmod 755 /etc/openvpn/ccd
chmod 755 /var/log/openvpn
echo >/var/log/openvpn/openvpn-status.log
echo >/var/log/openvpn/openvpn.log
sudo chown -R Admin:Admin /etc/resolv.conf
chmod 755 /etc/resolv.conf
echo  nameserver 8.8.8.8 >>/etc/resolv.conf
cd /etc/openvpn/ 
sudo /home/Admin/EasyRSA-3.0.3/easyrsa init-pki
sudo chown -R Admin:Admin /etc/openvpn
chmod 755 /etc/openvpn
 echo  set_var EASYRSA_DN "org" >/home/Admin/EasyRSA-3.0.3/test
 echo	set_var EASYRSA_REQ_COUNTRY "RU" >>/home/Admin/EasyRSA-3.0.3/test
 echo	set_var EASYRSA_KEY_SIZE 4096 >>/home/Admin/EasyRSA-3.0.3/test
 echo	set_var EASYRSA_REQ_PROVINCE "LIP" >>/home/Admin/EasyRSA-3.0.3/test
 echo	set_var EASYRSA_REQ_CITY "Lipetsk" >>/home/Admin/EasyRSA-3.0.3/test
 echo	set_var EASYRSA_REQ_ORG "Cool-Admin" >>/home/Admin/EasyRSA-3.0.3/test
 echo	set_var EASYRSA_REQ_EMAIL "xxx.ru" >>/home/Admin/EasyRSA-3.0.3/test
 echo	set_var EASYRSA_REQ_OU "Our_ORG" >>/home/Admin/EasyRSA-3.0.3/test
 echo	set_var EASYRSA_REQ_CN "changeme" >>/home/Admin/EasyRSA-3.0.3/test
 echo	set_var EASYRSA_CERT_EXPIRE 3650 >>/home/Admin/EasyRSA-3.0.3/test
 echo	set_var EASYRSA_DH_KEY_SIZE=2048 >>/home/Admin/EasyRSA-3.0.3/test
sudo /home/Admin/EasyRSA-3.0.3/easyrsa build-ca nopass
sudo /home/Admin/EasyRSA-3.0.3/easyrsa build-server-full Serv nopass
sudo /home/Admin/EasyRSA-3.0.3/easyrsa build-client-full Client1 nopass
sudo /home/Admin/EasyRSA-3.0.3/easyrsa --vars=vars gen-dh
sudo /home/Admin/EasyRSA-3.0.3/easyrsa --vars=vars gen-crl
 mkdir keys
sudo chown -R Admin:Admin /etc/openvpn/keys
chmod 755 /etc/openvpn/keys
sudo cp /etc/openvpn/pki/ca.crt /etc/openvpn/keys
sudo cp /etc/openvpn/pki/dh.pem /etc/openvpn/keys
sudo cp /etc/openvpn/pki/crl.pem /etc/openvpn/keys
sudo cp /etc/openvpn/pki/issued/Serv.crt /etc/openvpn/keys
sudo cp /etc/openvpn/pki/private/Serv.key /etc/openvpn/keys
echo port 443 						>/etc/openvpn/server.conf
echo proto udp					>>/etc/openvpn/server.conf
echo dev tun						>>/etc/openvpn/server.conf
echo ca /etc/openvpn/keys/ca.crt			>>/etc/openvpn/server.conf		
echo cert /etc/openvpn/keys/Serv.crt			>>/etc/openvpn/server.conf
echo key /etc/openvpn/keys/Serv.key		>>/etc/openvpn/server.conf
echo dh /etc/openvpn/keys/dh.pem			>>/etc/openvpn/server.conf
echo crl-verify /etc/openvpn/keys/crl.pem		>>/etc/openvpn/server.conf
echo client-config-dir /etc/openvpn/ccd		>>/etc/openvpn/server.conf
echo topology subnet					>>/etc/openvpn/server.conf
echo server 172.21.0.0 255.255.255.0		>>/etc/openvpn/server.conf
echo route 172.21.0.0 255.255.255.0			>>/etc/openvpn/server.conf
echo push "dhcp-option DNS 8.8.8.8"		>>/etc/openvpn/server.conf
echo push "dhcp-option DNS 8.8.4.4"		>>/etc/openvpn/server.conf
echo keepalive 10 120				>>/etc/openvpn/server.conf
echo persist-key					>>/etc/openvpn/server.conf
echo persist-tun					>>/etc/openvpn/server.conf
echo status /var/log/openvpn/openvpn-status.log	>>/etc/openvpn/server.conf
echo log-append /var/log/openvpn/openvpn.log	>>/etc/openvpn/server.conf
echo verb 2						>>/etc/openvpn/server.conf
echo mute 20						>>/etc/openvpn/server.conf
echo daemon						>>/etc/openvpn/server.conf
echo mode server					>>/etc/openvpn/server.conf
echo user nobody					>>/etc/openvpn/server.conf
echo group nobody					>>/etc/openvpn/server.conf
sudo chown -R Admin:Admin /etc/sysctl.conf
chmod 755 /etc/sysctl.conf
echo net.ipv4.ip_forward=1 >>/etc/sysctl.conf
sudo sysctl -p /etc/sysctl.conf
sudo systemctl enable openvpn@server
sudo systemctl start openvpn@server
sudo systemctl status openvpn@server

Установка OpenVPN ΠΏΡ€ΠΎΡˆΠ»Π° Π½Π΅ совсСм ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ.

НС зная ΠΏΡ€ΠΎ особСнности ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΠΏΡ€Π°Π² Π½Π° Linux систСмах, я ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΠ» массу Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΎΠ² ΠΈ присвоСния всСм Ρ„Π°ΠΉΠ»Π°ΠΌ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΡ€Π°Π².

Когда ΠΊΠ½ΠΎΠΏΠΊΠ° OpenVPN стала Π·Π΅Π»Π΅Π½ΠΎΠΉ, я ΠΎΡ‡Π΅Π½ΡŒ обрадовался, Π½ΠΎ ΠΊΠ°ΠΊ оказалось, это Π±Ρ‹Π»ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡Π°Π»ΠΎ. По простотС Π΄ΡƒΡˆΠ΅Π²Π½ΠΎΠΉ, я рассчитывал ΠΏΠΎΠ΄ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΡ€Π½Π΅Π²Ρ‹Π΅ сСртификаты ΠΈ Ρ„Π°ΠΉΠ» crl.pem, надСясь, Ρ‡Ρ‚ΠΎ всС Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Π’ ΠΈΡ‚ΠΎΠ³Π΅, ΠΌΠ½Π΅ понадобилось пСрСнСсти с сСрвСра Π½Π° Windows ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹:

Serv.crt β€” Π‘Π΅Ρ€Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ сСрвСра
Serv.key β€” ΠšΠ»ΡŽΡ‡ сСрвСра
Ca.crt β€” ΠšΠΎΡ€Π½Π΅Π²ΠΎΠΉ сСртификат
Ca.key β€” ΠšΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΊΠ»ΡŽΡ‡
Crl.pem β€” Π€Π°ΠΉΠ» ΠΎΡ‚ΠΎΠ·Π²Π°Π½Π½Ρ‹Ρ… сСртификатов
Dh.pem β€” ΠΊΠ»ΡŽΡ‡Β Π”ΠΈΡ„Ρ„ΠΈ-Π₯Π΅Π»Π»ΠΌΠ°Π½Π°
Index.txt β€” Π€Π°ΠΉΠ» с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎΠ± Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… сСртификатах
Serial β€” ΠΎΠ½ Ρ‚ΠΎΠΆΠ΅ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ сСртификатов

Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»Π°ΡΡŒ ΠΏΠ°ΠΏΠΊΠ° certs_by_serial, Ρ„Π°ΠΉΠ» vars, ΠΈ всС клиСнтскиС ΠΊΠ»ΡŽΡ‡ΠΈ ΠΈ сСртификаты.
На Mikrotik сСртификаты ΠΎΡΡ‚Π°Π²Π°Π»ΠΈΡΡŒ Π½Π° мСстС, поэтому всС Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ появились, ΠΊΠΎΠ³Π΄Π° я попытался ΠΎΡ‚ΠΎΠ·Π²Π°Ρ‚ΡŒ сСртификат, это Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ ΠΎΡ‚ слова совсСм β€” Ρ„Π°ΠΉΠ» index.txt Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ пСрСвСсти Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ unix, Π° я этого сразу Π½Π΅ сдСлал. Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π»ΡΡ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΎΠΉ dos2unix.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ сСртификаты ΠΎΡ‚Π·Ρ‹Π²Π°Π»ΠΈΡΡŒ, Π½ΠΎ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Mikrotik Π½Π΅ Π·Π½Π°Π» ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΎΡ‚ΠΎΠ·Π²Π°Π½Ρ‹ ΠΈ Π΅ΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΊΠ°ΠΊ-Ρ‚ΠΎ ΠΎΠ± этом ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ.

ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Π² инструкции, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠΊΠΎΠ½ΡΡƒΠ»ΡŒΡ‚ΠΈΡ€ΠΎΠ²Π°Π²ΡˆΠΈΡΡŒ с АлСксандром ЭРИ (ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ спасибо!), я поднял Π½Π° сСрвСрС сСртификации простой http сСрвСр Apache ΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» Π½Π° Π½Π΅ΠΌ Ρ„Π°ΠΉΠ» ΠΎΡ‚ΠΎΠ·Π²Π°Π½Π½Ρ‹Ρ… сСртификатов. ΠŸΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π·Π°ΠΊΡ€Ρ‹Π» ΠΊ Π½Π΅ΠΌΡƒ доступ, ΠΊΡ€ΠΎΠΌΠ΅ ΠΊΠ°ΠΊ ΠΊ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ Ρ„Π°ΠΉΠ»Ρƒ с ΠΎΠ΄Π½ΠΎΠ³ΠΎ ip.

Π’ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ Mikrotik, Π²ΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ /System/Certificates/CRL ΡƒΠΊΠ°Π·Π°Π» ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ crl.pem. Π’ΡƒΡ‚ слСдуСт ΡƒΡ‚ΠΎΡ‡Π½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Mikrotik ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ для Π²ΠΊΠ»Π°Π΄ΠΊΠΈ CRL Ρ‚ΠΎΠ»ΡŒΠΊΠΎ http ΠΈ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΉ адрСс, Ρ‚.Π΅. Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ: 127.0.0.1/crl/1.crl
ВсС Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ для вСрсий 6.4.2.Ρ… RouterOS, Π½ΠΎ клиСнтскиС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€ΡƒΠΊΠ°ΠΌΠΈ, ΠΈ это для мСня Π±Ρ‹Π»ΠΎ прискорбно ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π»ΠΎ массу нСудобств. Когда Ρ‡Π΅Ρ€Π΅Π· нСдСлю ΠΌΠ½Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ для порядка 50 ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², я Ρ€Π΅ΡˆΠΈΠ» ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ этот процСсс ΠΈ для этого использовал кусочСк Ρ‡ΡƒΠΆΠΎΠ³ΠΎ скрипта, Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π° просторах ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°.

Π‘ΠΊΡ€ΠΈΠΏΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ: послС запуска ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ «имя ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°Β», ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅ΠΌ Π½Π° вопрос Β«ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΈΠ»ΠΈ Π½Π΅Ρ‚Β», послС этого Π·Π°Π±ΠΈΡ€Π°Π΅ΠΌ ΡƒΠΆΠ΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Β«ΠΊΠ»ΠΈΠ΅Π½Ρ‚.ovpnΒ», с ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ Π² Π½Π΅Π³ΠΎ сСртификатами ΠΈ настройками. Π§Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π½Π°Π΄ΠΎ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ /etc/openvpn. Π― ΠΏΠΎΠ΄ΠΏΠΈΡˆΡƒ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ строки, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡƒΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π° свой. Π’Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» с настройками ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Ρ‡Ρ‚ΠΎ-Π±Ρ‹ скрипт подставлял ΠΈΡ… Π² процСссС создания ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

#!/bin/bash
function newClient () {
	echo ""
	echo "Tell me a name for the client."
	echo "Use one word only, no special characters."

	until [[ "$CLIENT" =~ ^[a-zA-Z0-9_]+$ ]]; do
		read -rp "Client name: " -e CLIENT
	done

	echo ""
	echo "Do you want to protect the configuration file with a password?"
	echo "(e.g. encrypt the private key with a password)"
	echo "   1) Add a passwordless client"
	echo "   2) Use a password for the client"

	until [[ "$PASS" =~ ^[1-2]$ ]]; do
		read -rp "Select an option [1-2]: " -e -i 1 PASS
	done

	#cd /etc/openvpn/easy-rsa/ || return
	case $PASS in
		1)
		sudo /home/admin/EasyRSA-3.0.3/easyrsa build-client-full "$CLIENT" nopass
		;;
		2)
		echo "You will be asked for the client password below"
			./easyrsa build-client-full "$CLIENT"
		;;
	esac
# Generates the custom client.ovpn
	cp /etc/openvpn/client-template.txt "$home/home/admin/IT/Temp/$CLIENT.ovpn" 
#ДирСктория Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ хранится Ρ„Π°ΠΉΠ» с настройками ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.
#ДирСктория, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ сформируСтся Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ
	{
		echo "<ca>"
		cat "/etc/openvpn/pki/ca.crt" #ДирСктория хранСния ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ сСртификата
		echo "</ca>"

		echo "<cert>"
		awk '/BEGIN/,/END/' "/etc/openvpn/pki/issued/$CLIENT.crt" #ДирСктория с созданным #сСртификатом ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°
		echo "</cert>"

		echo "<key>"
		cat "/etc/openvpn/pki/private/$CLIENT.key" #ДирСктория с созданным ΠΊΠ»ΡŽΡ‡ΠΎΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°
		echo "</key>"

} >> "$home/home/admin/IT/Temp/$CLIENT.ovpn" #ДирСктория, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ сформируСтся Ρ„Π°ΠΉΠ» #ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ

	echo ""
	echo "Client $CLIENT added, the configuration file is available at $home/admin/IT/OVPN/Temp/$CLIENT.ovpn."
	echo "Download the .ovpn file and import it in your OpenVPN client."
exit 0;
}
newClient

Π§Π΅Ρ€Π΅Π· Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя новая вводная Π½Π° Π·Π°ΠΏΡ€Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ доступа Π²Ρ‹Π½ΡƒΠ΄ΠΈΠ»Π° ΡƒΠ±ΠΈΡ‚ΡŒ ΠΈ этот сСрвСр, ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΡƒΡŽ связку с Mikrotik. Π‘Ρ‹Π» создан Π½ΠΎΠ²Ρ‹ΠΉ сСрвСр OpenVPN, для сотрудников IT-ΠΎΡ‚Π΄Π΅Π»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π½Π° CentOS. Но это ΡƒΠΆΠ΅ совсСм другая история.

Π’Ρ‹Ρ€Π°ΠΆΠ°ΡŽ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΡƒΡŽ Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π½ΠΎΡΡ‚ΡŒ Π˜Π²Π°Π½Ρƒ ΠΈ ΠŸΠ°Π²Π»Ρƒ Π·Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ Π² Ρ€Π΅Π΄Π°ΠΊΡ†ΠΈΠΈ ΡΡ‚Π°Ρ‚ΡŒΠΈ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com