Eagrachadh obair iomallach de bhuidheann SMB air OpenVPN

Aithris dhuilgheadas

Tha an artaigil a ’toirt cunntas air eagrachadh ruigsinneachd iomallach do luchd-obrach air toraidhean stòr fosgailte agus faodar a chleachdadh an dà chuid gus siostam gu tur fèin-riaghailteach a thogail, agus bidh e feumail airson leudachadh nuair a tha gainnead cheadan san t-siostam malairteach a th’ ann no nuair nach eil a choileanadh gu leòr.

Is e amas na h-artaigil siostam iomlan a chuir an gnìomh airson ruigsinneachd iomallach a thoirt do bhuidheann, rud a tha beagan a bharrachd air “stàladh OpenVPN ann an 10 mionaidean.”

Mar thoradh air an sin, gheibh sinn siostam anns an tèid teisteanasan agus (gu roghnach) an Active Directory corporra a chleachdadh gus luchd-cleachdaidh a dhearbhadh. Sin. gheibh sinn siostam le dà fhactar dearbhaidh - na tha agam (teisteanas) agus na tha fios agam (facal-faire).

Comharra gu bheil cead aig neach-cleachdaidh ceangal a dhèanamh tha am ballrachd sa bhuidheann myVPNUsr. Thèid an t-ùghdarras teisteanais a chleachdadh far loidhne.

Chan eil cosgais buileachadh an fhuasglaidh ach goireasan bathar-cruaidh beag agus 1 uair de dh’ obair rianadair an t-siostaim.

Cleachdaidh sinn inneal brìgheil le OpenVPN agus Easy-RSA dreach 3 air CetntOS 7, a gheibh 100 vCPUs agus 4 GiB RAM gach 4 ceangal.

Anns an eisimpleir, is e lìonra na buidhne againn 172.16.0.0/16, anns a bheil am frithealaiche VPN leis an t-seòladh 172.16.19.123 suidhichte anns an roinn 172.16.19.0/24, frithealaichean DNS 172.16.16.16 agus 172.16.17.17 agus 172.16.20.0. Tha .23/XNUMX air a riarachadh airson teachdaichean VPN .

Gus ceangal bhon taobh a-muigh, thèid ceangal tro phort 1194/udp a chleachdadh, agus chaidh clàr A gw.abc.ru a chruthachadh anns an DNS airson ar frithealaiche.

Chan eilear a’ moladh SELinux a chuir dheth! Bidh OpenVPN ag obair gun a bhith a’ cur bacadh air poileasaidhean tèarainteachd.

Clàr-innse

  1. Stàladh OS agus bathar-bog tagraidh
  2. A 'suidheachadh cryptography
  3. A’ stèidheachadh OpenVPN
  4. AD Dearbhadh
  5. Toiseach tòiseachaidh agus diagnosachd
  6. Cur a-mach teisteanas agus cùl-ghairm
  7. Suidhich lìonra
  8. Dè tha ri thighinn

Stàladh OS agus bathar-bog tagraidh

Bidh sinn a 'cleachdadh an sgaoileadh CentOS 7.8.2003. Feumaidh sinn an OS a chuir a-steach ann an rèiteachadh as ìsle. Tha e goireasach seo a dhèanamh a’ cleachdadh toiseach tòiseachaidh, a’ clonadh ìomhaigh OS a chaidh a chuir a-steach roimhe agus dòighean eile.

Às deidh an stàladh, a’ sònrachadh seòladh don eadar-aghaidh lìonra (a rèir teirmichean gnìomh 172.16.19.123), bidh sinn ag ùrachadh an OS:

$ sudo yum update -y && reboot

Feumaidh sinn cuideachd dèanamh cinnteach gun tèid sioncronadh ùine a dhèanamh air an inneal againn.
Gus bathar-bog tagraidh a chuir a-steach, feumaidh tu na pasganan openvpn, openvpn-auth-ldap, easy-rsa agus vim mar am prìomh neach-deasachaidh (feumaidh tu an stòr EPEL).

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

Tha e feumail neach-aoigheachd a chuir a-steach airson inneal brìgheil:

$ sudo yum install open-vm-tools

airson luchd-aoigheachd VMware ESXi, no airson oVirt

$ sudo yum install ovirt-guest-agent

A 'suidheachadh cryptography

Rach don eòlaire easy-rsa:

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

Cruthaich faidhle caochlaideach:

$ sudo vim vars

an susbaint a leanas:

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

Tha na paramadairean airson na buidhne cumhach ABC LLC air am mìneachadh an seo; faodaidh tu an ceartachadh chun fheadhainn fhìor no am fàgail bhon eisimpleir. Is e an rud as cudromaiche anns na paramadairean an loidhne mu dheireadh, a cho-dhùineas ùine dligheachd an teisteanais ann an làithean. Tha an eisimpleir a’ cleachdadh an luach 10 bliadhna (365 * 10 + 2 bliadhna leum). Feumar an luach seo atharrachadh mus tèid teisteanasan cleachdaiche a thoirt seachad.

An ath rud, bidh sinn a’ rèiteachadh ùghdarras teisteanais fèin-riaghailteach.

