SMB erakunde baten urrutiko lanaren antolaketa OpenVPNn

Arazoaren formulazioa

Artikuluak kode irekiko produktuetan langileen urruneko sarbidearen antolaketa deskribatzen du eta sistema guztiz autonomo bat eraikitzeko erabil daiteke, eta zabaltzeko baliagarria izango da indarrean dagoen sistema komertzialean lizentzia eskasia dagoenean edo bere errendimendua nahikoa ez denean.

Artikuluaren helburua erakunde bati urruneko sarbidea emateko sistema oso bat ezartzea da, hau da, "OpenVPN 10 minututan instalatzea" baino.

Ondorioz, erabiltzaileak autentifikatzeko ziurtagiriak eta (aukeran) Active Directory korporatiboa erabiliko diren sistema bat lortuko dugu. Hori. bi egiaztapen-faktore dituen sistema bat lortuko dugu: dudana (ziurtagiria) eta dakidana (pasahitza).

Erabiltzaile bati konektatzeko baimena duen seinale bat myVPNUsr taldeko kide izatea da. Autoritate ziurtagiri-emailea lineaz kanpo erabiliko da.

Irtenbidea ezartzearen kostua hardware-baliabide txikiak eta sistema-administratzailearen orduko lana baino ez dira.

Makina birtual bat erabiliko dugu OpenVPN eta Easy-RSA 3. bertsioarekin CetntOS 7n, 100 vCPU eta 4 GiB RAM esleituta dituen 4 konexio bakoitzeko.

Adibidean, gure erakundearen sarea 172.16.0.0/16 da, eta bertan 172.16.19.123 helbidea duen VPN zerbitzaria 172.16.19.0/24 segmentuan dago, DNS zerbitzariak 172.16.16.16 eta 172.16.17.17 eta 172.16.20.0, eta 23 azpi-sarea. .XNUMX/XNUMX VPN bezeroentzat esleitzen da.

Kanpotik konektatzeko, 1194/udp atakaren bidezko konexioa erabiltzen da, eta A-record gw.abc.ru DNSn sortu da gure zerbitzariarentzat.

Ez da gomendagarria SELinux desgaitzea! OpenVPN-k segurtasun-politikak desgaitu gabe funtzionatzen du.

Edukia

  1. OS eta aplikazio softwarea instalatzea
  2. Kriptografia konfiguratzea
  3. OpenVPN konfiguratzen
  4. AD autentifikazioa
  5. Abian jartzea eta diagnostikoak
  6. Ziurtagiria ematea eta baliogabetzea
  7. Sarearen konfigurazioa
  8. Zer da hurrengoa

OS eta aplikazio softwarea instalatzea

CentOS 7.8.2003 banaketa erabiltzen dugu. OSa konfigurazio minimo batean instalatu behar dugu. Erosoa da hau erabiltzea kickstart, aurretik instalatutako OS irudi bat eta beste baliabide batzuk klonatzea.

Instalatu ondoren, sareko interfazeari helbide bat esleitu ondoren (172.16.19.123 atazaren baldintzen arabera), OS eguneratzen dugu:

$ sudo yum update -y && reboot

Gure makinan denbora sinkronizazioa egiten dela ere ziurtatu behar dugu.
Aplikazio softwarea instalatzeko, openvpn, openvpn-auth-ldap, easy-rsa eta vim paketeak behar dituzu editore nagusi gisa (EPEL biltegia beharko duzu).

$ sudo yum install epel-release
$ sudo yum install openvpn openvpn-auth-ldap easy-rsa vim

Baliagarria da gonbidatutako agente bat instalatzea makina birtual baterako:

$ sudo yum install open-vm-tools

VMware ESXi ostalarientzat edo oVirtentzat

$ sudo yum install ovirt-guest-agent

Kriptografia konfiguratzea

Joan easy-rsa direktoriora:

$ cd /usr/share/easy-rsa/3/

Sortu fitxategi aldagai bat:

$ sudo vim vars

honako eduki hau:

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 baldintzapeko erakundearen parametroak deskribatzen dira hemen; benetakoetara zuzendu ditzakezu edo adibidetik utzi. Parametroetan garrantzitsuena azken lerroa da, ziurtagiriaren balio-epea egunetan zehazten duena. Adibideak 10 urte balioa erabiltzen du (365*10+2 bisurte). Balio hori egokitu egin beharko da erabiltzailearen ziurtagiriak eman aurretik.

Ondoren, ziurtapen-agintari autonomo bat konfiguratuko dugu.

