OpenVPN ನಲ್ಲಿ SMB ಸಂಸ್ಥೆಯ ರಿಮೋಟ್ ಕೆಲಸದ ಸಂಘಟನೆ

ಸಮಸ್ಯೆ ಹೇಳಿಕೆ

ಲೇಖನವು ತೆರೆದ ಮೂಲ ಉತ್ಪನ್ನಗಳಲ್ಲಿ ಉದ್ಯೋಗಿಗಳಿಗೆ ರಿಮೋಟ್ ಪ್ರವೇಶದ ಸಂಘಟನೆಯನ್ನು ವಿವರಿಸುತ್ತದೆ ಮತ್ತು ಸಂಪೂರ್ಣವಾಗಿ ಸ್ವಾಯತ್ತ ವ್ಯವಸ್ಥೆಯನ್ನು ನಿರ್ಮಿಸಲು ಎರಡೂ ಬಳಸಬಹುದು, ಮತ್ತು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ವಾಣಿಜ್ಯ ವ್ಯವಸ್ಥೆಯಲ್ಲಿ ಪರವಾನಗಿಗಳ ಕೊರತೆ ಅಥವಾ ಅದರ ಕಾರ್ಯಕ್ಷಮತೆ ಸಾಕಷ್ಟಿಲ್ಲದಿದ್ದಾಗ ವಿಸ್ತರಣೆಗೆ ಉಪಯುಕ್ತವಾಗಿದೆ.

ಸಂಸ್ಥೆಗೆ ರಿಮೋಟ್ ಪ್ರವೇಶವನ್ನು ಒದಗಿಸಲು ಸಂಪೂರ್ಣ ವ್ಯವಸ್ಥೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವುದು ಲೇಖನದ ಗುರಿಯಾಗಿದೆ, ಇದು "10 ನಿಮಿಷಗಳಲ್ಲಿ OpenVPN ಅನ್ನು ಸ್ಥಾಪಿಸುವುದಕ್ಕಿಂತ ಸ್ವಲ್ಪ ಹೆಚ್ಚು".

ಪರಿಣಾಮವಾಗಿ, ಬಳಕೆದಾರರನ್ನು ದೃಢೀಕರಿಸಲು ಪ್ರಮಾಣಪತ್ರಗಳು ಮತ್ತು (ಐಚ್ಛಿಕವಾಗಿ) ಕಾರ್ಪೊರೇಟ್ ಸಕ್ರಿಯ ಡೈರೆಕ್ಟರಿಯನ್ನು ಬಳಸುವ ವ್ಯವಸ್ಥೆಯನ್ನು ನಾವು ಪಡೆಯುತ್ತೇವೆ. ಅದು. ನಾವು ಎರಡು ಪರಿಶೀಲನಾ ಅಂಶಗಳೊಂದಿಗೆ ಸಿಸ್ಟಮ್ ಅನ್ನು ಪಡೆಯುತ್ತೇವೆ - ನನ್ನ ಬಳಿ ಏನು (ಪ್ರಮಾಣಪತ್ರ) ಮತ್ತು ನನಗೆ ತಿಳಿದಿರುವ (ಪಾಸ್ವರ್ಡ್).

myVPNUsr ಗುಂಪಿನಲ್ಲಿ ಅವರ ಸದಸ್ಯತ್ವವು ಬಳಕೆದಾರರನ್ನು ಸಂಪರ್ಕಿಸಲು ಅನುಮತಿಸಲಾಗಿದೆ ಎಂಬುದರ ಸಂಕೇತವಾಗಿದೆ. ಪ್ರಮಾಣಪತ್ರ ಅಧಿಕಾರವನ್ನು ಆಫ್‌ಲೈನ್‌ನಲ್ಲಿ ಬಳಸಲಾಗುತ್ತದೆ.

ಪರಿಹಾರವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವ ವೆಚ್ಚವು ಸಣ್ಣ ಯಂತ್ರಾಂಶ ಸಂಪನ್ಮೂಲಗಳು ಮತ್ತು ಸಿಸ್ಟಮ್ ನಿರ್ವಾಹಕರ 1 ಗಂಟೆಯ ಕೆಲಸ ಮಾತ್ರ.

ನಾವು CetntOS 3 ನಲ್ಲಿ OpenVPN ಮತ್ತು Easy-RSA ಆವೃತ್ತಿ 7 ನೊಂದಿಗೆ ವರ್ಚುವಲ್ ಯಂತ್ರವನ್ನು ಬಳಸುತ್ತೇವೆ, ಇದು 100 ಸಂಪರ್ಕಗಳಿಗೆ 4 vCPU ಗಳು ಮತ್ತು 4 GiB RAM ಅನ್ನು ಹಂಚಲಾಗುತ್ತದೆ.

ಉದಾಹರಣೆಯಲ್ಲಿ, ನಮ್ಮ ಸಂಸ್ಥೆಯ ನೆಟ್‌ವರ್ಕ್ 172.16.0.0/16 ಆಗಿದೆ, ಇದರಲ್ಲಿ 172.16.19.123 ವಿಳಾಸದೊಂದಿಗೆ VPN ಸರ್ವರ್ 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. OS ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್ ಸಾಫ್ಟ್‌ವೇರ್ ಸ್ಥಾಪನೆ
  2. ಕ್ರಿಪ್ಟೋಗ್ರಫಿಯನ್ನು ಹೊಂದಿಸಲಾಗುತ್ತಿದೆ
  3. OpenVPN ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾಗುತ್ತಿದೆ
  4. AD ದೃಢೀಕರಣ
  5. ಪ್ರಾರಂಭ ಮತ್ತು ರೋಗನಿರ್ಣಯ
  6. ಪ್ರಮಾಣಪತ್ರದ ಸಮಸ್ಯೆ ಮತ್ತು ಹಿಂತೆಗೆದುಕೊಳ್ಳುವಿಕೆ
  7. ನೆಟ್‌ವರ್ಕ್ ಸೆಟಪ್
  8. ಮುಂದೆ ಏನು

OS ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್ ಸಾಫ್ಟ್‌ವೇರ್ ಸ್ಥಾಪನೆ

ನಾವು CentOS 7.8.2003 ವಿತರಣೆಯನ್ನು ಬಳಸುತ್ತೇವೆ. ನಾವು ಕನಿಷ್ಟ ಸಂರಚನೆಯಲ್ಲಿ OS ಅನ್ನು ಸ್ಥಾಪಿಸಬೇಕಾಗಿದೆ. ಇದನ್ನು ಬಳಸಿಕೊಂಡು ಮಾಡಲು ಅನುಕೂಲಕರವಾಗಿದೆ ಕಿಕ್ಸ್ಟಾರ್ಟ್, ಹಿಂದೆ ಸ್ಥಾಪಿಸಲಾದ OS ಇಮೇಜ್ ಮತ್ತು ಇತರ ವಿಧಾನಗಳನ್ನು ಕ್ಲೋನಿಂಗ್ ಮಾಡುವುದು.

ಅನುಸ್ಥಾಪನೆಯ ನಂತರ, ನೆಟ್ವರ್ಕ್ ಇಂಟರ್ಫೇಸ್ಗೆ ವಿಳಾಸವನ್ನು ನಿಯೋಜಿಸಿ (ಕಾರ್ಯ 172.16.19.123 ರ ನಿಯಮಗಳ ಪ್ರಕಾರ), ನಾವು OS ಅನ್ನು ನವೀಕರಿಸುತ್ತೇವೆ:

$ sudo yum update -y && reboot