Tha an stèidheachadh a’ toirt a-steach às-mhalairt caochladairean, a’ tòiseachadh an CA, a’ cur a-mach iuchair freumh CA agus teisteanas, iuchair Diffie-Hellman, iuchair TLS, agus iuchair is teisteanas an fhrithealaiche. Feumar an iuchair CA a dhìon gu faiceallach agus a chumail dìomhair! Faodar a h-uile paramadair ceist fhàgail mar an àbhaist.

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

Bidh seo a’ crìochnachadh a’ phrìomh phàirt de bhith a’ stèidheachadh an uidheamachd criptografach.

A’ stèidheachadh OpenVPN

Rach don eòlaire OpenVPN, cruthaich clàran seirbheis agus cuir ceangal gu 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/

Cruthaich am prìomh fhaidhle rèiteachaidh OpenVPN:

$ sudo vim server.conf

susbaint a leanas

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

Cuid de notaichean air na paramadairean:

  • ma chaidh ainm eadar-dhealaichte a shònrachadh nuair a chaidh an teisteanas a thoirt seachad, comharraich e;
  • sònraich an cruinneachadh de sheòlaidhean a fhreagras air na gnìomhan agad *;
  • faodaidh aon shlighe no barrachd a bhith ann agus frithealaichean DNS;
  • Tha feum air an 2 loidhne mu dheireadh gus dearbhadh a chuir an gnìomh ann an AD **.

* Leigidh an raon de sheòlaidhean a chaidh a thaghadh san eisimpleir le suas ri 127 teachdaichean ceangal aig an aon àm, oir tha an lìonra /23 air a thaghadh, agus bidh OpenVPN a’ cruthachadh subnet airson gach teachdaiche a’ cleachdadh am masg /30.
Ma tha feum air gu sònraichte, faodar am port agus am pròtacal atharrachadh, ge-tà, bu chòir cuimhneachadh gum bi atharrachadh àireamh port port a’ toirt a-steach rèiteachadh SELinux, agus le bhith a’ cleachdadh a’ phròtacal tcp àrdaichidh e os cionn, oir Tha smachd lìbhrigidh pacaid TCP air a dhèanamh mu thràth aig an ìre de phasganan a tha air an cuairteachadh san tunail.

** Mura h-eil feum air dearbhadh ann an AD, thoir beachd orra, leum air an ath earrann, agus san teamplaid thoir air falbh an loidhne cead-cleachdaidh cleachdaiche.

AD Dearbhadh

Gus taic a thoirt don dàrna factar, cleachdaidh sinn dearbhadh cunntais ann an AD.

Feumaidh sinn cunntas san raon le còraichean neach-cleachdaidh àbhaisteach agus buidheann, ballrachd anns am bi an comas ceangal a dhearbhadh.

Cruthaich faidhle rèiteachaidh:

/etc/openvpn/ldap.conf

susbaint a leanas

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

Prìomh pharamadairean:

  • URL “ldap: //ldap.abc.ru” - seòladh rianadair fearainn;
  • BindDN “CN = bindUsr, CN = Luchd-cleachdaidh, DC = abc, DC = ru” - ainm canonical airson ceangal ri LDAP (UZ - bindUsr anns a’ ghobhar abc.ru/Users);
  • Facal-faire b1ndP@SS - facal-faire cleachdaiche airson ceangal;
  • BaseDN “OU = allUsr, DC = abc, DC = ru” - an t-slighe às an tòisich thu a’ lorg an neach-cleachdaidh;
  • BaseDN “OU = myGrp, DC = abc, DC = ru” - soitheach den bhuidheann ceadachaidh (buidheann myVPNUsr anns a’ ghobhar abc.rumyGrp);
  • 'S e SearchFilter "(cn=myVPNUsr)" ainm a' chuantail a tha ceadaichte.

Toiseach tòiseachaidh agus diagnosachd

A-nis is urrainn dhuinn feuchainn ris an t-seirbheisiche againn a chomasachadh agus a thòiseachadh:

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

Sgrùdadh tòiseachaidh:

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

Cur a-mach teisteanas agus cùl-ghairm

Air sgàth A bharrachd air na teisteanasan fhèin, feumaidh tu iuchraichean agus roghainnean eile; tha e glè ghoireasach seo uile a phasgadh ann an aon fhaidhle pròifil. Thèid am faidhle seo an uairsin a ghluasad chun neach-cleachdaidh agus tha am pròifil air a thoirt a-steach don neach-dèiligidh OpenVPN. Gus seo a dhèanamh, cruthaichidh sinn teamplaid roghainnean agus sgriobt a ghineas a’ phròifil.

Feumaidh tu susbaint nam faidhlichean teisteanas root (ca.crt) agus iuchair TLS (ta.key) a chur ris a’ phròifil.

Mus cuir thu a-mach teisteanasan cleachdaiche na dìochuimhnich an ùine dligheachd riatanach a shuidheachadh airson teisteanasan ann am faidhle paramadair. Cha bu chòir dhut a dhèanamh ro fhada; tha mi a’ moladh do chuingealachadh fhèin gu 180 latha aig a’ char as àirde.

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>

