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.net172.16.20.0, 23 ஆகிய பிரிவில் அமைந்துள்ளது. .XNUMX/XNUMX VPN கிளையண்டுகளுக்கு ஒதுக்கப்பட்டுள்ளது.
வெளியில் இருந்து இணைக்க, போர்ட் 1194/udp வழியாக ஒரு இணைப்பு பயன்படுத்தப்படுகிறது, மேலும் எங்கள் சேவையகத்திற்கான A-record gw.abc.ru DNS இல் உருவாக்கப்பட்டது.
SELinux ஐ முடக்க கண்டிப்பாக பரிந்துரைக்கப்படவில்லை! பாதுகாப்புக் கொள்கைகளை முடக்காமல் OpenVPN வேலை செய்கிறது.
நாங்கள் CentOS 7.8.2003 விநியோகத்தைப் பயன்படுத்துகிறோம். நாம் OS ஐ குறைந்தபட்ச கட்டமைப்பில் நிறுவ வேண்டும். இதைப் பயன்படுத்தி இதைச் செய்வது வசதியானது அடித்து உதை, முன்பு நிறுவப்பட்ட OS படத்தை குளோனிங் செய்தல் மற்றும் பிற வழிகள்.
நிறுவிய பின், பிணைய இடைமுகத்திற்கு ஒரு முகவரியை ஒதுக்குதல் (பணி 172.16.19.123 இன் விதிமுறைகளின்படி), நாங்கள் OS ஐப் புதுப்பிக்கிறோம்:
$ sudo yum update -y && reboot
எங்கள் கணினியில் நேர ஒத்திசைவு செய்யப்படுவதையும் உறுதி செய்ய வேண்டும்.
பயன்பாட்டு மென்பொருளை நிறுவ, உங்களுக்கு openvpn, openvpn-auth-ldap, easy-rsa மற்றும் vim தொகுப்புகள் முதன்மை எடிட்டராக இருக்க வேண்டும் (உங்களுக்கு EPEL களஞ்சியம் தேவைப்படும்).
ஏபிசி எல்எல்சியின் நிபந்தனை அமைப்புக்கான அளவுருக்கள் இங்கே விவரிக்கப்பட்டுள்ளன; நீங்கள் அவற்றை உண்மையானவற்றுடன் சரிசெய்யலாம் அல்லது எடுத்துக்காட்டில் இருந்து விட்டுவிடலாம். அளவுருக்களில் மிக முக்கியமான விஷயம் கடைசி வரியாகும், இது சான்றிதழின் செல்லுபடியாகும் காலத்தை நாட்களில் தீர்மானிக்கிறது. எடுத்துக்காட்டு 10 ஆண்டுகள் (365*10+2 லீப் ஆண்டுகள்) மதிப்பைப் பயன்படுத்துகிறது. பயனர் சான்றிதழ்கள் வழங்கப்படுவதற்கு முன் இந்த மதிப்பை சரிசெய்ய வேண்டும்.
அடுத்து, நாங்கள் ஒரு தன்னாட்சி சான்றிதழ் அதிகாரத்தை உள்ளமைக்கிறோம்.
அமைப்பில் மாறிகளை ஏற்றுமதி செய்தல், CA ஐ துவக்குதல், CA ரூட் கீ மற்றும் சான்றிதழ் வழங்குதல், Diffie-Hellman key, TLS கீ மற்றும் சர்வர் கீ மற்றும் சான்றிதழ் ஆகியவை அடங்கும். CA விசை கவனமாக பாதுகாக்கப்பட வேண்டும் மற்றும் ரகசியமாக வைக்கப்பட வேண்டும்! அனைத்து வினவல் அளவுருக்களையும் இயல்புநிலையாக விடலாம்.
இது கிரிப்டோகிராஃபிக் பொறிமுறையை அமைப்பதன் முக்கிய பகுதியை நிறைவு செய்கிறது.
OpenVPN ஐ அமைக்கிறது
OpenVPN கோப்பகத்திற்குச் சென்று, சேவை கோப்பகங்களை உருவாக்கி, ஈஸி-ஆர்எஸ்ஏக்கு இணைப்பைச் சேர்க்கவும்:
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 இல் கணக்கு சரிபார்ப்பைப் பயன்படுத்துவோம்.
எங்களுக்கு ஒரு சாதாரண பயனரின் உரிமைகள் மற்றும் ஒரு குழுவின் உரிமைகள் கொண்ட டொமைனில் ஒரு கணக்கு தேவை, அதில் இணைக்கும் திறனை தீர்மானிக்கும் உறுப்பினர்.
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
விளக்கம்:
முதல் வரி சர்வர் சான்றிதழ்;
முதல் பாத்திரம்
V (செல்லுபடியாகும்) - செல்லுபடியாகும்;
ஆர் (திரும்பப் பெறப்பட்டது) - நினைவுபடுத்தப்பட்டது.
பிணைய கட்டமைப்பு
டிரான்ஸ்மிஷன் நெட்வொர்க்கை உள்ளமைப்பது கடைசி படிகள் - ரூட்டிங் மற்றும் ஃபயர்வால்கள்.
கார்ப்பரேட் சூழலில், சப்நெட்டிங் இருக்க வாய்ப்புள்ளது, மேலும் எங்கள் 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
ஒரு கோப்பை மாற்றும் முன், அதன் காப்பு பிரதியை உருவாக்கவும்:
இவை அடிப்படையில் வழக்கமான iptables விதிகள், இல்லையெனில் ஃபயர்வால்டின் வருகைக்குப் பிறகு தொகுக்கப்பட்டது.
இயல்புநிலை அமைப்புகளுடன் இலக்கு இடைமுகம் tun0 ஆகும், மேலும் சுரங்கப்பாதைக்கான வெளிப்புற இடைமுகம் வேறுபட்டிருக்கலாம், எடுத்துக்காட்டாக, ens192, பயன்படுத்தப்படும் தளத்தைப் பொறுத்து.
கைவிடப்பட்ட பாக்கெட்டுகளை பதிவு செய்வதற்கான கடைசி வரி. உள்நுழைவு வேலை செய்ய, நீங்கள் ஃபயர்வால்ட் உள்ளமைவில் பிழைத்திருத்த அளவை மாற்ற வேண்டும்:
vim /etc/sysconfig/firewalld
FIREWALLD_ARGS=--debug=2
அமைப்புகளைப் பயன்படுத்துதல் அமைப்புகளை மீண்டும் படிக்க ஃபயர்வால்ட் கட்டளை வழக்கமானது:
$ sudo firewall-cmd --reload
இப்படி கைவிடப்பட்ட பாக்கெட்டுகளை நீங்கள் பார்க்கலாம்:
grep forward_fw /var/log/messages
அடுத்தது என்ன
இது அமைப்பை நிறைவு செய்கிறது!
கிளையன்ட் பக்கத்தில் கிளையன்ட் மென்பொருளை நிறுவி, சுயவிவரத்தை இறக்குமதி செய்து இணைக்க வேண்டும். விண்டோஸ் இயக்க முறைமைகளுக்கு, விநியோக கிட் அமைந்துள்ளது டெவலப்பர் இணையதளம்.
இறுதியாக, நாங்கள் எங்கள் புதிய சேவையகத்தை கண்காணிப்பு மற்றும் காப்பக அமைப்புகளுடன் இணைக்கிறோம், மேலும் புதுப்பிப்புகளை தவறாமல் நிறுவ மறக்காதீர்கள்.