ΠΡΠΎΠ±Π»Π΅ΠΌ ΠΈΠ·ΡΠ°Π²Π°
Π‘ΡΠ°ΡΠΈΡΠ°ΡΠ° ΡΠ° ΠΎΠΏΠΈΡΡΠ²Π° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΠ°ΡΠ° Π½Π° Π΄Π°Π»Π΅ΡΠΈΠ½ΡΠΊΠΈ ΠΏΡΠΈΡΡΠ°ΠΏ Π·Π° Π²ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈ ΡΠΎ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΠΈ Π·Π° ΠΈΠ·Π³ΡΠ°Π΄Π±Π° Π½Π° ΡΠ΅Π»ΠΎΡΠ½ΠΎ Π°Π²ΡΠΎΠ½ΠΎΠΌΠ΅Π½ ΡΠΈΡΡΠ΅ΠΌ ΠΈ ΡΠ΅ Π±ΠΈΠ΄Π΅ ΠΊΠΎΡΠΈΡΠ½Π° Π·Π° ΠΏΡΠΎΡΠΈΡΡΠ²Π°ΡΠ΅ ΠΊΠΎΠ³Π° ΠΈΠΌΠ° Π½Π΅Π΄ΠΎΡΡΠΈΠ³ Π½Π° Π»ΠΈΡΠ΅Π½ΡΠΈ Π²ΠΎ ΠΏΠΎΡΡΠΎΠ΅ΡΠΊΠΈΠΎΡ ΠΊΠΎΠΌΠ΅ΡΡΠΈΡΠ°Π»Π΅Π½ ΡΠΈΡΡΠ΅ΠΌ ΠΈΠ»ΠΈ Π½Π΅Π³ΠΎΠ²ΠΈΡΠ΅ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈ ΡΠ΅ Π½Π΅Π΄ΠΎΠ²ΠΎΠ»Π½ΠΈ.
Π¦Π΅Π»ΡΠ° Π½Π° ΡΡΠ°ΡΠΈΡΠ°ΡΠ° Π΅ Π΄Π° ΡΠ΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ° ΡΠ΅Π»ΠΎΡΠ΅Π½ ΡΠΈΡΡΠ΅ΠΌ Π·Π° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π°ΡΠ΅ Π΄Π°Π»Π΅ΡΠΈΠ½ΡΠΊΠΈ ΠΏΡΠΈΡΡΠ°ΠΏ Π΄ΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΠ°, ΡΡΠΎ Π΅ ΠΌΠ°Π»ΠΊΡ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΠ΄ βΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ OpenVPN Π·Π° 10 ΠΌΠΈΠ½ΡΡΠΈβ.
ΠΠ°ΠΊΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΎΠ°, ΡΠ΅ Π΄ΠΎΠ±ΠΈΠ΅ΠΌΠ΅ ΡΠΈΡΡΠ΅ΠΌ Π²ΠΎ ΠΊΠΎΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ΅ ΠΈ (ΠΎΠΏΡΠΈΠΎΠ½Π°Π»Π½ΠΎ) ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΠΈΠΎΡ Active Directory ΡΠ΅ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ Π·Π° Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡΠ° Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈΡΠ΅. Π’ΠΎΠ°. ΡΠ΅ Π΄ΠΎΠ±ΠΈΠ΅ΠΌΠ΅ ΡΠΈΡΡΠ΅ΠΌ ΡΠΎ Π΄Π²Π° ΡΠ°ΠΊΡΠΎΡΠΈ Π·Π° Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ° - ΡΡΠΎ ΠΈΠΌΠ°ΠΌ (ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ) ΠΈ ΡΡΠΎ Π·Π½Π°ΠΌ (Π»ΠΎΠ·ΠΈΠ½ΠΊΠ°).
ΠΠ½Π°ΠΊ Π΄Π΅ΠΊΠ° Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ ΠΌΡ Π΅ Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΎ Π΄Π° ΡΠ΅ ΠΏΠΎΠ²ΡΠ·Π΅ Π΅ Π½Π΅Π³ΠΎΠ²ΠΎΡΠΎ ΡΠ»Π΅Π½ΡΡΠ²ΠΎ Π²ΠΎ Π³ΡΡΠΏΠ°ΡΠ° myVPNUsr. ΠΡΠ³Π°Π½ΠΎΡ Π·Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ ΡΠ΅ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΠΎΡΠ»Π°ΡΠ½.
Π’ΡΠΎΡΠΎΡΠΈΡΠ΅ Π·Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° Π½Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠ΅ ΡΠ°ΠΌΠΎ ΠΌΠ°Π»ΠΈ Ρ Π°ΡΠ΄Π²Π΅ΡΡΠΊΠΈ ΡΠ΅ΡΡΡΡΠΈ ΠΈ 1 ΡΠ°Ρ ΡΠ°Π±ΠΎΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΡΠΊΠΈΠΎΡ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ.
ΠΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ Π²ΠΈΡΡΡΠ΅Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π° ΡΠΎ OpenVPN ΠΈ Easy-RSA Π²Π΅ΡΠ·ΠΈΡΠ° 3 Π½Π° CetntOS 7, Π½Π° ΠΊΠΎΡΠ° ΠΈ ΡΠ΅ Π΄ΠΎΠ΄Π΅Π»ΡΠ²Π°Π°Ρ 100 vCPU ΠΈ 4 GiB RAM Π½Π° 4 ΠΊΠΎΠ½Π΅ΠΊΡΠΈΠΈ.
ΠΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΡ, ΠΌΡΠ΅ΠΆΠ°ΡΠ° Π½Π° Π½Π°ΡΠ°ΡΠ° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΠ° Π΅ 172.16.0.0/16, Π²ΠΎ ΠΊΠΎΡΠ° VPN ΡΠ΅ΡΠ²Π΅ΡΠΎΡ ΡΠΎ Π°Π΄ΡΠ΅ΡΠ° 172.16.19.123 ΡΠ΅ Π½Π°ΠΎΡΠ° Π²ΠΎ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠΎΡ 172.16.19.0/24, DNS ΡΠ΅ΡΠ²Π΅ΡΠΈ 172.16.16.16 ΠΈ 172.16.17.17, ΠΈ 172.16.20.0, 23. .XNUMX/XNUMX Π΅ Π΄ΠΎΠ΄Π΅Π»Π΅Π½ Π·Π° VPN ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ.
ΠΠ° Π΄Π° ΡΠ΅ ΠΏΠΎΠ²ΡΠ·Π΅ΡΠ΅ ΠΎΠ΄Π½Π°Π΄Π²ΠΎΡ, ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π²ΡΡΠΊΠ° ΠΏΡΠ΅ΠΊΡ ΠΏΠΎΡΡΠ° 1194/udp, Π° Π²ΠΎ DNS Π·Π° Π½Π°ΡΠΈΠΎΡ ΡΠ΅ΡΠ²Π΅Ρ Π΅ ΠΊΡΠ΅ΠΈΡΠ°Π½ A-record gw.abc.ru.
Π‘ΡΡΠΎΠ³ΠΎ Π½Π΅ ΡΠ΅ ΠΏΡΠ΅ΠΏΠΎΡΠ°ΡΡΠ²Π° Π΄Π° ΡΠ΅ ΠΎΠ½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠΈ SELinux! OpenVPN ΡΠ°Π±ΠΎΡΠΈ Π±Π΅Π· ΠΎΠ½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π°ΡΠ΅ Π½Π° Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΠ½ΠΈΡΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ.
ΡΠΎΠ΄ΡΠΆΠΈΠ½Π°
ΠΠ½ΡΡΠ°Π»Π°ΡΠΈΡΠ° Π½Π° ΠΠ‘ ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠ²Π΅Π½ ΡΠΎΡΡΠ²Π΅Ρ ΠΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ° ΠΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ OpenVPN ΠΠ Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡΠ° Π‘ΡΠ°ΡΡΡΠ²Π°ΡΠ΅ ΠΈ Π΄ΠΈΡΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ° ΠΠ·Π΄Π°Π²Π°ΡΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ ΠΈ ΠΎΡΠΏΠΎΠ²ΠΈΠΊΡΠ²Π°ΡΠ΅ ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ° Π½Π° ΠΌΡΠ΅ΠΆΠ° Π¨ΡΠΎ Π΅ ΡΠ»Π΅Π΄Π½ΠΎ
ΠΠ½ΡΡΠ°Π»Π°ΡΠΈΡΠ° Π½Π° ΠΠ‘ ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠ²Π΅Π½ ΡΠΎΡΡΠ²Π΅Ρ
ΠΠ° ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΠ°ΡΠ° CentOS 7.8.2003. Π’ΡΠ΅Π±Π° Π΄Π° Π³ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌΠ΅ ΠΠ‘ Π²ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°. Π£Π΄ΠΎΠ±Π½ΠΎ Π΅ Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ ΠΎΠ²Π° ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ
ΠΠΎ ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΠ°ΡΠ°, Π΄ΠΎΠ΄Π΅Π»ΡΠ²Π°ΡΡΠΈ Π°Π΄ΡΠ΅ΡΠ° Π½Π° ΠΌΡΠ΅ΠΆΠ½ΠΈΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡ (ΡΠΏΠΎΡΠ΅Π΄ ΡΡΠ»ΠΎΠ²ΠΈΡΠ΅ Π·Π° Π·Π°Π΄Π°ΡΠ° 172.16.19.123), Π³ΠΎ Π°ΠΆΡΡΠΈΡΠ°ΠΌΠ΅ ΠΠ‘:
$ sudo yum update -y && reboot
ΠΡΡΠΎ ΡΠ°ΠΊΠ°, ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ ΠΏΠΎΠ³ΡΠΈΠΆΠΈΠΌΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΠΈ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡΠ° Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° Π½Π°ΡΠ°ΡΠ° ΠΌΠ°ΡΠΈΠ½Π°.
ΠΠ° Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠ²Π΅Π½ ΡΠΎΡΡΠ²Π΅Ρ, ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ Π²ΠΈ ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅ openvpn, openvpn-auth-ldap, easy-rsa ΠΈ vim ΠΊΠ°ΠΊΠΎ Π³Π»Π°Π²Π΅Π½ ΡΡΠ΅Π΄Π½ΠΈΠΊ (ΡΠ΅ Π²ΠΈ ΡΡΠ΅Π±Π° ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ΡΠΎ EPEL).
$ sudo yum install epel-release
$ sudo yum install openvpn openvpn-auth-ldap easy-rsa vim
ΠΠΎΡΠΈΡΠ½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ° Π³ΠΎΡΡΠΈΠ½ Π°Π³Π΅Π½Ρ Π·Π° Π²ΠΈΡΡΡΠ΅Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π°:
$ sudo yum install open-vm-tools
Π·Π° VMware ESXi Ρ ΠΎΡΡΠΎΠ²ΠΈ ΠΈΠ»ΠΈ Π·Π° oVirt
$ sudo yum install ovirt-guest-agent
ΠΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ°
ΠΠ΄Π΅ΡΠ΅ Π²ΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΎΡ easy-rsa:
$ cd /usr/share/easy-rsa/3/
ΠΡΠ΅ΠΈΡΠ°Ρ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°:
$ sudo vim vars
ΡΠ»Π΅Π΄Π½Π°ΡΠ° ΡΠΎΠ΄ΡΠΆΠΈΠ½Π°:
export KEY_COUNTRY="RU"
export KEY_PROVINCE="MyRegion"
export KEY_CITY="MyCity"
export KEY_ORG="ABC LLC"
export KEY_EMAIL="[email protected]"
export KEY_CN="allUsers"
export KEY_OU="allUsers"
export KEY_NAME="gw.abc.ru"
export KEY_ALTNAMES="abc-openvpn-server"
export EASYRSA_CERT_EXPIRE=3652
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ Π·Π° ΡΡΠ»ΠΎΠ²Π½Π°ΡΠ° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΠ° ABC LLC ΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈ ΠΎΠ²Π΄Π΅; ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΈ ΠΏΠΎΠΏΡΠ°Π²ΠΈΡΠ΅ Π½Π° Π²ΠΈΡΡΠΈΠ½ΡΠΊΠΈΡΠ΅ ΠΈΠ»ΠΈ Π΄Π° Π³ΠΈ ΠΎΡΡΠ°Π²ΠΈΡΠ΅ ΠΎΠ΄ ΠΏΡΠΈΠΌΠ΅ΡΠΎΡ. ΠΠ°ΡΠ²Π°ΠΆΠ½Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ° Π²ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π°ΡΠ° Π»ΠΈΠ½ΠΈΡΠ°, ΠΊΠΎΡΠ° Π³ΠΎ ΠΎΠ΄ΡΠ΅Π΄ΡΠ²Π° ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΎΡ Π½Π° Π²Π°ΠΆΠ½ΠΎΡΡ Π½Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π²ΠΎ Π΄Π΅Π½ΠΎΠ²ΠΈ. ΠΡΠΈΠΌΠ΅ΡΠΎΡ ΡΠ° ΠΊΠΎΡΠΈΡΡΠΈ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠ° 10 Π³ΠΎΠ΄ΠΈΠ½ΠΈ (365*10+2 ΠΏΡΠ΅ΡΡΠ°ΠΏΠ½ΠΈ Π³ΠΎΠ΄ΠΈΠ½ΠΈ). ΠΠ²Π°Π° Π²ΡΠ΅Π΄Π½ΠΎΡΡ ΡΠ΅ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³ΠΎΠ΄ΠΈ ΠΏΡΠ΅Π΄ Π΄Π° ΡΠ΅ ΠΈΠ·Π΄Π°Π΄Π°Ρ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ.
Π‘Π»Π΅Π΄Π½ΠΎ, Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΠΌΠ΅ Π°Π²ΡΠΎΠ½ΠΎΠΌΠ΅Π½ ΠΎΡΠ³Π°Π½ Π·Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ°.
ΠΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ΡΠΎ Π²ΠΊΠ»ΡΡΡΠ²Π° ΠΈΠ·Π²ΠΎΠ· Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, ΠΈΠ½ΠΈΡΠΈΡΠ°Π»ΠΈΠ·ΠΈΡΠ°ΡΠ΅ Π½Π° CA, ΠΈΠ·Π΄Π°Π²Π°ΡΠ΅ Π½Π° ΠΊΠΎΡΠ΅Π½ΡΠΊΠΈΠΎΡ ΠΊΠ»ΡΡ ΠΈ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ CA, ΠΊΠ»ΡΡΠΎΡ Diffie-Hellman, ΠΊΠ»ΡΡΠΎΡ TLS ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΎΡ ΠΈ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ. ΠΠ»ΡΡΠΎΡ CA ΠΌΠΎΡΠ° Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»Π½ΠΎ Π΄Π° ΡΠ΅ Π·Π°ΡΡΠΈΡΠΈ ΠΈ Π΄Π° ΡΠ΅ ΡΡΠ²Π° Π²ΠΎ ΡΠ°ΡΠ½ΠΎΡΡ! Π‘ΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π½Π° Π±Π°ΡΠ°ΡΠ΅ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΡΡΠ°Π²Π°Ρ ΠΊΠ°ΠΊΠΎ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΈ.
cd /usr/share/easy-rsa/3/
. ./vars
./easyrsa init-pki
./easyrsa build-ca nopass
./easyrsa gen-dh
./easyrsa gen-req myvpngw nopass
./easyrsa sign-req server myvpngw
./easyrsa gen-crl
openvpn --genkey --secret pki/ta.key
ΠΠ²Π° Π³ΠΎ ΠΊΠΎΠΌΠΏΠ»Π΅ΡΠΈΡΠ° Π³Π»Π°Π²Π½ΠΈΠΎΡ Π΄Π΅Π» ΠΎΠ΄ ΠΏΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΡΠΊΠΈΠΎΡ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·Π°ΠΌ.
ΠΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ OpenVPN
ΠΠ΄Π΅ΡΠ΅ Π²ΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΎΡ OpenVPN, ΠΊΡΠ΅ΠΈΡΠ°ΡΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΈ Π·Π° ΡΡΠ»ΡΠ³ΠΈ ΠΈ Π΄ΠΎΠ΄Π°ΡΡΠ΅ Π²ΡΡΠΊΠ° Π΄ΠΎ easy-rsa:
cd /etc/openvpn/
mkdir /var/log/openvpn/ /etc/openvpn/ccd /usr/share/easy-rsa/3/client
ln -s /usr/share/easy-rsa/3/pki/ /etc/openvpn/
ΠΡΠ΅ΠΈΡΠ°ΡΡΠ΅ ΡΠ° Π³Π»Π°Π²Π½Π°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠΊΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° OpenVPN:
$ sudo vim server.conf
ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΡΠΎΠ΄ΡΠΆΠΈΠ½ΠΈ
port 1194
proto udp
dev tun
ca /etc/openvpn/pki/ca.crt
cert /etc/openvpn/pki/issued/myvpngw.crt
key /etc/openvpn/pki/private/myvpngw.key
crl-verify /etc/openvpn/pki/crl.pem
dh /etc/openvpn/pki/dh.pem
server 172.16.20.0 255.255.254.0
ifconfig-pool-persist ipp.txt
push "route 172.16.0.0 255.255.255.0"
push "route 172.17.0.0 255.255.255.0"
client-config-dir ccd
push "dhcp-option DNS 172.16.16.16"
push "dhcp-option DNS 172.16.17.17"
keepalive 10 120
cipher AES-256-CBC
user nobody
group nobody
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log-append /var/log/openvpn/openvpn.log
verb 3
explicit-exit-notify 1
username-as-common-name
plugin /usr/lib64/openvpn/plugin/lib/openvpn-auth-ldap.so /etc/openvpn/ldap.conf
ΠΠ΅ΠΊΠΎΠΈ Π·Π°Π±Π΅Π»Π΅ΡΠΊΠΈ Π·Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅:
- Π°ΠΊΠΎ ΠΏΡΠΈ ΠΈΠ·Π΄Π°Π²Π°ΡΠ΅ΡΠΎ Π½Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π±ΠΈΠ»ΠΎ Π½Π°Π²Π΅Π΄Π΅Π½ΠΎ Π΄ΡΡΠ³ΠΎ ΠΈΠΌΠ΅, Π½Π°Π²Π΅Π΄Π΅ΡΠ΅ Π³ΠΎ;
- Π½Π°Π²Π΅Π΄Π΅ΡΠ΅ Π³ΠΎ Π·Π±ΠΈΡΠΎΡ Π½Π° Π°Π΄ΡΠ΅ΡΠΈ Π·Π° Π΄Π° ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°Π°Ρ Π½Π° Π²Π°ΡΠΈΡΠ΅ Π·Π°Π΄Π°ΡΠΈ*;
- ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° Π΅Π΄Π½Π° ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΡΡΠΈ ΠΈ DNS ΡΠ΅ΡΠ²Π΅ΡΠΈ;
- ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ 2 Π»ΠΈΠ½ΠΈΠΈ ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ Π·Π° Π΄Π° ΡΠ΅ ΡΠΏΡΠΎΠ²Π΅Π΄Π΅ Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡΠ° Π²ΠΎ AD**.
*ΠΠΏΡΠ΅Π³ΠΎΡ Π½Π° Π°Π΄ΡΠ΅ΡΠΈ ΠΈΠ·Π±ΡΠ°Π½ΠΈ Π²ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΡ ΡΠ΅ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ Π΄ΠΎ 127 ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ Π΄Π° ΡΠ΅ ΠΏΠΎΠ²ΡΠ·Π°Ρ ΠΈΡΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½ΠΎ, Π±ΠΈΠ΄Π΅ΡΡΠΈ ΠΌΡΠ΅ΠΆΠ°ΡΠ° /23 Π΅ ΠΈΠ·Π±ΡΠ°Π½Π° ΠΈ OpenVPN ΡΠΎΠ·Π΄Π°Π²Π° ΠΏΠΎΠ΄ΠΌΡΠ΅ΠΆΠ° Π·Π° ΡΠ΅ΠΊΠΎΡ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ ΡΠ° ΠΌΠ°ΡΠΊΠ°ΡΠ° /30.
ΠΠΎΠΊΠΎΠ»ΠΊΡ Π΅ ΠΎΡΠΎΠ±Π΅Π½ΠΎ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ, ΠΏΡΠΈΡΡΠ°Π½ΠΈΡΡΠ΅ΡΠΎ ΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π°Ρ, ΠΌΠ΅ΡΡΡΠΎΠ°, ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ ΠΈΠΌΠ° ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ Π΄Π΅ΠΊΠ° ΠΌΠ΅Π½ΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° Π±ΡΠΎΡΠΎΡ Π½Π° ΠΏΠΎΡΡΠ°ΡΠ° ΡΠ΅ ΠΏΠΎΠ²Π»Π΅ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ Π½Π° SELinux, Π° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΡ tcp ΡΠ΅ Π³ΠΈ Π·Π³ΠΎΠ»Π΅ΠΌΠΈ ΡΡΠΎΡΠΎΡΠΈΡΠ΅, Π±ΠΈΠ΄Π΅ΡΡΠΈ ΠΠΎΠ½ΡΡΠΎΠ»Π°ΡΠ° Π·Π° ΠΈΡΠΏΠΎΡΠ°ΠΊΠ° Π½Π° TCP ΠΏΠ°ΠΊΠ΅ΡΠΈ Π²Π΅ΡΠ΅ ΡΠ΅ ΠΈΠ·Π²Π΅Π΄ΡΠ²Π° Π½Π° Π½ΠΈΠ²ΠΎ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΠΈΡΠ°Π½ΠΈ Π²ΠΎ ΡΡΠ½Π΅Π»ΠΎΡ.
**ΠΠΊΠΎ Π½Π΅ Π΅ ΠΏΠΎΡΡΠ΅Π±Π½Π° Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡΠ° Π²ΠΎ ΠΠ, ΠΊΠΎΠΌΠ΅Π½ΡΠΈΡΠ°ΡΡΠ΅ Π³ΠΈ, ΠΏΡΠ΅ΡΠΊΠΎΠΊΠ½Π΅ΡΠ΅ Π³ΠΎ ΡΠ»Π΅Π΄Π½ΠΈΠΎΡ Π΄Π΅Π» ΠΈ Π²ΠΎ ΡΠ°Π±Π»ΠΎΠ½ΠΎΡ ΠΎΡΡΡΡΠ°Π½Π΅ΡΠ΅ ΡΠ° Π»ΠΈΠ½ΠΈΡΠ°ΡΠ° Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ.
ΠΠ Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡΠ°
ΠΠ° Π΄Π° Π³ΠΎ ΠΏΠΎΠ΄Π΄ΡΠΆΠΈΠΌΠ΅ Π²ΡΠΎΡΠΈΠΎΡ ΡΠ°ΠΊΡΠΎΡ, ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΌΠ΅ΡΠΊΠ°ΡΠ° Π²ΠΎ ΠΠ.
ΠΠΎΡΡΠ΅Π±Π½Π° Π½ΠΈ Π΅ ΡΠΌΠ΅ΡΠΊΠ° Π²ΠΎ Π΄ΠΎΠΌΠ΅Π½ΠΎΡ ΡΠΎ ΠΏΡΠ°Π²Π° Π½Π° ΠΎΠ±ΠΈΡΠ΅Π½ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ ΠΈ Π³ΡΡΠΏΠ°, ΡΠ»Π΅Π½ΡΡΠ²ΠΎΡΠΎ Π²ΠΎ ΠΊΠΎΠ΅ ΡΠ΅ ΡΠ° ΠΎΠ΄ΡΠ΅Π΄ΠΈ ΠΌΠΎΠΆΠ½ΠΎΡΡΠ° Π·Π° ΠΏΠΎΠ²ΡΠ·ΡΠ²Π°ΡΠ΅.
ΠΠ°ΠΏΡΠ°Π²Π΅ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠΊΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°:
/etc/openvpn/ldap.conf
ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΡΠΎΠ΄ΡΠΆΠΈΠ½ΠΈ
<LDAP>
URL "ldap://ldap.abc.ru"
BindDN "CN=bindUsr,CN=Users,DC=abc,DC=ru"
Password b1ndP@SS
Timeout 15
TLSEnable no
FollowReferrals yes
</LDAP>
<Authorization>
BaseDN "OU=allUsr,DC=abc,DC=ru"
SearchFilter "(sAMAccountName=%u)"
RequireGroup true
<Group>
BaseDN "OU=myGrp,DC=abc,DC=ru"
SearchFilter "(cn=myVPNUsr)"
MemberAttribute "member"
</Group>
</Authorization>
ΠΠ»ΡΡΠ½ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ:
- URL βldap://ldap.abc.ruβ - Π°Π΄ΡΠ΅ΡΠ° Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΎΡΠΎΡ Π½Π° Π΄ΠΎΠΌΠ΅Π½ΠΎΡ;
- BindDN βCN=bindUsr,CN=Users,DC=abc,DC=ruβ - ΠΊΠ°Π½ΠΎΠ½ΡΠΊΠΎ ΠΈΠΌΠ΅ Π·Π° Π²ΡΠ·ΡΠ²Π°ΡΠ΅ ΡΠΎ LDAP (UZ - bindUsr Π²ΠΎ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΡ abc.ru/Users);
- ΠΠΎΠ·ΠΈΠ½ΠΊΠ° b1ndP@SS β ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠ° Π»ΠΎΠ·ΠΈΠ½ΠΊΠ° Π·Π° Π²ΡΠ·ΡΠ²Π°ΡΠ΅;
- BaseDN βOU=allUsr,DC=abc,DC=ruβ β ΠΏΠ°ΡΠ΅ΠΊΠ° ΠΎΠ΄ ΠΊΠΎΡΠ° ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ Π·Π°ΠΏΠΎΡΠ½Π΅ ΡΠΎ ΠΏΡΠ΅Π±Π°ΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ;
- BaseDN βOU=myGrp,DC=abc,DC=ruβ β ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ Π½Π° Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½Π°ΡΠ° Π³ΡΡΠΏΠ° (Π³ΡΡΠΏΠ° myVPNUsr Π²ΠΎ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΡ abc.rumyGrp);
- SearchFilter β(cn=myVPNUsr)β Π΅ ΠΈΠΌΠ΅ΡΠΎ Π½Π° Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½Π°ΡΠ° Π³ΡΡΠΏΠ°.
Π‘ΡΠ°ΡΡΡΠ²Π°ΡΠ΅ ΠΈ Π΄ΠΈΡΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ°
Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° ΡΠ΅ ΠΎΠ±ΠΈΠ΄Π΅ΠΌΠ΅ Π΄Π° Π³ΠΎ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈΠΌΠ΅ ΠΈ ΡΡΠ°ΡΡΡΠ²Π°ΠΌΠ΅ Π½Π°ΡΠΈΠΎΡ ΡΠ΅ΡΠ²Π΅Ρ:
$ sudo systemctl enable [email protected]
$ sudo systemctl start [email protected]
ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΡΠ°ΡΡΡΠ²Π°ΡΠ΅:
systemctl status [email protected]
journalctl -xe
cat /var/log/messages
cat /var/log/openvpn/*log
ΠΠ·Π΄Π°Π²Π°ΡΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ ΠΈ ΠΎΡΠΏΠΎΠ²ΠΈΠΊΡΠ²Π°ΡΠ΅
ΠΠΈΠ΄Π΅ΡΡΠΈ ΠΠΎΠΊΡΠ°Ρ ΡΠ°ΠΌΠΈΡΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ, ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ Π²ΠΈ ΡΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΠΈ ΠΈ Π΄ΡΡΠ³ΠΈ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ; ΠΌΠ½ΠΎΠ³Ρ Π΅ ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΎ Π΄Π° ΡΠ΅ Π·Π°Π²ΠΈΡΠΊΠ° ΡΠ΅ΡΠΎ ΠΎΠ²Π° Π²ΠΎ Π΅Π΄Π½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΡΠΎ ΠΏΡΠΎΡΠΈΠ». ΠΠ²Π°Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΠΏΠΎΡΠΎΠ° ΡΠ΅ ΠΏΡΠ΅Π½Π΅ΡΡΠ²Π° Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ ΠΈ ΠΏΡΠΎΡΠΈΠ»ΠΎΡ ΡΠ΅ ΡΠ²Π΅Π·ΡΠ²Π° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ OpenVPN. ΠΠ° Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΎΠ²Π°, ΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄Π΅ΠΌΠ΅ ΡΠ°Π±Π»ΠΎΠ½ Π·Π° ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ ΠΈ ΡΠΊΡΠΈΠΏΡΠ° ΡΡΠΎ Π³ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ° ΠΏΡΠΎΡΠΈΠ»ΠΎΡ.
Π’ΡΠ΅Π±Π° Π΄Π° ΡΠ° Π΄ΠΎΠ΄Π°Π΄Π΅ΡΠ΅ ΡΠΎΠ΄ΡΠΆΠΈΠ½Π°ΡΠ° Π½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈΡΠ΅ ΡΠΎ root ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ (ca.crt) ΠΈ TLS key (ta.key) Π½Π° ΠΏΡΠΎΡΠΈΠ»ΠΎΡ.
ΠΡΠ΅Π΄ ΠΈΠ·Π΄Π°Π²Π°ΡΠ΅ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ Π½Π΅ Π·Π°Π±ΠΎΡΠ°Π²Π°ΡΡΠ΅ Π΄Π° Π³ΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈΠΎΡ ΠΏΠ΅ΡΠΈΠΎΠ΄ Π½Π° Π²Π°ΠΆΠ½ΠΎΡΡ Π·Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ΅ Π²ΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ° ΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ. ΠΠ΅ ΡΡΠ΅Π±Π° Π΄Π° Π³ΠΎ ΠΎΠ΄ΠΎΠ»Π³ΠΎΠ²Π»Π΅ΠΊΡΠ²Π°ΡΠ΅; ΠΠΈ ΠΏΡΠ΅ΠΏΠΎΡΠ°ΡΡΠ²Π°ΠΌ Π΄Π° ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΠ΅ Π½Π° ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌ 180 Π΄Π΅Π½Π°.
vim /usr/share/easy-rsa/3/vars
...
export EASYRSA_CERT_EXPIRE=180
vim /usr/share/easy-rsa/3/client/template.ovpn
client
dev tun
proto udp
remote gw.abc.ru 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-CBC
verb 3
auth-user-pass
<ca>
-----BEGIN CERTIFICATE-----
PUT YOUR CA CERT (ca.crt) HERE
-----END CERTIFICATE-----
</ca>
key-direction 1
<tls-auth>
-----BEGIN OpenVPN Static key V1-----
PUT YOUR TA KEY (ta.key) HERE
-----END OpenVPN Static key V1-----
</tls-auth>
ΠΠ°Π±Π΅Π»Π΅ΡΠΊΠΈ:
- Π»ΠΈΠ½ΠΈΠΈ Π‘Π’ΠΠΠΠ’Π ΠΠ ΠΠΠ¨ΠΠΠ’... ΠΏΡΠΎΠΌΠ΅Π½Π° Π½Π° ΡΠΎΠ΄ΡΠΆΠΈΠ½Π° Π½ΠΈΠ²Π½ΠΈΡΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ;
- Π²ΠΎ Π΄Π°Π»Π΅ΡΠΈΠ½ΡΠΊΠ°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°, Π½Π°Π²Π΅Π΄Π΅ΡΠ΅ Π³ΠΎ ΠΈΠΌΠ΅ΡΠΎ/Π°Π΄ΡΠ΅ΡΠ°ΡΠ° Π½Π° Π²Π°ΡΠΈΠΎΡ ΠΏΠΎΡΡΠ°Π»;
- Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΡΠ° Π·Π° Π°Π²ΡΠ΅Π½ΡΠΈΡΠ½ΠΎΡΡ Π·Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½Π° Π½Π°Π΄Π²ΠΎΡΠ΅ΡΠ½Π° Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡΠ°.
ΠΠΎ Π΄ΠΎΠΌΠ°ΡΠ½ΠΈΠΎΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌ (ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎ ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΎ ΠΌΠ΅ΡΡΠΎ) ΡΠΎΠ·Π΄Π°Π²Π°ΠΌΠ΅ ΡΠΊΡΠΈΠΏΡΠ° Π·Π° Π±Π°ΡΠ°ΡΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ ΠΈ ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΠΏΡΠΎΡΠΈΠ»:
vim ~/make.profile.sh
#!/bin/bash
if [ -z "$1" ] ; then
echo Missing mandatory client name. Usage: $0 vpn-username
exit 1
fi
#Set variables
basepath=/usr/share/easy-rsa/3
clntpath=$basepath/client
privpath=$basepath/pki/private
certpath=$basepath/pki/issued
profile=$clntpath/$1.ovpn
#Get current year and lowercase client name
year=`date +%F`
client=${1,,}
echo Processing $year year cert for user/device $client
cd $basepath
if [ -f client/$client* ]; then
echo "*** ERROR! ***"
echo "Certificate $client already issued!"
echo "*** ERROR! ***"
exit 1
fi
. ./vars
./easyrsa --batch --req-cn=$client gen-req $client nopass
./easyrsa --batch sign-req client $client
#Make profile
cp $clntpath/template.ovpn $profile
echo "<key>" >> $profile
cat $privpath/$1.key >> $profile
echo "</key>" >> $profile
echo -e "n" >> $profile
openssl x509 -in $certpath/$1.crt -out $basepath/$1.crt
echo "<cert>" >> $profile
cat $basepath/$1.crt >> $profile
echo "</cert>" >> $profile
echo -e "n" >> $profile
#remove tmp file
rm -f $basepath/$1.crt
echo Complete. See $profile file.
cd ~
ΠΠ° ΡΠ΅ ββΠ½Π°ΠΏΡΠ°Π²ΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ° ΠΈΠ·Π²ΡΡΠ½Π°:
chmod a+x ~/make.profile.sh
Π ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π³ΠΎ ΠΈΠ·Π΄Π°Π΄Π΅ΠΌΠ΅ Π½Π°ΡΠΈΠΎΡ ΠΏΡΠ² ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ.
~/make.profile.sh my-first-user
ΠΡΠ΅Π³Π»Π΅Π΄
ΠΠΎ ΡΠ»ΡΡΠ°Ρ Π½Π° ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡ Π½Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ (Π·Π°Π³ΡΠ±Π°, ΠΊΡΠ°ΠΆΠ±Π°), ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΎΠ΄Π·Π΅ΠΌΠ΅ ΠΎΠ²ΠΎΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ:
cd /usr/share/easy-rsa/3/
./easyrsa revoke my-first-user
./easyrsa gen-crl
ΠΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ Π³ΠΈ ΠΈΠ·Π΄Π°Π΄Π΅Π½ΠΈΡΠ΅ ΠΈ ΠΎΡΠΏΠΎΠ²ΠΈΠΊΠ°Π½ΠΈΡΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ
ΠΠ° Π΄Π° Π³ΠΈ Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΈΠ·Π΄Π°Π΄Π΅Π½ΠΈΡΠ΅ ΠΈ ΠΎΡΠΏΠΎΠ²ΠΈΠΊΠ°Π½ΠΈΡΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ, Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ ΡΠ° ΠΈΠ½Π΄Π΅ΠΊΡΠ½Π°ΡΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°:
cd /usr/share/easy-rsa/3/
cat pki/index.txt
ΠΠ±ΡΠ°ΡΠ½ΡΠ²Π°ΡΠ΅:
- ΠΏΡΠ²Π°ΡΠ° Π»ΠΈΠ½ΠΈΡΠ° Π΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ;
- ΠΏΡΠ²ΠΈΠΎΡ Π»ΠΈΠΊ
- V (ΠΠ°ΠΆΠΈ) - Π²Π°ΠΆΠΈ;
- Π (ΠΡΠΏΠΎΠ²ΠΈΠΊΠ°Π½) - ΠΏΠΎΡΡΠ΅ΡΠΈ.
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ° Π½Π° ΠΌΡΠ΅ΠΆΠ°
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΡΠ΅ΠΊΠΎΡΠΈ ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΏΡΠ΅Π½ΠΎΡΠ½Π°ΡΠ° ΠΌΡΠ΅ΠΆΠ° - ΡΡΡΠΈΡΠ°ΡΠ΅ ΠΈ Π·Π°ΡΡΠΈΡΠ½ΠΈ ΡΠΈΠ΄ΠΎΠ²ΠΈ.
ΠΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠ΅ Π²ΡΡΠΊΠΈ Π²ΠΎ Π»ΠΎΠΊΠ°Π»Π½ΠΈΠΎΡ Π·Π°ΡΡΠΈΡΠ΅Π½ ΡΠΈΠ΄:
$ sudo firewall-cmd --add-service=openvpn
$ sudo firewall-cmd --add-service=openvpn --permanent
Π‘Π»Π΅Π΄Π½ΠΎ, ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΡΠΎΡΡΠ²Π°ΡΠ΅ Π½Π° IP ΡΠΎΠΎΠ±ΡΠ°ΡΠ°ΡΠΎΡ:
$ sudo sysctl net.ipv4.ip_forward=1
$ sudo echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/50-sysctl.conf
ΠΠΎ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΠΎ ΠΎΠΏΠΊΡΡΠΆΡΠ²Π°ΡΠ΅, Π²Π΅ΡΠΎΡΠ°ΡΠ½ΠΎ ΡΠ΅ ΠΈΠΌΠ° ΠΏΠΎΠ΄ΠΌΡΠ΅ΠΆΠ° ΠΈ ΡΡΠ΅Π±Π° Π΄Π° ΠΌΡ ΠΊΠ°ΠΆΠ΅ΠΌΠ΅ Π½Π° ΡΡΡΠ΅ΡΠΎΡ(ΠΈΡΠ΅) ΠΊΠ°ΠΊΠΎ Π΄Π° ΠΈΡΠΏΡΠ°ΡΠ°Π°Ρ ΠΏΠ°ΠΊΠ΅ΡΠΈ Π½Π°ΠΌΠ΅Π½Π΅ΡΠΈ Π·Π° Π½Π°ΡΠΈΡΠ΅ VPN ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ. ΠΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°ΡΠ° Π»ΠΈΠ½ΠΈΡΠ° ΡΠ° ΠΈΠ·Π²ΡΡΡΠ²Π°ΠΌΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Π½Π° Π½Π°ΡΠΈΠ½ (Π²ΠΎ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡ ΠΎΠ΄ ΡΠΏΠΎΡΡΠ΅Π±Π΅Π½Π°ΡΠ° ΠΎΠΏΡΠ΅ΠΌΠ°):
# ip route 172.16.20.0 255.255.254.0 172.16.19.123
ΠΈ Π·Π°ΡΡΠ²Π°ΡΡΠ΅ ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°ΡΠ°.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ, Π½Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡΠΎΡ Π½Π° Π³ΡΠ°Π½ΠΈΡΠ½ΠΈΠΎΡ ΡΡΡΠ΅Ρ ΠΊΠ°Π΄Π΅ ΡΡΠΎ ΡΠ΅ ΡΠ»ΡΠΆΠΈ Π½Π°Π΄Π²ΠΎΡΠ΅ΡΠ½Π°ΡΠ° Π°Π΄ΡΠ΅ΡΠ° gw.abc.ru, Π½Π΅ΠΎΠΏΡ ΠΎΠ΄Π½ΠΎ Π΅ Π΄Π° ΡΠ΅ Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈ ΠΏΡΠ΅ΠΌΠΈΠ½ Π½Π° udp/1194 ΠΏΠ°ΠΊΠ΅ΡΠΈ.
ΠΠΎ ΡΠ»ΡΡΠ°Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΠ°ΡΠ° Π΄Π° ΠΈΠΌΠ° ΡΡΡΠΎΠ³ΠΈ Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΠ½ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π°, Π½Π° Π½Π°ΡΠΈΠΎΡ VPN ΡΠ΅ΡΠ²Π΅Ρ ΠΌΠΎΡΠ° Π΄Π° ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ° ΠΈ Π·Π°ΡΡΠΈΡΠ΅Π½ ΡΠΈΠ΄. Π‘ΠΏΠΎΡΠ΅Π΄ ΠΌΠΎΠ΅ ΠΌΠΈΡΠ»Π΅ΡΠ΅, Π½Π°ΡΠ³ΠΎΠ»Π΅ΠΌΠ°ΡΠ° ΡΠ»Π΅ΠΊΡΠΈΠ±ΠΈΠ»Π½ΠΎΡΡ ΡΠ΅ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° ΡΠΎ ΠΏΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ Π½Π° ΡΠΈΠ½ΡΠΈΡΠΈ Π½Π° iptables FORWARD, ΠΈΠ°ΠΊΠΎ Π½ΠΈΠ²Π½ΠΎΡΠΎ ΠΏΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ Π΅ ΠΏΠΎΠΌΠ°Π»ΠΊΡ ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΎ. ΠΠ°Π»ΠΊΡ ΠΏΠΎΠ²Π΅ΡΠ΅ Π·Π° Π½ΠΈΠ²Π½ΠΎ ΠΏΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅. ΠΠ° Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΎΠ²Π°, Π½Π°ΡΠ·Π³ΠΎΠ΄Π½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ βΠ΄ΠΈΡΠ΅ΠΊΡΠ½ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π°β - Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π°, ΡΠΊΠ»Π°Π΄ΠΈΡΠ°Π½ΠΈ Π²ΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° /etc/firewalld/direct.xml. Π’Π΅ΠΊΠΎΠ²Π½Π°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ° Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΡΠ΄Π΅ Π½Π° ΡΠ»Π΅Π΄Π½ΠΈΠΎΠ² Π½Π°ΡΠΈΠ½:
$ sudo firewall-cmd --direct --get-all-rule
ΠΡΠ΅Π΄ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°, Π½Π°ΠΏΡΠ°Π²Π΅ΡΠ΅ ΡΠ΅Π·Π΅ΡΠ²Π½Π° ΠΊΠΎΠΏΠΈΡΠ° ΠΎΠ΄ Π½Π΅Π°:
cp /etc/firewalld/direct.xml /etc/firewalld/direct.xml.`date +%F.%T`.bak
ΠΡΠΈΠ±Π»ΠΈΠΆΠ½ΠΈΡΠ΅ ΡΠΎΠ΄ΡΠΆΠΈΠ½ΠΈ Π½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ° ΡΠ΅:
<?xml version="1.0" encoding="utf-8"?>
<direct>
<!--Common Remote Services-->
<!--DNS-->
<rule priority="0" table="filter" ipv="ipv4" chain="FORWARD">-i tun0 -o ens192 -p udp --dport 53 -j ACCEPT</rule>
<!--web-->
<rule priority="0" table="filter" ipv="ipv4" chain="FORWARD">-i tun0 -o eth0 -p tcp -d 172.16.19.200 --dport 80 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT</rule>
<rule priority="0" table="filter" ipv="ipv4" chain="FORWARD">-i tun0 -o eth0 -p tcp -d 172.16.19.201 --dport 443 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT</rule>
<!--Some Other Systems-->
<rule priority="0" table="filter" ipv="ipv4" chain="FORWARD">-i tun0 -o eth0 -p udp -d 172.16.19.100 --dport 7000 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT</rule>
<!--just logging-->
<rule priority="1" table="filter" ipv="ipv4" chain="FORWARD">-i tun0 -o eth0 -j LOG --log-prefix 'forward_fw '</rule>
</direct>
ΠΠ±ΡΠ°ΡΠ½ΡΠ²Π°ΡΠ°
ΠΠ²ΠΈΠ΅ ΡΠ΅ Π²ΠΎ ΡΡΡΡΠΈΠ½Π° ΡΠ΅Π΄ΠΎΠ²Π½ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π° Π·Π° iptables, ΠΈΠ½Π°ΠΊΡ ΡΠΏΠ°ΠΊΡΠ²Π°Π½ΠΈ ΠΏΠΎ ΠΏΠΎΡΠ°Π²Π°ΡΠ° Π½Π° Π·Π°ΡΡΠΈΡΠ½ΠΈΠΎΡ ΡΠΈΠ΄.
ΠΠ΅ΡΡΠΈΠ½Π°Π»Π½ΠΈΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡ ΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΈ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ Π΅ tun0, Π° Π½Π°Π΄Π²ΠΎΡΠ΅ΡΠ½ΠΈΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡ Π·Π° ΡΡΠ½Π΅Π»ΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ ΡΠ°Π·Π»ΠΈΡΠ΅Π½, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ens192, Π²ΠΎ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡ ΠΎΠ΄ ΠΊΠΎΡΠΈΡΡΠ΅Π½Π°ΡΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°.
ΠΠΎΡΠ»Π΅Π΄Π½Π°ΡΠ° Π»ΠΈΠ½ΠΈΡΠ° Π΅ Π·Π° Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΈΡΠΏΡΡΡΠ΅Π½ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ. ΠΠ° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ°, ΡΡΠ΅Π±Π° Π΄Π° Π³ΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π½ΠΈΠ²ΠΎΡΠΎ Π½Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°ΡΠ΅ Π³ΡΠ΅ΡΠΊΠΈ Π²ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°ΡΠ° Π½Π° Π·Π°ΡΡΠΈΡΠ½ΠΈΠΎΡ ΡΠΈΠ΄:
vim /etc/sysconfig/firewalld
FIREWALLD_ARGS=--debug=2
ΠΡΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° ΠΏΠΎΡΡΠ°Π²ΠΊΠΈΡΠ΅ Π΅ Π²ΠΎΠΎΠ±ΠΈΡΠ°Π΅Π½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π° Π·Π°ΡΡΠΈΡΠ΅Π½ ΡΠΈΠ΄ Π·Π° ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΏΠΎΡΡΠ°Π²ΠΊΠΈΡΠ΅:
$ sudo firewall-cmd --reload
ΠΡΠΏΡΡΡΠ΅Π½ΠΈΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΈ Π²ΠΈΠ΄ΠΈΡΠ΅ Π²Π°ΠΊΠ°:
grep forward_fw /var/log/messages
Π¨ΡΠΎ Π΅ ΡΠ»Π΅Π΄Π½ΠΎ
ΠΠ²Π° Π³ΠΎ ΠΊΠΎΠΌΠΏΠ»Π΅ΡΠΈΡΠ° ΠΏΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ΡΠΎ!
ΠΡΡΠ°Π½ΡΠ²Π° ΡΠ°ΠΌΠΎ Π΄Π° Π³ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΎΡ ΡΠΎΡΡΠ²Π΅Ρ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠ°ΡΠ° ΡΡΡΠ°Π½Π°, Π΄Π° Π³ΠΎ ΡΠ²Π΅Π·Π΅ΡΠ΅ ΠΏΡΠΎΡΠΈΠ»ΠΎΡ ΠΈ Π΄Π° ΡΠ΅ ΠΏΠΎΠ²ΡΠ·Π΅ΡΠ΅. ΠΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΈΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠΈ Windows, ΠΊΠΎΠΌΠΏΠ»Π΅ΡΠΎΡ Π·Π° Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΠ° ΡΠ΅ Π½Π°ΠΎΡΠ° Π½Π°
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π³ΠΎ ΠΏΠΎΠ²ΡΠ·ΡΠ²Π°ΠΌΠ΅ Π½Π°ΡΠΈΠΎΡ Π½ΠΎΠ² ΡΠ΅ΡΠ²Π΅Ρ ΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ Π·Π° ΡΠ»Π΅Π΄Π΅ΡΠ΅ ΠΈ Π°ΡΡ ΠΈΠ²ΠΈΡΠ°ΡΠ΅ ΠΈ Π½Π΅ Π·Π°Π±ΠΎΡΠ°Π²Π°ΡΡΠ΅ ΡΠ΅Π΄ΠΎΠ²Π½ΠΎ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ Π°ΠΆΡΡΠΈΡΠ°ΡΠ°.
Π‘ΡΠ°Π±ΠΈΠ»Π½Π° Π²ΡΡΠΊΠ°!
ΠΠ·Π²ΠΎΡ: www.habr.com