This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
пакет_openvpn [2020/12/28 17:56] val [Настройка с использованием клиентских сертификатов] |
пакет_openvpn [2025/10/20 08:27] (current) val [Настройка клиента] |
||
|---|---|---|---|
| Line 25: | Line 25: | ||
| === Настройка сервера === | === Настройка сервера === | ||
| <code> | <code> | ||
| - | # cp ca.* /etc/ssl/certs/ | + | gate# |
| - | # cp gate.crt /etc/ssl/certs/ | + | cp -v ca.* /etc/ssl/certs/ |
| - | # cp gate.key /etc/ssl/private/ | + | cp -v gate.crt /etc/ssl/certs/ |
| + | cp -v gate.key /etc/ssl/private/ | ||
| gate# cat /etc/openvpn/openvpn1.conf | gate# cat /etc/openvpn/openvpn1.conf | ||
| Line 38: | Line 39: | ||
| push "route 192.168.100+X.0 255.255.255.0" | push "route 192.168.100+X.0 255.255.255.0" | ||
| - | #push "dhcp-option DNS 172.16.1.254" | + | #push "route 192.168.X.0 255.255.255.0" |
| + | #push "dhcp-option DNS 192.168.X.10" | ||
| #push "block-outside-dns" | #push "block-outside-dns" | ||
| + | #push "dhcp-option DOMAIN corpX.un" | ||
| dh /etc/openvpn/dh2048.pem | dh /etc/openvpn/dh2048.pem | ||
| + | |||
| ca /etc/ssl/certs/ca.crt | ca /etc/ssl/certs/ca.crt | ||
| crl-verify /etc/ssl/certs/ca.crl | crl-verify /etc/ssl/certs/ca.crl | ||
| cert /etc/ssl/certs/gate.crt | cert /etc/ssl/certs/gate.crt | ||
| key /etc/ssl/private/gate.key | key /etc/ssl/private/gate.key | ||
| + | |||
| status /var/log/openvpn1-status.log | status /var/log/openvpn1-status.log | ||
| </code> | </code> | ||
| - | Тестирование конфигурации | + | === Тестирование конфигурации === |
| <code> | <code> | ||
| # openvpn --config /etc/openvpn/openvpn1.conf | # openvpn --config /etc/openvpn/openvpn1.conf | ||
| + | |||
| + | # timeout 5 openvpn --config /etc/openvpn/openvpn1.conf --management 127.0.0.1 65501 --port 65500; test $? -eq 124 && echo OK | ||
| </code> | </code> | ||
| - | Включение и запуск | + | === Включение и запуск === |
| <code> | <code> | ||
| Line 63: | Line 70: | ||
| </code> | </code> | ||
| - | === Настройка клиента === | + | ==== Настройка клиента ==== |
| + | |||
| + | === Windows === | ||
| * [[https://mail.bmstu.ru/~postmaster/openvpn-install-2.4.0-I601.exe]] | * [[https://mail.bmstu.ru/~postmaster/openvpn-install-2.4.0-I601.exe]] | ||
| + | * [[https://openvpn.net/community-downloads/|OpenVPN community downloads]] [[Chrome]] | ||
| * Начиная с Windows 7 необходимо запускать OpenVPN с правами администратора | * Начиная с Windows 7 необходимо запускать OpenVPN с правами администратора | ||
| * [[Пакет OpenSSL#Создание пользовательского сертификата, подписанного CA]] | * [[Пакет OpenSSL#Создание пользовательского сертификата, подписанного CA]] | ||
| <code> | <code> | ||
| + | Start OpenVPN GUI | ||
| + | |||
| C:\>notepad C:\Users\student\OpenVPN\config\user1.ovpn | C:\>notepad C:\Users\student\OpenVPN\config\user1.ovpn | ||
| </code><code> | </code><code> | ||
| Line 80: | Line 92: | ||
| cert user1.crt | cert user1.crt | ||
| key user1.key | key user1.key | ||
| + | </code> | ||
| + | |||
| + | * !!! [[https://serverfault.com/questions/607601/include-certificates-in-ovpn-file|include certificates in .OVPN file]] | ||
| + | |||
| + | === Linux === | ||
| + | |||
| + | <code> | ||
| + | debian:~# apt install openvpn resolvconf wget | ||
| + | |||
| + | debian:~# openvpn --script-security 2 --up /etc/openvpn/update-resolv-conf --down /etc/openvpn/update-resolv-conf --config user1.ovpn | ||
| </code> | </code> | ||
| ==== Индивидуальная настройка параметров клиентов ==== | ==== Индивидуальная настройка параметров клиентов ==== | ||
| + | |||
| + | * [[https://serverfault.com/questions/1048592/openvpn-routing-from-server-to-client|OpenVPN routing from server to client]] | ||
| * базируется на атрибуте CN | * базируется на атрибуте CN | ||
| Line 91: | Line 115: | ||
| ... | ... | ||
| client-config-dir ccd | client-config-dir ccd | ||
| + | #route 192.168.100+Y.0 255.255.255.0 | ||
| ... | ... | ||
| </code><code> | </code><code> | ||
| Line 96: | Line 121: | ||
| </code><code> | </code><code> | ||
| ifconfig-push 192.168.200+X.4*N+2 192.168.200+X.4*N+1 | ifconfig-push 192.168.200+X.4*N+2 192.168.200+X.4*N+1 | ||
| + | #iroute 192.168.100+Y.0 255.255.255.0 | ||
| </code> | </code> | ||
| - | ==== Использование PAM аутентификации вместо клиентских сертификатов ==== | + | ==== Использование PAM аутентификации ==== |
| * [[https://www.linuxsysadmintutorials.com/setup-pam-authentication-with-openvpns-auth-pam-module|Setup PAM authentication with OpenVPN's auth-pam module]] | * [[https://www.linuxsysadmintutorials.com/setup-pam-authentication-with-openvpns-auth-pam-module|Setup PAM authentication with OpenVPN's auth-pam module]] | ||
| * [[https://github.com/OpenVPN/openvpn/tree/master/src/plugins/auth-pam|openvpn/src/plugins/auth-pam/]] | * [[https://github.com/OpenVPN/openvpn/tree/master/src/plugins/auth-pam|openvpn/src/plugins/auth-pam/]] | ||
| + | * [[https://openvpn.net/community-resources/using-alternative-authentication-methods/|OpenVPN Using alternative authentication methods]] | ||
| + | * [[Пакет OpenSSL#Создание самоподписанного сертификата]] | ||
| <code> | <code> | ||
| - | gate# cat /etc/pam.d/login | + | gate# less /etc/pam.d/login |
| gate# cat /etc/openvpn/openvpn1.conf | gate# cat /etc/openvpn/openvpn1.conf | ||
| Line 111: | Line 139: | ||
| #### crl-verify ... | #### crl-verify ... | ||
| - | #ca /etc/ssl/certs/ca.crt | + | ca /etc/ssl/certs/server.crt |
| - | или | + | cert /etc/ssl/certs/server.crt |
| - | #ca /etc/ssl/certs/gate.crt #may be selfsigned | + | key /etc/ssl/private/server.key |
| - | + | ||
| - | cert /etc/ssl/certs/gate.crt | + | |
| ... | ... | ||
| plugin /usr/lib/x86_64-linux-gnu/openvpn/plugins/openvpn-plugin-auth-pam.so login | plugin /usr/lib/x86_64-linux-gnu/openvpn/plugins/openvpn-plugin-auth-pam.so login | ||
| verify-client-cert none | verify-client-cert none | ||
| username-as-common-name | username-as-common-name | ||
| - | </code><code> | + | #duplicate-cn #несколько подключений под одной учетной записью |
| - | C:\>notepad C:\Program Files\OpenVPN\config\client.ovpn | + | </code> |
| - | </code><code> | + | |
| + | * [[#Тестирование конфигурации]] | ||
| + | * [[#Настройка клиента]] | ||
| + | <code> | ||
| + | cmd run as admin C:\>notepad C:\Program Files\OpenVPN\config\client.ovpn | ||
| + | </code> | ||
| + | |||
| + | <code> | ||
| ... | ... | ||
| auth-user-pass | auth-user-pass | ||
| + | #static-challenge "Enter TOTP Authenticator Code" 1 | ||
| <ca> | <ca> | ||
| -----BEGIN CERTIFICATE----- | -----BEGIN CERTIFICATE----- | ||
| Line 130: | Line 164: | ||
| -----END CERTIFICATE----- | -----END CERTIFICATE----- | ||
| </ca> | </ca> | ||
| + | </code> | ||
| + | |||
| + | === Включение 2FA === | ||
| + | |||
| + | <code> | ||
| + | debian:~# cp /etc/pam.d/login /etc/pam.d/openvpn | ||
| + | |||
| + | debian:~# cat /etc/pam.d/openvpn | ||
| + | </code><code> | ||
| + | auth required pam_google_authenticator.so authtok_prompt=pin | ||
| + | #auth required pam_google_authenticator.so authtok_prompt=pin user=root secret=/etc/openvpn/google-auth/${USER} | ||
| + | ... | ||
| + | </code> | ||
| + | |||
| + | * [[Использование библиотеки PAM#Использование pamtester]] | ||
| + | <code> | ||
| + | # cat /etc/openvpn/openvpn1.conf | ||
| + | </code><code> | ||
| + | ... | ||
| + | plugin /usr/lib/x86_64-linux-gnu/openvpn/plugins/openvpn-plugin-auth-pam.so "openvpn login USERNAME password PASSWORD pin OTP" | ||
| + | ... | ||
| + | </code><code> | ||
| + | debian:~# systemctl enable openvpn@openvpn1 --now | ||
| + | |||
| + | debian:~# journalctl -f | ||
| + | ... | ||
| + | Aug 29 09:45:09 debian openvpn(pam_google_authenticator)[2483]: Failed to read "/home/student/.google_authenticator" for "student" | ||
| + | ... | ||
| + | </code><code> | ||
| + | # systemctl edit openvpn@openvpn1 | ||
| + | </code><code> | ||
| + | [Service] | ||
| + | ProtectHome=no | ||
| </code> | </code> | ||
| ==== Использование RADIUS аутентификации и учета ==== | ==== Использование RADIUS аутентификации и учета ==== | ||
| - | * [[http://itinrussian.ru/freeradius-openvpn-%D0%BD%D0%B0-debian-8/|Freeradius + openvpn]] | + | * [[https://stackoverflow.com/questions/71159790/authenticate-openvpn-users-via-radius-freeradius]] |
| ===== Настройка peer2peer конфигурации ===== | ===== Настройка peer2peer конфигурации ===== | ||
| + | |||
| + | * В новых версиях (с Debian12) теперь так: [[https://wiki.gentoo.org/wiki/OpenVPN/fingerprint-authentication|OpenVPN/fingerprint-authentication]] | ||
| ==== Debian/Ubuntu/FreeBSD ==== | ==== Debian/Ubuntu/FreeBSD ==== | ||
| <code> | <code> | ||
| + | gate.corpX.un# cd /etc/openvpn/ | ||
| + | |||
| gate.corpX.un# openvpn --genkey --secret static.key | gate.corpX.un# openvpn --genkey --secret static.key | ||
| - | gate.corpX.un# scp static.key gate.corpY.un: | + | gate.corpX.un# scp static.key gate.corpY.un:/etc/openvpn/ |
| gate.corpX.un# cat connect_to_Y.conf | gate.corpX.un# cat connect_to_Y.conf | ||
| Line 152: | Line 223: | ||
| ifconfig 192.168.X+Y.X 192.168.X+Y.Y | ifconfig 192.168.X+Y.X 192.168.X+Y.Y | ||
| route 192.168.100+Y.0 255.255.255.0 | route 192.168.100+Y.0 255.255.255.0 | ||
| - | secret /root/static.key | + | secret /etc/openvpn/static.key |
| </code> | </code> | ||
| Line 166: | Line 237: | ||
| </code> | </code> | ||
| - | ===== Запуск сервиса ===== | ||
| - | |||
| - | ==== Debian/Ubuntu ==== | ||
| - | <code> | ||
| - | # service openvpn@openvpn1 start | ||
| - | </code> | ||
| ===== Мониторинг сервиса ===== | ===== Мониторинг сервиса ===== | ||
| Line 183: | Line 248: | ||
| ... | ... | ||
| management localhost 7505 | management localhost 7505 | ||
| + | # management 0.0.0.0 7505 | ||
| ... | ... | ||
| </code><code> | </code><code> | ||
| Line 188: | Line 254: | ||
| </code><code> | </code><code> | ||
| status | status | ||
| + | |||
| + | kill user1 | ||
| </code> | </code> | ||