Konfigurazioak aldagaiak esportatzea, CA hasieratzea, CA erro-gakoa eta ziurtagiria, Diffie-Hellman gakoa, TLS gakoa eta zerbitzariaren gakoa eta ziurtagiria igortzea barne hartzen ditu. CA gakoa arretaz babestu eta isilpean gorde behar da! Kontsulta-parametro guztiak lehenetsi gisa utz daitezke.

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

Honek mekanismo kriptografikoa konfiguratzeko zati nagusia osatzen du.

OpenVPN konfiguratzen

Joan OpenVPN direktoriora, sortu zerbitzu-direktorioak eta gehitu esteka bat easy-rsa-ra:

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/

Sortu OpenVPN konfigurazio fitxategi nagusia:

$ sudo vim server.conf

ondorengo edukiak

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

Parametroei buruzko ohar batzuk:

  • ziurtagiria ematean beste izen bat zehaztu bazen, adierazi;
  • zehaztu zure zereginetara egokitzeko helbide multzoa*;
  • ibilbide eta DNS zerbitzari bat edo gehiago egon daitezke;
  • Azken 2 lerroak behar dira AD** autentifikazioa ezartzeko.

*Adibidean aukeratutako helbide sortak 127 bezero aldi berean konektatzeko aukera emango du, zeren /23 sarea hautatzen da, eta OpenVPN-k bezero bakoitzarentzat azpisare bat sortzen du /30 maskara erabiliz.
Bereziki beharrezkoa bada, ataka eta protokoloa alda daitezke, hala ere, kontuan izan behar da portuaren ataka-zenbakia aldatzeak SELinux konfiguratzea ekarriko duela, eta tcp protokoloa erabiltzeak gainkostua handituko duelako. TCP paketeen bidalketa kontrola dagoeneko egiten da tunelean kapsulatutako paketeen mailan.

**ADn autentifikazioa behar ez bada, iruzkin itzazu, saltatu hurrengo atala eta txantiloian kendu auth-user-pass lerroa.

AD autentifikazioa

Bigarren faktorea onartzeko, kontuaren egiaztapena erabiliko dugu ADn.

Erabiltzaile arrunt baten eta talde baten eskubideak dituen domeinuko kontu bat behar dugu, zeinaren kidetasunak konektatzeko gaitasuna zehaztuko duen.

Sortu konfigurazio fitxategi bat:

/etc/openvpn/ldap.conf

ondorengo edukiak

<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>

Gako parametroak:

  • URL "ldap://ldap.abc.ru" - domeinu-kontrolatzailearen helbidea;
  • BindDN "CN=bindUsr,CN=Users,DC=abc,DC=ru" - LDAPera lotzeko izen kanonikoa (UZ - bindUsr abc.ru/Users edukiontzian);
  • Pasahitza b1ndP@SS β€” lotzeko erabiltzailearen pasahitza;
  • BaseDN "OU=allUsr,DC=abc,DC=ru" β€” erabiltzailea bilatzen hasteko bidea;
  • BaseDN "OU=myGrp,DC=abc,DC=ru" - talde baimenduaren edukiontzia (talde myVPNUsr abc.rumyGrp edukiontzian);
  • SearchFilter "(cn=myVPNUsr)" talde baimenduaren izena da.

Abian jartzea eta diagnostikoak

Orain saiatu gaitezke gure zerbitzaria gaitu eta abiarazten:

$ sudo systemctl enable [email protected]
$ sudo systemctl start [email protected]

Hasierako egiaztapena:

systemctl status [email protected]
journalctl -xe
cat /var/log/messages
cat /var/log/openvpn/*log

Ziurtagiria ematea eta baliogabetzea

Zeren Ziurtagiriez gain, gakoak eta bestelako ezarpenak behar dituzu; oso erosoa da hori guztia profil fitxategi batean biltzea. Ondoren, fitxategi hau erabiltzaileari transferitzen zaio eta profila OpenVPN bezeroan inportatzen da. Horretarako, ezarpenen txantiloia eta profila sortzen duen script bat sortuko dugu.

Erro ziurtagiriaren (ca.crt) eta TLS gako (ta.key) fitxategien edukia gehitu behar duzu profilera.

Erabiltzaile-ziurtagiriak eman aurretik ez ahaztu ziurtagiriei behar den balio-epea ezartzea parametroen fitxategian. Ez zenuke luzeegi egin behar; gehienez 180 egunetara mugatzea gomendatzen dut.

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>

Oharrak:

  • lerroak JARRI ZURE... edukia aldatzea haien ziurtagiriak;
  • urruneko zuzentarauan, zehaztu zure atebidearen izena/helbidea;
  • auth-user-pass zuzentaraua kanpoko autentifikazio gehigarrirako erabiltzen da.

Hasierako direktorioan (edo beste leku egoki batean) ziurtagiri bat eskatzeko eta profil bat sortzeko script bat sortzen dugu:

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 ~

Fitxategia exekutagarria egitea:

chmod a+x ~/make.profile.sh

Eta gure lehen ziurtagiria eman dezakegu.

~/make.profile.sh my-first-user

abisuaren

Ziurtagiri bat arriskuan jartzen bada (galera, lapurreta), beharrezkoa da ziurtagiri hau baliogabetzea:

cd /usr/share/easy-rsa/3/
./easyrsa revoke my-first-user
./easyrsa gen-crl

Ikusi emandako eta baliogabetutako ziurtagiriak

Jaulkitako eta baliogabetutako ziurtagiriak ikusteko, ikusi indize-fitxategia:

cd /usr/share/easy-rsa/3/
cat pki/index.txt

Azalpena:

  • lehen lerroa zerbitzariaren ziurtagiria da;
  • lehen pertsonaia
    • V (Baliozkoa) - baliozkoa;
    • R (Errebokatua) - gogoratu.

Sarearen konfigurazioa

Azken urratsak transmisio-sarea konfiguratzea dira - bideraketa eta suebakiak.

Tokiko suebakian konexioak baimentzea:

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

Ondoren, gaitu IP trafikoaren bideratzea:

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

Ingurune korporatiboan, litekeena da azpisareak egotea eta bideratzaileei esan behar diegu nola bidali gure VPN bezeroei zuzendutako paketeak. Komando-lerroan komandoa honela exekutatzen dugu (erabilitako ekipoaren arabera):

# ip route 172.16.20.0 255.255.254.0 172.16.19.123

eta gorde konfigurazioa.

Gainera, gw.abc.ru kanpoko helbidea zerbitzatzen den mugako bideratzailearen interfazean, beharrezkoa da udp/1194 paketeen igarotzea baimentzea.

Erakundeak segurtasun arau zorrotzak baditu, firewall bat ere konfiguratu behar da gure VPN zerbitzarian. Nire ustez, malgutasun handiena iptables FORWARD kateak ezartzeak ematen du, horiek konfiguratzea ez hain erosoa den arren. Horiek konfiguratzeari buruz apur bat gehiago. Horretarako, erosoena da "zuzeneko arauak" erabiltzea - ​​zuzeneko arauak, fitxategi batean gordeta /etc/firewalld/direct.xml. Arauen egungo konfigurazioa honela aurki daiteke:

$ sudo firewall-cmd --direct --get-all-rule

Fitxategi bat aldatu aurretik, egin haren babeskopia:

cp /etc/firewalld/direct.xml /etc/firewalld/direct.xml.`date +%F.%T`.bak

Fitxategiaren gutxi gorabeherako edukia hauek dira:

<?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>

azalpenak

Hauek, funtsean, iptables arau erregularrak dira, bestela firewalld-en etorreraren ondoren paketatuta.

Ezarpen lehenetsiak dituen helburuko interfazea tun0 da, eta tunelaren kanpoko interfazea desberdina izan daiteke, adibidez, ens192, erabilitako plataformaren arabera.

Azken lerroa botatako paketeak erregistratzeko da. Saioak funtziona dezan, suebakiaren konfigurazioan arazketa-maila aldatu behar duzu:

vim /etc/sysconfig/firewalld
FIREWALLD_ARGS=--debug=2

Ezarpenak aplikatzea ohiko firewalld komandoa da ezarpenak berriro irakurtzeko:

$ sudo firewall-cmd --reload

Jauzitako paketeak honela ikus ditzakezu:

grep forward_fw /var/log/messages

Zer da hurrengoa

Honek konfigurazioa osatzen du!

Bakarrik geratzen da bezeroaren softwarea bezero aldean instalatzea, profila inportatzea eta konektatzea. Windows sistema eragileetarako, banaketa-kit bat dago garatzaileen gunea.

Azkenik, gure zerbitzari berria monitorizazio- eta artxibo-sistemetara konektatzen dugu, eta ez dugu ahaztu aldian-aldian eguneraketak instalatzea.

Konexio egonkorra!

Iturria: www.habr.com

Gehitu iruzkin berria