ನಮ್ಮ ಗಣಕದಲ್ಲಿ ಸಮಯದ ಸಿಂಕ್ರೊನೈಸೇಶನ್ ಅನ್ನು ನಿರ್ವಹಿಸಲಾಗಿದೆ ಎಂದು ನಾವು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಬೇಕು.
ಅಪ್ಲಿಕೇಶನ್ ಸಾಫ್ಟ್‌ವೇರ್ ಅನ್ನು ಸ್ಥಾಪಿಸಲು, ನಿಮಗೆ openvpn, openvpn-auth-ldap, ಈಸಿ-ಆರ್‌ಎಸ್‌ಎ ಮತ್ತು ವಿಮ್ ಪ್ಯಾಕೇಜ್‌ಗಳು ಮುಖ್ಯ ಸಂಪಾದಕರಾಗಿ ಅಗತ್ಯವಿದೆ (ನಿಮಗೆ 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

ಕ್ರಿಪ್ಟೋಗ್ರಫಿಯನ್ನು ಹೊಂದಿಸಲಾಗುತ್ತಿದೆ

ಸುಲಭ-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 ಡೈರೆಕ್ಟರಿಗೆ ಹೋಗಿ, ಸೇವಾ ಡೈರೆಕ್ಟರಿಗಳನ್ನು ರಚಿಸಿ ಮತ್ತು ಸುಲಭ-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 ಸರ್ವರ್‌ಗಳು ಇರಬಹುದು;
  • AD** ನಲ್ಲಿ ದೃಢೀಕರಣವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಕೊನೆಯ 2 ಸಾಲುಗಳು ಅಗತ್ಯವಿದೆ.

*ಉದಾಹರಣೆಯಲ್ಲಿ ಆಯ್ಕೆಮಾಡಿದ ವಿಳಾಸಗಳ ಶ್ರೇಣಿಯು 127 ಕ್ಲೈಂಟ್‌ಗಳನ್ನು ಏಕಕಾಲದಲ್ಲಿ ಸಂಪರ್ಕಿಸಲು ಅನುಮತಿಸುತ್ತದೆ, ಏಕೆಂದರೆ /23 ನೆಟ್ವರ್ಕ್ ಅನ್ನು ಆಯ್ಕೆಮಾಡಲಾಗಿದೆ, ಮತ್ತು OpenVPN /30 ಮಾಸ್ಕ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಪ್ರತಿ ಕ್ಲೈಂಟ್‌ಗೆ ಸಬ್‌ನೆಟ್ ಅನ್ನು ರಚಿಸುತ್ತದೆ.
ನಿರ್ದಿಷ್ಟವಾಗಿ ಅಗತ್ಯವಿದ್ದರೆ, ಪೋರ್ಟ್ ಮತ್ತು ಪ್ರೋಟೋಕಾಲ್ ಅನ್ನು ಬದಲಾಯಿಸಬಹುದು, ಆದಾಗ್ಯೂ, ಪೋರ್ಟ್ ಪೋರ್ಟ್ ಸಂಖ್ಯೆಯನ್ನು ಬದಲಾಯಿಸುವುದರಿಂದ SELinux ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡುತ್ತದೆ ಮತ್ತು tcp ಪ್ರೋಟೋಕಾಲ್ ಅನ್ನು ಬಳಸುವುದರಿಂದ ಓವರ್ಹೆಡ್ ಹೆಚ್ಚಾಗುತ್ತದೆ ಎಂಬುದನ್ನು ಮನಸ್ಸಿನಲ್ಲಿಟ್ಟುಕೊಳ್ಳಬೇಕು. TCP ಪ್ಯಾಕೆಟ್ ವಿತರಣಾ ನಿಯಂತ್ರಣವನ್ನು ಈಗಾಗಲೇ ಸುರಂಗದಲ್ಲಿ ಸುತ್ತುವರಿದ ಪ್ಯಾಕೆಟ್‌ಗಳ ಮಟ್ಟದಲ್ಲಿ ನಿರ್ವಹಿಸಲಾಗಿದೆ.

** AD ಯಲ್ಲಿ ದೃಢೀಕರಣ ಅಗತ್ಯವಿಲ್ಲದಿದ್ದರೆ, ಅವುಗಳನ್ನು ಕಾಮೆಂಟ್ ಮಾಡಿ, ಮುಂದಿನ ವಿಭಾಗವನ್ನು ಬಿಟ್ಟುಬಿಡಿ ಮತ್ತು ಟೆಂಪ್ಲೇಟ್‌ನಲ್ಲಿ auth-user-pass ಲೈನ್ ಅನ್ನು ತೆಗೆದುಹಾಕಿ.

AD ದೃಢೀಕರಣ

ಎರಡನೇ ಅಂಶವನ್ನು ಬೆಂಬಲಿಸಲು, ನಾವು AD ಯಲ್ಲಿ ಖಾತೆ ಪರಿಶೀಲನೆಯನ್ನು ಬಳಸುತ್ತೇವೆ.

ನಮಗೆ ಸಾಮಾನ್ಯ ಬಳಕೆದಾರ ಮತ್ತು ಗುಂಪಿನ ಹಕ್ಕುಗಳೊಂದಿಗೆ ಡೊಮೇನ್‌ನಲ್ಲಿ ಖಾತೆಯ ಅಗತ್ಯವಿದೆ, ಇದರಲ್ಲಿ ಸದಸ್ಯತ್ವವು ಸಂಪರ್ಕಿಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ನಿರ್ಧರಿಸುತ್ತದೆ.

ಕಾನ್ಫಿಗರೇಶನ್ ಫೈಲ್ ಅನ್ನು ರಚಿಸಿ:

/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 ಕ್ಲೈಂಟ್‌ನಲ್ಲಿ ಆಮದು ಮಾಡಿಕೊಳ್ಳಲಾಗುತ್ತದೆ. ಇದನ್ನು ಮಾಡಲು, ನಾವು ಸೆಟ್ಟಿಂಗ್‌ಗಳ ಟೆಂಪ್ಲೇಟ್ ಮತ್ತು ಪ್ರೊಫೈಲ್ ಅನ್ನು ರಚಿಸುವ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ರಚಿಸುತ್ತೇವೆ.

ನೀವು ಪ್ರೊಫೈಲ್‌ಗೆ ಮೂಲ ಪ್ರಮಾಣಪತ್ರ (ca.crt) ಮತ್ತು TLS ಕೀ (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>

ಪ್ರಾರ್ಥನೆ:

  • ತಂತಿಗಳು ನಿಮ್ಮ... ವಿಷಯಕ್ಕೆ ಬದಲಾಯಿಸಿ ಆದ ಪ್ರಮಾಣಪತ್ರಗಳು;
  • ರಿಮೋಟ್ ನಿರ್ದೇಶನದಲ್ಲಿ, ನಿಮ್ಮ ಗೇಟ್‌ವೇ ಹೆಸರು/ವಿಳಾಸವನ್ನು ಸೂಚಿಸಿ;
  • ಹೆಚ್ಚುವರಿ ಬಾಹ್ಯ ದೃಢೀಕರಣಕ್ಕಾಗಿ auth-user-pass ನಿರ್ದೇಶನವನ್ನು ಬಳಸಲಾಗುತ್ತದೆ.

ಹೋಮ್ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ (ಅಥವಾ ಇತರ ಅನುಕೂಲಕರ ಸ್ಥಳದಲ್ಲಿ) ನಾವು ಪ್ರಮಾಣಪತ್ರವನ್ನು ವಿನಂತಿಸಲು ಮತ್ತು ಪ್ರೊಫೈಲ್ ರಚಿಸಲು ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ರಚಿಸುತ್ತೇವೆ:

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

ವಿವರಣೆಗಳು:

  • ಮೊದಲ ಸಾಲು ಸರ್ವರ್ ಪ್ರಮಾಣಪತ್ರವಾಗಿದೆ;
  • ಮೊದಲ ಪಾತ್ರ
    • ವಿ (ಮಾನ್ಯ) - ಮಾನ್ಯ;
    • ಆರ್ (ಹಿಂತೆಗೆದುಕೊಳ್ಳಲಾಗಿದೆ) - ಮರುಪಡೆಯಲಾಗಿದೆ.

ನೆಟ್‌ವರ್ಕ್ ಸೆಟಪ್

ಕೊನೆಯ ಹಂತಗಳು ಟ್ರಾನ್ಸ್ಮಿಷನ್ ನೆಟ್ವರ್ಕ್ ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡುವುದು - ರೂಟಿಂಗ್ ಮತ್ತು ಫೈರ್ವಾಲ್ಗಳು.

ಸ್ಥಳೀಯ ಫೈರ್‌ವಾಲ್‌ನಲ್ಲಿ ಸಂಪರ್ಕಗಳನ್ನು ಅನುಮತಿಸುವುದು:

$ sudo firewall-cmd --add-service=openvpn
$ sudo firewall-cmd --add-service=openvpn --permanent

ಮುಂದೆ, ಐಪಿ ಟ್ರಾಫಿಕ್ ರೂಟಿಂಗ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ:

$ sudo sysctl net.ipv4.ip_forward=1
$ sudo echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/50-sysctl.conf

ಕಾರ್ಪೊರೇಟ್ ಪರಿಸರದಲ್ಲಿ, ಸಬ್‌ನೆಟ್ಟಿಂಗ್ ಆಗುವ ಸಾಧ್ಯತೆಯಿದೆ ಮತ್ತು ನಮ್ಮ ವಿಪಿಎನ್ ಕ್ಲೈಂಟ್‌ಗಳಿಗೆ ಉದ್ದೇಶಿಸಲಾದ ಪ್ಯಾಕೆಟ್‌ಗಳನ್ನು ಹೇಗೆ ಕಳುಹಿಸಬೇಕು ಎಂದು ನಾವು ರೂಟರ್(ಗಳಿಗೆ) ತಿಳಿಸಬೇಕಾಗಿದೆ. ಆಜ್ಞಾ ಸಾಲಿನಲ್ಲಿ ನಾವು ಆಜ್ಞೆಯನ್ನು ಕ್ರಮದಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತೇವೆ (ಬಳಸಿದ ಉಪಕರಣವನ್ನು ಅವಲಂಬಿಸಿ):

# 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

ಮುಂದೆ ಏನು

ಇದು ಸೆಟಪ್ ಅನ್ನು ಪೂರ್ಣಗೊಳಿಸುತ್ತದೆ!

ಕ್ಲೈಂಟ್ ಸೈಡ್‌ನಲ್ಲಿ ಕ್ಲೈಂಟ್ ಸಾಫ್ಟ್‌ವೇರ್ ಅನ್ನು ಸ್ಥಾಪಿಸುವುದು, ಪ್ರೊಫೈಲ್ ಅನ್ನು ಆಮದು ಮಾಡಿಕೊಳ್ಳುವುದು ಮತ್ತು ಸಂಪರ್ಕಿಸುವುದು ಮಾತ್ರ ಉಳಿದಿದೆ. ವಿಂಡೋಸ್ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್‌ಗಳಿಗಾಗಿ, ವಿತರಣಾ ಕಿಟ್ ಆನ್ ಆಗಿದೆ ಡೆವಲಪರ್ ವೆಬ್‌ಸೈಟ್.

ಅಂತಿಮವಾಗಿ, ನಾವು ನಮ್ಮ ಹೊಸ ಸರ್ವರ್ ಅನ್ನು ಮಾನಿಟರಿಂಗ್ ಮತ್ತು ಆರ್ಕೈವಿಂಗ್ ಸಿಸ್ಟಮ್‌ಗಳಿಗೆ ಸಂಪರ್ಕಿಸುತ್ತೇವೆ ಮತ್ತು ನಿಯಮಿತವಾಗಿ ನವೀಕರಣಗಳನ್ನು ಸ್ಥಾಪಿಸಲು ಮರೆಯಬೇಡಿ.

ಸ್ಥಿರ ಸಂಪರ್ಕ!

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