Notaichean:

  • loidhnichean CUIR DO... atharrachadh gu susbaint of their teisteanasan;
  • anns an stiùireadh iomallach, sònraich ainm/seòladh do gheata;
  • tha an stiùireadh cead-cleachdaidh air a chleachdadh airson dearbhadh taobh a-muigh a bharrachd.

Anns an eòlaire dachaigh (no àite freagarrach eile) bidh sinn a’ cruthachadh sgriobt airson teisteanas iarraidh agus pròifil a chruthachadh:

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 ~

A’ dèanamh am faidhle so-ghnìomhaichte:

chmod a+x ~/make.profile.sh

Agus is urrainn dhuinn a’ chiad teisteanas againn a chuir a-mach.

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

Beachdan air ais

Ma thachras co-rèiteachadh teisteanais (call, goid), feumar an teisteanas seo a chùl-ghairm:

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

Faic teisteanasan a chaidh a thoirt a-mach agus a chùl-ghairm

Gus teisteanasan a chaidh a thoirt a-mach agus a chùl-ghairm fhaicinn, dìreach coimhead air an fhaidhle clàr-amais:

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

Mìneachaidhean:

  • is e a’ chiad loidhne teisteanas an fhrithealaiche;
  • chiad charactar
    • V (Dligheach) - dligheach;
    • R (air a chùl-ghairm) - air a chuimhneachadh.

Suidhich lìonra

Is e na ceumannan mu dheireadh an lìonra sgaoilidh a rèiteachadh - slighe agus ballachan teine.

A’ ceadachadh cheanglaichean sa bhalla-teine ​​ionadail:

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

An ath rud, leig le slighe trafaic IP:

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

Ann an àrainneachd chorporra, tha coltas ann gum bi subnetting ann agus feumaidh sinn innse don router (ean) mar a chuireas sinn pacaidean a tha gu bhith airson ar teachdaichean VPN. Air an loidhne-àithne bidh sinn a’ cur an gnìomh an àithne san dòigh (a rèir an uidheim a thathar a’ cleachdadh):

# ip route 172.16.20.0 255.255.254.0 172.16.19.123

agus sàbhail an rèiteachadh.

A bharrachd air an sin, air eadar-aghaidh an router crìche far a bheil an seòladh taobh a-muigh gw.abc.ru air a fhrithealadh, feumar pasganan udp/1194 a cheadachadh.

Ma tha riaghailtean tèarainteachd teann aig a’ bhuidheann, feumar balla-teine ​​​​a chuir air dòigh air an t-seirbheisiche VPN againn cuideachd. Nam bheachd-sa, tha an sùbailteachd as motha air a thoirt seachad le bhith a’ stèidheachadh slabhraidhean iptables FORWARD, ged nach eil e cho goireasach an stèidheachadh. Beagan a bharrachd mu bhith gan stèidheachadh. Gus seo a dhèanamh, tha e nas freagarraiche "riaghailtean dìreach" a chleachdadh - riaghailtean dìreach, air an stòradh ann am faidhle /etc/firewalld/direct.xml. Gheibhear rèiteachadh gnàthach nan riaghailtean mar a leanas:

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

Mus atharraich thu faidhle, dèan lethbhreac cùl-taic dheth:

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

Is e susbaint tuairmseach an fhaidhle:

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

Mìneachaidhean

Tha iad seo gu ìre mhòr nan riaghailtean iptables cunbhalach, no air am pacadh às deidh do bhalla-teine ​​​​a thighinn.

Is e tun0 an eadar-aghaidh ceann-uidhe le roghainnean bunaiteach, agus faodaidh an eadar-aghaidh taobh a-muigh airson an tunail a bhith eadar-dhealaichte, mar eisimpleir, ens192, a rèir an àrd-ùrlar a thathar a’ cleachdadh.

Tha an loidhne mu dheireadh airson a bhith a’ clàradh phasganan a tha air tuiteam. Airson logadh a-steach gu obair, feumaidh tu an ìre deasbaid atharrachadh ann an rèiteachadh balla-teine:

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

Is e cur an sàs roghainnean an àithne àbhaisteach firewalld gus na roghainnean ath-leughadh:

$ sudo firewall-cmd --reload

Faodaidh tu coimhead air pacaidean tuiteam mar seo:

grep forward_fw /var/log/messages

Dè tha ri thighinn

Cuiridh seo crìoch air an rèiteachadh!

Chan eil air fhàgail ach am bathar-bog teachdaiche a chuir a-steach air taobh an neach-dèiligidh, am pròifil a thoirt a-steach agus ceangal. Airson siostaman obrachaidh Windows, tha am pasgan cuairteachaidh suidhichte air làrach leasaiche.

Mu dheireadh, bidh sinn a’ ceangal ar frithealaiche ùr ris na siostaman sgrùdaidh is tasglann, agus na dìochuimhnich ùrachadh a chuir a-steach gu cunbhalach.

Ceangal seasmhach!

Source: www.habr.com

Cuir beachd ann