Відмінності між версіями «OpenVPN»
Перейти до навігації
Перейти до пошуку
| (Не показані 25 проміжних версій 4 користувачів) | |||
| Рядок 1: | Рядок 1: | ||
| − | [http://openmaniak.com/ru/openvpn_tutorial.php Установка OPENVPN] | + | * [http://openmaniak.com/ru/openvpn_tutorial.php Установка OPENVPN] |
| + | * [https://www.golinuxcloud.com/renew-ssl-tls-server-certificate-openssl/ Renew SSL/TLS certificate OpenSSL [Step-by-Step]] | ||
| + | * [https://www.dmosk.ru/miniinstruktions.php?mini=openvpn-easyrsa3 Генерирование сертификатов для OpenVPN с помощью Easy-RSA 3] | ||
| − | + | == Налаштування OpenVPN == | |
| − | == | ||
yum install openvpn | yum install openvpn | ||
cd /etc/openvpn/ | cd /etc/openvpn/ | ||
| − | + | очищуєемо або ініціалізуємо каталог з ключами /etc/openvpn/easy-rsa/pki | |
| − | + | ./easyrsa init-pki | |
| − | + | ||
| − | + | створюємо /etc/openvpn/easy-rsa/vars | |
| − | . .. | + | <pre> |
| − | ./ | + | export KEY_COUNTRY="UA" |
| − | Будуємо сертифікат | + | export KEY_PROVINCE="VO" |
| − | ./ | + | export KEY_CITY="Luts'k" |
| − | Будуємо ключ для сервера | + | export KEY_ORG="Sweet Company" |
| − | ./ | + | export KEY_EMAIL="[email protected]" |
| − | Будуємо ключ для клієнтів (на кожного клієнта по одному) | + | export EASYRSA_CERT_EXPIRE=3650 # 10 років, можна поставити й більше |
| − | ./ | + | </pre> |
| + | |||
| + | source vars # щоб не вводити вручну дані, що вище | ||
| + | |||
| + | ./easyrsa build-ca # створюємо ca.key та ca.crt | ||
| + | ./easyrsa build-ca # Будуємо сертифікат | ||
| + | ./easyrsa gen-dh # Формуємо ключ Діффі-Хеллмана | ||
| + | '''Будуємо ключ для сервера''' | ||
| + | ./easyrsa gen-req <server-name> nopass # створюємо запит на сертифікат | ||
| + | ./easyrsa sign-req server <server-name> # генеруємо сертифікат | ||
| + | * після введення команди підтверджуємо правильність даних, ввівши '''yes''' і вводимо пароль, який вказували при створенні кореневого сертифіката. | ||
| + | * '''nopass''' можна упустити, якщо хочемо підвищити безпеку за допомогою пароля на сертифікат. | ||
| + | openvpn --genkey --secret pki/ta.key # створюємо ta.key | ||
| + | |||
| + | Будуємо ключ для клієнтів (на кожного клієнта по одному) | ||
| + | ./easyrsa gen-req <client> nopass | ||
| + | якщо ключ був згенерований з паролем то з допомогою openssl можна зняти парольну фразу | ||
| + | openssl rsa -in [original.key] -out [new.key] | ||
| + | '''Налаштування сервера''' /etc/openvpn/server.conf | ||
| + | <pre> | ||
| + | local <ip.ip.ip.ip> | ||
| + | port <port> # 1194 | ||
| + | user openvpn | ||
| + | group openvpn | ||
| + | proto udp # mikrotik не уміє udp тому для нього і клієнт і сервер в tcp | ||
| + | dev tun | ||
| + | tls-auth /etc/openvpn/easy-rsa/pki/ta.key 0 # тут 0 - це key-direction, у клієнта і сервера key-direction мають відрізнятися | ||
| + | opt-verify | ||
| + | cipher AES-256-GCM # це останній ціфер до якого буде підніматися на сервері і клієнті бажано виставити однакові підтримується з 2.5 | ||
| + | keepalive 10 120 | ||
| + | tun-mtu 1500 | ||
| + | fragment 1300 | ||
| + | mssfix | ||
| + | persist-key | ||
| + | persist-tun | ||
| + | #push "redirect-gateway def1" # якщо треба завернути увесь трафік в тунель | ||
| + | topology net30 | ||
| + | route 192.168.10.0 255.255.255.0 | ||
| + | ifconfig-pool-persist ipp.txt | ||
| + | log /var/log/openvpn.log | ||
| + | status /var/log/openvpn-status.log | ||
| + | verb 4 | ||
| + | server 192.168.0.0 255.255.255.0 # ip клієнтів будть 192.168.0.1- 192.168.0.254 | ||
| + | push "route 192.168.10.0 255.255.255.0" | ||
| + | push "dhcp-option DNS 192.168.10.1" | ||
| + | push "dhcp-option DNS 8.8.8.8" | ||
| + | push "dhcp-option DOMAIN example.com" | ||
| + | push "block-outside-dns" блокує на клієнті dns, використовується лише той, що відправили попередніми стрічками. | ||
| + | </pre> | ||
| + | |||
| + | '''Налаштування клієнта''' config/client.ovpn | ||
| + | <pre> | ||
| + | client | ||
| + | dev tun | ||
| + | proto udp | ||
| + | remote <ip.ip.ip.ip> <port> # 1194 | ||
| + | nobind | ||
| + | cipher AES-256-GCM # це останній ціфер до якого буде підніматися на сервері і клієнті бажано виставити однакові підтримується з 2.5 | ||
| + | tun-mtu 1500 | ||
| + | fragment 1300 | ||
| + | mssfix | ||
| + | auth-nocache | ||
| + | ca ca.crt # або вставка текстом <ca></ca> | ||
| + | cert user.crt # або вставка текстом <cert></cert> | ||
| + | key user.key # або вставка текстом <key></key> | ||
| + | tls-auth ta.key 1 # або вставка текстом <tls-auth></tls-auth> key-direction 1 у клієнта і сервера key-direction мають відрізнятися | ||
| + | remote-cert-tls server | ||
| + | route-method ipapi | ||
| + | route-delay 2 | ||
| + | verb 4 | ||
| + | mute 20 | ||
| + | #log /var/log/openvpn.log | ||
| + | #status /var/log/openvpn-status.log | ||
| + | </pre> | ||
| + | |||
| + | Заборонити клієнту доступ до сервера | ||
| + | revoke-full <ім'я клієнта> | ||
| + | cp keys/crl.pem /etc/openvpn/ | ||
| + | |||
| + | якщо треба зв'язати наприклад філіали, то у конфіг серверу треба добавити стрічки | ||
| + | client-config-dir /etc/openvpn/ccd | ||
| + | client-to-client #для того щоб клієнти бачили один одного | ||
| + | |||
| + | і у каталозі /etc/openvpn/ccd створити файл з іменем клієнта і контентом | ||
| + | iroute 192.168.121.0 255.255.255.0 # роут в мережу клієнта, тобто тут мається на увазі що мережа клієнта 192.168.121.0/24 | ||
| − | + | '''Корисний скрипт для створення конфігів клієнтів''' | |
| + | <pre> | ||
| + | #!/bin/bash | ||
| − | + | if [ -n "$1" ]; then | |
| + | user=$1 | ||
| + | password=<secret-prefix>-$1 | ||
| + | if [ ! -d "/home/clients/$user" ]; then | ||
| + | cd /etc/openvpn/easy-rsa | ||
| + | # Generate certificates for Client <user> | ||
| + | ./easyrsa gen-req $user nopass | ||
| + | # Sign client user certificate will ask (will ask for password for CA) | ||
| + | echo yes | ./easyrsa sign client $user | ||
| + | mkdir /home/clients/$user | ||
| + | fi | ||
| + | cp /etc/openvpn/template.ovpn /home/clients/$user/$user.ovpn | ||
| + | sed -i -e "/<ca>/r /etc/openvpn/easy-rsa/pki/ca.crt" /home/clients/$user/$user.ovpn | ||
| + | sed -i -e "/<key>/r /etc/openvpn/easy-rsa/pki/private/$user.key" /home/clients/$user/$user.ovpn | ||
| + | sed -i -e "/<\/cert>/e cat /etc/openvpn/easy-rsa/pki/issued/$user.crt| sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'" /home/clients/$user/$ | ||
| + | sed -i -e "/<\/tls-auth>/e grep '^[^#;]' /etc/openvpn/easy-rsa/pki/ta.key" /home/clients/$user/$user.ovpn | ||
| + | rar a -ep1 /home/clients/ovpn-$user.rar /home/clients/$user/$user.ovpn -p$password | ||
| + | echo "password for archive $password" | ||
| + | else | ||
| + | echo "client <user> - creates openvpn config for client <user>" | ||
| + | fi | ||
| + | </pre> | ||
Поточна версія на 19:18, 21 січня 2023
- Установка OPENVPN
- Renew SSL/TLS certificate OpenSSL [Step-by-Step]
- Генерирование сертификатов для OpenVPN с помощью Easy-RSA 3
Налаштування OpenVPN
yum install openvpn cd /etc/openvpn/
очищуєемо або ініціалізуємо каталог з ключами /etc/openvpn/easy-rsa/pki
./easyrsa init-pki
створюємо /etc/openvpn/easy-rsa/vars
export KEY_COUNTRY="UA" export KEY_PROVINCE="VO" export KEY_CITY="Luts'k" export KEY_ORG="Sweet Company" export KEY_EMAIL="[email protected]" export EASYRSA_CERT_EXPIRE=3650 # 10 років, можна поставити й більше
source vars # щоб не вводити вручну дані, що вище
./easyrsa build-ca # створюємо ca.key та ca.crt ./easyrsa build-ca # Будуємо сертифікат ./easyrsa gen-dh # Формуємо ключ Діффі-Хеллмана
Будуємо ключ для сервера
./easyrsa gen-req <server-name> nopass # створюємо запит на сертифікат ./easyrsa sign-req server <server-name> # генеруємо сертифікат
- після введення команди підтверджуємо правильність даних, ввівши yes і вводимо пароль, який вказували при створенні кореневого сертифіката.
- nopass можна упустити, якщо хочемо підвищити безпеку за допомогою пароля на сертифікат.
openvpn --genkey --secret pki/ta.key # створюємо ta.key
Будуємо ключ для клієнтів (на кожного клієнта по одному)
./easyrsa gen-req <client> nopass
якщо ключ був згенерований з паролем то з допомогою openssl можна зняти парольну фразу
openssl rsa -in [original.key] -out [new.key]
Налаштування сервера /etc/openvpn/server.conf
local <ip.ip.ip.ip> port <port> # 1194 user openvpn group openvpn proto udp # mikrotik не уміє udp тому для нього і клієнт і сервер в tcp dev tun tls-auth /etc/openvpn/easy-rsa/pki/ta.key 0 # тут 0 - це key-direction, у клієнта і сервера key-direction мають відрізнятися opt-verify cipher AES-256-GCM # це останній ціфер до якого буде підніматися на сервері і клієнті бажано виставити однакові підтримується з 2.5 keepalive 10 120 tun-mtu 1500 fragment 1300 mssfix persist-key persist-tun #push "redirect-gateway def1" # якщо треба завернути увесь трафік в тунель topology net30 route 192.168.10.0 255.255.255.0 ifconfig-pool-persist ipp.txt log /var/log/openvpn.log status /var/log/openvpn-status.log verb 4 server 192.168.0.0 255.255.255.0 # ip клієнтів будть 192.168.0.1- 192.168.0.254 push "route 192.168.10.0 255.255.255.0" push "dhcp-option DNS 192.168.10.1" push "dhcp-option DNS 8.8.8.8" push "dhcp-option DOMAIN example.com" push "block-outside-dns" блокує на клієнті dns, використовується лише той, що відправили попередніми стрічками.
Налаштування клієнта config/client.ovpn
client dev tun proto udp remote <ip.ip.ip.ip> <port> # 1194 nobind cipher AES-256-GCM # це останній ціфер до якого буде підніматися на сервері і клієнті бажано виставити однакові підтримується з 2.5 tun-mtu 1500 fragment 1300 mssfix auth-nocache ca ca.crt # або вставка текстом <ca></ca> cert user.crt # або вставка текстом <cert></cert> key user.key # або вставка текстом <key></key> tls-auth ta.key 1 # або вставка текстом <tls-auth></tls-auth> key-direction 1 у клієнта і сервера key-direction мають відрізнятися remote-cert-tls server route-method ipapi route-delay 2 verb 4 mute 20 #log /var/log/openvpn.log #status /var/log/openvpn-status.log
Заборонити клієнту доступ до сервера
revoke-full <ім'я клієнта> cp keys/crl.pem /etc/openvpn/
якщо треба зв'язати наприклад філіали, то у конфіг серверу треба добавити стрічки
client-config-dir /etc/openvpn/ccd client-to-client #для того щоб клієнти бачили один одного
і у каталозі /etc/openvpn/ccd створити файл з іменем клієнта і контентом
iroute 192.168.121.0 255.255.255.0 # роут в мережу клієнта, тобто тут мається на увазі що мережа клієнта 192.168.121.0/24
Корисний скрипт для створення конфігів клієнтів
#!/bin/bash
if [ -n "$1" ]; then
user=$1
password=<secret-prefix>-$1
if [ ! -d "/home/clients/$user" ]; then
cd /etc/openvpn/easy-rsa
# Generate certificates for Client <user>
./easyrsa gen-req $user nopass
# Sign client user certificate will ask (will ask for password for CA)
echo yes | ./easyrsa sign client $user
mkdir /home/clients/$user
fi
cp /etc/openvpn/template.ovpn /home/clients/$user/$user.ovpn
sed -i -e "/<ca>/r /etc/openvpn/easy-rsa/pki/ca.crt" /home/clients/$user/$user.ovpn
sed -i -e "/<key>/r /etc/openvpn/easy-rsa/pki/private/$user.key" /home/clients/$user/$user.ovpn
sed -i -e "/<\/cert>/e cat /etc/openvpn/easy-rsa/pki/issued/$user.crt| sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'" /home/clients/$user/$
sed -i -e "/<\/tls-auth>/e grep '^[^#;]' /etc/openvpn/easy-rsa/pki/ta.key" /home/clients/$user/$user.ovpn
rar a -ep1 /home/clients/ovpn-$user.rar /home/clients/$user/$user.ovpn -p$password
echo "password for archive $password"
else
echo "client <user> - creates openvpn config for client <user>"
fi