ProHoster > Blog > Rêveberî > Rêxistinkirina xebata dûr a rêxistinek SMB li ser OpenVPN
Rêxistinkirina xebata dûr a rêxistinek SMB li ser OpenVPN
Formulkirina pirsgirêkê
Gotar rêxistina gihandina dûr a karmendan li ser hilberên çavkaniya vekirî vedibêje û dikare hem ji bo avakirina pergalek bi tevahî xweser were bikar anîn, hem jî dê ji bo berfirehkirinê kêrhatî be dema ku di pergala bazirganî ya heyî de kêmasiyek lîsans hebe an performansa wê têrê neke.
Armanca gotarê pêkanîna pergalek bêkêmasî ye ji bo peydakirina gihandina dûr a rêxistinek, ku ji "sazkirina OpenVPN di 10 hûrdeman de hindiktir e."
Wekî encamek, em ê pergalek werbigirin ku tê de sertîfîka û (bi vebijarkî) Pelrêça Active ya pargîdanî dê ji bo rastkirina bikarhêneran were bikar anîn. Va. em ê pergalek bi du faktorên verastkirinê bistînin - ya ku min heye (belgeya) û ya ku ez dizanim (şîfre).
Nîşanek ku destûr dide bikarhênerek ku pê ve girêbide endamtiya wan di koma myVPNUsr de ye. Desthilata sertîfîkayê dê offline were bikar anîn.
Mesrefa pêkanîna çareseriyê tenê çavkaniyên hardware yên piçûk û 1 saet xebata rêveberê pergalê ye.
Em ê makîneyek virtual bi OpenVPN û Easy-RSA guhertoya 3-ê li ser CetntOS 7-ê bikar bînin, ku ji 100 pêwendiyan 4 vCPU û 4 GiB RAM tê veqetandin.
Di nimûneyê de, tora rêxistina me 172.16.0.0/16 e, ku tê de servera VPN ya bi navnîşana 172.16.19.123 di beşa 172.16.19.0/24 de ye, serverên DNS 172.16.16.16 û 172.16.17.17, û 172.16.20.0, û 23 bin. .XNUMX/XNUMX ji bo xerîdarên VPN ve hatî veqetandin.
Ji bo girêdana ji derve ve, pêwendiyek bi porta 1194/udp ve tê bikar anîn, û ji bo servera me di DNS-ê de gw.abc.ru-yek tomar hatî çêkirin.
Bi tundî nayê pêşniyar kirin ku SELinux neçalak bike! OpenVPN bêyî astengkirina polîtîkayên ewlehiyê dixebite.
Em belavkirina CentOS 7.8.2003 bikar tînin. Pêdivî ye ku em OS-ê di mîhengek hindiktirîn de saz bikin. Bi karanîna vê yekê hêsan e dest pê kirin, klonkirina wêneyek OS-ya ku berê hatî saz kirin û rêyên din.
Piştî sazkirinê, danasîna navnîşanek ji navgîniya torê (li gorî şertên peywirê 172.16.19.123), em OS-ê nûve dikin:
$ sudo yum update -y && reboot
Di heman demê de pêdivî ye ku em pê ewle bin ku hevdemkirina demê li ser makîneya me tête kirin.
Ji bo sazkirina nermalava serîlêdanê, hûn hewceyê pakêtên openvpn, openvpn-auth-ldap, easy-rsa û vim wekî edîtorê sereke (hûn ê depoya EPEL hewce bikin).
Parametreyên ji bo rêxistina şertî ABC LLC li vir têne diyar kirin; hûn dikarin wan li yên rastîn rast bikin an wan ji nimûneyê bihêlin. Di parameteran de ya herî girîng rêza paşîn e, ku dema derbasbûna sertîfîkayê bi rojan diyar dike. Nimûne nirxa 10 salan (365*10+2 salên paşîn) bikar tîne. Berî ku sertîfîkayên bikarhêner werin derxistin, pêdivî ye ku ev nirx were sererast kirin.
Dûv re, em desthilatdariyek pejirandinê ya xweser mîheng dikin.
Sazkirin hinardekirina guherbaran, destpêkirina CA-yê, derxistina mifteya root û sertîfîkayê ya CA, mifteya Diffie-Hellman, mifteya TLS, û mifteya serverê û sertîfîkayê vedihewîne. Divê mifteya CA bi baldarî were parastin û veşartî! Hemî parametreyên pirsnameyê dikarin wekî xwerû bêne hiştin.
Ev beşa sereke ya sazkirina mekanîzmaya krîptografî temam dike.
Sazkirina OpenVPN
Herin pelrêça OpenVPN, pelrêça karûbarê biafirînin û girêdanek bi easy-rsa zêde bikin:
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/
Pelê veavakirina OpenVPN-ya sereke biafirînin:
$ sudo vim server.conf
naverokên jêrîn
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
Hin notên li ser parametreyan:
heke di dema danasîna sertîfîkayê de navek cûda hate diyar kirin, wê destnîşan bikin;
berhevoka navnîşanan diyar bikin ku li gorî peywirên we bin*;
dikare yek an bêtir rê û pêşkêşkerên DNS hebin;
2 rêzikên paşîn hewce ne ku ji bo erêkirinê di AD ** de bicîh bikin.
* Rêjeya navnîşanên ku di nimûneyê de hatine hilbijartin dê bihêle ku heya 127 xerîdar bi hevdemî ve girêdayî bin, ji ber ku tora /23 tê hilbijartin, û OpenVPN ji bo her xerîdar bi karanîna maska /30-ê subnetek diafirîne.
Ger bi taybetî hewce be, port û protokol dikare were guheztin, di heman demê de, divê were bîra we ku guheztina jimareya portê dê mîhengkirina SELinux-ê pêk bîne, û karanîna protokola tcp dê sermayê zêde bike, ji ber ku Kontrola radestkirina pakêtê ya TCP jixwe di asta pakêtên ku di tunelê de hatine vegirtin tê kirin.
**Heke di AD-ê de verastkirin ne hewce ye, wan şîrove bikin, beşa pêş de derbas bikin, û di şablonê de xeta auth-user-pass jêbirin.
Authentication AD
Ji bo piştgirîkirina faktora duyemîn, em ê di AD-ê de verastkirina hesabê bikar bînin.
Ji me re hesabek di domainê de bi mafên bikarhênerek asayî û grûpek hewce ye, endametiya ku tê de dê şiyana girêdanê diyar bike.
systemctl status [email protected]
journalctl -xe
cat /var/log/messages
cat /var/log/openvpn/*log
Pirsgirêka sertîfîkayê û betalkirin
Bo Ji bilî sertîfîkayan bixwe, hûn hewceyê mift û mîhengên din in; pir hêsan e ku hûn van hemîyan di yek pelê profîlê de bipêçin. Dûv re ev pel ji bikarhênerê re tê veguheztin û profîl li ser xerîdar OpenVPN tê şandin. Ji bo vê yekê, em ê şablonek mîhengan û skrîptek ku profîlê çêdike biafirînin.
Pêdivî ye ku hûn naveroka pelên sertîfîkaya root (ca.crt) û mifteya TLS (ta.key) li profîlê zêde bikin.
Berî weşandina sertîfîkayên bikarhêner ji bîr nekin ku ji bo sertîfîkayan heyama derbasdariya pêwîst destnîşan bikin di pelê parametreyan de. Pêdivî ye ku hûn wê pir dirêj nekin; Ez pêşniyar dikim ku xwe herî zêde 180 rojan sînordar bikin.
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>
Notes:
rêz XWE BIDIN... guhertina naverokê yê wê sertîfîkayên;
di dîrektîfa dûr de, nav / navnîşana dergehê xwe diyar bikin;
dîrektîfa oto-bikarhêner-derbasbûnê ji bo piştrastkirina derveyî ya zêde tê bikar anîn.
Di pelrêça malê de (an cîhek din ê rehet) em ji bo daxwaza sertîfîkayê û afirandina profîlek nivîsek diafirînin:
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 ~
Çêkirina pelê pêkan:
chmod a+x ~/make.profile.sh
Û em dikarin sertîfîkaya xwe ya yekem derxînin.
~/make.profile.sh my-first-user
Bikin
Di rewşa lihevhatina sertîfîkayekê de (wendabûn, dizî), pêdivî ye ku ev sertîfîka were betal kirin:
cd /usr/share/easy-rsa/3/
./easyrsa revoke my-first-user
./easyrsa gen-crl
Sertîfîkayên derketin û betalkirî bibînin
Ji bo dîtina sertîfîkayên hatine derxistin û betal kirin, tenê pelê navnîşê bibînin:
cd /usr/share/easy-rsa/3/
cat pki/index.txt
Ravekirin:
rêza yekem belgeya serverê ye;
karaktera yekem
V (Derbasdar) - derbasdar;
R (Revoked) - bi bîr xist.
Veavakirina torê
Gavên paşîn mîhengkirina tora veguheztinê - rêvekirin û dîwarên agir.
Di hawîrdorek pargîdanî de, îhtîmal e ku subnetkirin hebe û pêdivî ye ku em ji router(an) re vebêjin ka meriv çawa pakêtên ku ji bo xerîdarên me yên VPN têne şandin bişînin. Li ser rêzika fermanê em bi vî rengî fermanê dimeşînin (li gorî alavên ku têne bikar anîn):
# ip route 172.16.20.0 255.255.254.0 172.16.19.123
û veavakirinê xilas bike.
Digel vê yekê, li ser navbeynkariya routerê sînor ku navnîşana derveyî gw.abc.ru tê servîs kirin, pêdivî ye ku destûr bide derbasbûna pakêtên udp/1194.
Ger rêxistin xwedan rêzikên ewlehiyê yên hişk be, divê dîwarek agir jî li ser servera meya VPN-ê were mîheng kirin. Bi dîtina min, nermbûna herî mezin bi sazkirina zincîreyên iptables FORWARD ve tê peyda kirin, her çend sazkirina wan kêmtir hêsan e. Li ser sazkirina wan hinekî din. Ji bo vê yekê, herî hêsan e ku meriv "qanûnên rasterast" bikar bîne - qaîdeyên rasterast, ku di pelê de têne hilanîn /etc/firewalld/direct.xml. Veavakirina heyî ya qaîdeyan dikare bi vî rengî were dîtin:
$ sudo firewall-cmd --direct --get-all-rule
Berî ku pelek biguhezîne, kopiyek hilanînê jê çêbike:
Vana bi bingehîn qaîdeyên iptables bi rêkûpêk in, wekî din piştî hatina firewalld têne pak kirin.
Navbera mebestê ya bi mîhengên xwerû tun0 e, û pêwendiya derveyî ya tunelê dikare cûda be, mînakî ens192, li gorî platforma hatî bikar anîn.
Rêza paşîn ji bo têketina pakêtên daketî ye. Ji bo ku têketin bixebite, hûn hewce ne ku asta debugê di veavakirina firewalld de biguhezînin:
vim /etc/sysconfig/firewalld
FIREWALLD_ARGS=--debug=2
Serlêdana mîhengan fermana firewalld-a adetî ye ku ji nû ve xwendina mîhengan e:
$ sudo firewall-cmd --reload
Hûn dikarin pakêtên daketî bi vî rengî bibînin:
grep forward_fw /var/log/messages
Çi ye?
Ev sazkirinê temam dike!
Tiştê ku dimîne ev e ku meriv nermalava xerîdar li milê xerîdar saz bike, profîlê import bike û pê ve girêbide. Ji bo pergalên xebitandinê yên Windows-ê, kîta belavkirinê li ser cîh e malpera pêşdebiran.
Di dawiyê de, em servera xweya nû bi pergalên şopandin û arşîvkirinê ve girêdidin, û ji bîr nekin ku bi rêkûpêk nûvekirinan saz bikin.