ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° Π½Π° далСчинско Ρ€Π°Π±ΠΎΡ‚Π΅ΡšΠ΅ Π½Π° SMB ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° Π½Π° OpenVPN

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌ изјава

Π‘Ρ‚Π°Ρ‚ΠΈΡ˜Π°Ρ‚Π° ја ΠΎΠΏΠΈΡˆΡƒΠ²Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° далСчински пристап Π·Π° Π²Ρ€Π°Π±ΠΎΡ‚Π΅Π½ΠΈΡ‚Π΅ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈ со ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС користи ΠΈ Π·Π° ΠΈΠ·Π³Ρ€Π°Π΄Π±Π° Π½Π° цСлосно Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ΅Π½ систСм ΠΈ ќС Π±ΠΈΠ΄Π΅ корисна Π·Π° ΠΏΡ€ΠΎΡˆΠΈΡ€ΡƒΠ²Π°ΡšΠ΅ ΠΊΠΎΠ³Π° ΠΈΠΌΠ° нСдостиг Π½Π° Π»ΠΈΡ†Π΅Π½Ρ†ΠΈ Π²ΠΎ постоСчкиот ΠΊΠΎΠΌΠ΅Ρ€Ρ†ΠΈΡ˜Π°Π»Π΅Π½ систСм ΠΈΠ»ΠΈ Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ пСрформанси сС Π½Π΅Π΄ΠΎΠ²ΠΎΠ»Π½ΠΈ.

Π¦Π΅Π»Ρ‚Π° Π½Π° ΡΡ‚Π°Ρ‚ΠΈΡ˜Π°Ρ‚Π° Π΅ Π΄Π° сС ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π° цСлосСн систСм Π·Π° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ далСчински пристап Π΄ΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ˜Π°, ΡˆΡ‚ΠΎ Π΅ ΠΌΠ°Π»ΠΊΡƒ повСќС ΠΎΠ΄ β€žΠΈΠ½ΡΡ‚Π°Π»ΠΈΡ€Π°ΡšΠ΅ 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 Ρ€Π°Π±ΠΎΡ‚ΠΈ Π±Π΅Π· ΠΎΠ½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π°ΡšΠ΅ Π½Π° бСзбСдноснитС ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ.

содрТина

  1. Π˜Π½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ˜Π° Π½Π° ОБ ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ‚ΠΈΠ²Π΅Π½ софтвСр
  2. ΠŸΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ˜Π°
  3. ΠŸΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ OpenVPN
  4. АД Π°Π²Ρ‚Π΅Π½Ρ‚ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°
  5. Π‘Ρ‚Π°Ρ€Ρ‚ΡƒΠ²Π°ΡšΠ΅ ΠΈ Π΄ΠΈΡ˜Π°Π³Π½ΠΎΡΡ‚ΠΈΠΊΠ°
  6. ИздавањС сСртификат ΠΈ ΠΎΡ‚ΠΏΠΎΠ²ΠΈΠΊΡƒΠ²Π°ΡšΠ΅
  7. ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π° Π½Π° ΠΌΡ€Π΅ΠΆΠ°
  8. Π¨Ρ‚ΠΎ Π΅ слСдно

Π˜Π½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ˜Π° Π½Π° ОБ ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ‚ΠΈΠ²Π΅Π½ софтвСр

Ја користимС Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΡ˜Π°Ρ‚Π° 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

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€