Fandaminana ny asa lavitra an'ny fikambanana SMB amin'ny OpenVPN

Fanambarana olana

Ny lahatsoratra dia mamaritra ny fandaminana ny fidirana lavitra ho an'ny mpiasa amin'ny vokatra loharano misokatra ary azo ampiasaina mba hananganana rafitra mahaleotena tanteraka, ary ho ilaina amin'ny fanitarana rehefa misy ny tsy fahampian'ny fahazoan-dàlana amin'ny rafitra ara-barotra efa misy na tsy ampy ny fahombiazany.

Ny tanjon'ny lahatsoratra dia ny hampihatra rafitra feno amin'ny fanomezana fidirana lavitra amin'ny fikambanana iray, izay mihoatra kely noho ny "fametrahana OpenVPN ao anatin'ny 10 minitra."

Vokatr'izany dia hahazo rafitra iray izay hampiasana ny mari-pankasitrahana sy (tsy voatery) ny Active Directory orinasa hanamarina ny mpampiasa. Izany. hahazo rafitra misy antony roa fanamarinana isika - izay ananako (certificat) sy izay fantatro (password).

Famantarana iray ahafahan'ny mpampiasa mifandray dia ny maha-mpikambana azy ao amin'ny vondrona myVPNUsr. Ny fahefana fanamarinana dia hampiasaina ivelan'ny aterineto.

Ny vola lany amin'ny fampiharana ny vahaolana dia fitaovana kely sy 1 ora fiasan'ny mpitantana ny rafitra.

Hampiasa milina virtoaly misy OpenVPN sy Easy-RSA version 3 izahay amin'ny CetntOS 7, izay omena vCPU 100 sy RAM 4 GiB isaky ny fifandraisana 4.

Amin'ny ohatra, ny tambajotran'ny fikambananay dia 172.16.0.0/16, izay misy ny mpizara VPN misy ny adiresy 172.16.19.123 ao amin'ny fizarana 172.16.19.0/24, ny mpizara DNS 172.16.16.16 sy ny 172.16.17.17. .172.16.20.0/23 dia natokana ho an'ny mpanjifa VPN.

Mba hifandraisana avy any ivelany dia misy fifandraisana amin'ny port 1194/udp ampiasaina, ary misy A-record gw.abc.ru noforonina tao amin'ny DNS ho an'ny mpizara.

Tsy soso-kevitra ny hanafoana ny SELinux! OpenVPN dia miasa nefa tsy manafoana ny politika fiarovana.

afa-po

  1. Fametrahana OS sy rindrambaiko fampiharana
  2. Fametrahana kriptografika
  3. Fametrahana OpenVPN
  4. AD Authentication
  5. Startup sy diagnostics
  6. Famoahana taratasy fanamarinana sy fanafoanana
  7. Fanamboarana tamba-jotra
  8. Inona no manaraka?

Fametrahana OS sy rindrambaiko fampiharana

Mampiasa ny fizarana CentOS 7.8.2003 izahay. Mila mametraka ny OS amin'ny fanamafisana kely indrindra isika. Tsara ny manao izany amin'ny fampiasana kickstart, fanaovana cloning sary OS efa napetraka teo aloha sy fomba hafa.

Aorian'ny fametrahana, manendry adiresy amin'ny interface interface (araka ny fepetran'ny asa 172.16.19.123), manavao ny OS izahay:

$ sudo yum update -y && reboot

Mila maka antoka ihany koa isika fa atao amin'ny milinantsika ny fampifanarahana ny fotoana.
Mba hametrahana rindrambaiko fampiharana dia mila ny fonosana openvpn, openvpn-auth-ldap, easy-rsa ary vim ianao ho tonian-dahatsoratra lehibe (mila ny tahiry EPEL ianao).

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

Tena ilaina ny mametraka mpiasa vahiny ho an'ny milina virtoaly:

$ sudo yum install open-vm-tools

ho an'ny mpampiantrano VMware ESXi, na ho an'ny oVirt

$ sudo yum install ovirt-guest-agent

Fametrahana kriptografika

Mandehana any amin'ny lahatahiry easy-rsa:

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

Mamorona rakitra miovaova:

$ sudo vim vars

ireto votoaty manaraka ireto:

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

Ny mari-pamantarana ho an'ny fikambanana misy fepetra ABC LLC dia voafaritra eto; azonao atao ny manitsy azy ireo amin'ny tena izy na mamela azy ireo amin'ny ohatra. Ny zava-dehibe indrindra amin'ny masontsivana dia ny andalana farany, izay mamaritra ny fe-potoana manan-kery ny taratasy fanamarinana ny andro. Ny ohatra dia mampiasa ny sanda 10 taona (365*10+2 taona mitsambikina). Mila ahitsy io sanda io alohan'ny hamoahana ny mari-pankasitrahana ho an'ny mpampiasa.

Manaraka izany dia manamboatra fahefana fanamarinana tsy miankina izahay.

Ny fametrahana dia misy ny fanondranana fari-pahalalana, ny fanombohana ny CA, ny famoahana ny fanalahidin'ny fotony sy ny taratasy fanamarinana, ny lakile Diffie-Hellman, ny lakile TLS, ary ny fanalahidin'ny mpizara sy ny taratasy fanamarinana. Ny fanalahidin'ny CA dia tsy maintsy arovana tsara sy tazonina ho tsiambaratelo! Ny mari-pamantarana fanontaniana rehetra dia azo avela ho default.

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

Izany dia mameno ny ampahany lehibe amin'ny fametrahana ny mekanika cryptographic.

Fametrahana OpenVPN

Mandehana any amin'ny lahatahiry OpenVPN, mamorona lahatahiry serivisy ary ampio rohy mankany amin'ny 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/

Mamorona ny rakitra fanamafisana OpenVPN lehibe:

$ sudo vim server.conf

manaraka votoaty

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

Fanamarihana sasany momba ny paramètre:

  • raha misy anarana hafa voatondro tamin'ny famoahana ny taratasy fanamarinana dia asehoy izany;
  • mamaritra ny dobo adiresy mifanaraka amin'ny asanao*;
  • mety misy lalana iray na maromaro sy mpizara DNS;
  • Ny andalana 2 farany dia ilaina mba hampiharana ny fanamarinana ao amin'ny AD**.

* Ny isan'ny adiresy voafantina ao amin'ny ohatra dia mamela hatramin'ny 127 mpanjifa mifandray miaraka, satria ny tambajotra /23 dia voafantina, ary ny OpenVPN dia mamorona subnet ho an'ny mpanjifa tsirairay mampiasa ny /30 saron-tava.
Raha ilaina indrindra, dia azo ovaina ny seranan-tsambo sy ny protocol, na izany aza, tokony hotadidina fa ny fanovana ny laharan'ny seranan-tsambo dia mitaky ny fanamafisana ny SELinux, ary ny fampiasana ny protocol tcp dia hampitombo ny ambony, satria Ny fanaraha-maso ny fandefasana fonosana TCP dia efa vita amin'ny haavon'ny fonosana voarakitra ao anaty tonelina.

** Raha tsy ilaina ny fanamarinana ao amin'ny AD dia asio hevitra izy ireo, tsidiho ny fizarana manaraka, ary ao amin'ny môdely esory ny tsipika auth-user-pass.

AD Authentication

Mba hanohanana ny anton-javatra faharoa dia hampiasa ny fanamarinana kaonty ao amin'ny AD izahay.

Mila kaonty ao amin'ny sehatra misy ny zon'ny mpampiasa tsotra sy vondrona iray isika, ny maha-mpikambana azy no hamaritra ny fahafahana mifandray.

Mamorona fisie fanamafisana:

/etc/openvpn/ldap.conf

manaraka votoaty

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

Fomba lehibe:

  • URL "ldap://ldap.abc.ru" - adiresin'ny mpifehy sehatra;
  • BindDN “CN=bindUsr,CN=Users,DC=abc,DC=ru” - anarana kanônika amin'ny famatorana ny LDAP (UZ - bindUsr ao amin'ny container abc.ru/Users);
  • Password b1ndP@SS — tenimiafina mpampiasa hamatotra;
  • BaseDN “OU=allUsr,DC=abc,DC=ru” — ny lalana hanombohana hikaroka ny mpampiasa;
  • BaseDN "OU=myGrp,DC=abc,DC=ru" - fitoeran'ny vondrona mamela (vondrona myVPNUsr ao amin'ny container abc.rumyGrp);
  • SearchFilter "(cn=myVPNUsr)" no anaran'ny vondrona mamela.

Startup sy diagnostics

Ankehitriny dia afaka manandrana mamela sy manomboka ny servery izahay:

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

Fanamarinana fanombohana:

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

Famoahana taratasy fanamarinana sy fanafoanana

SATRIA Ho fanampin'ny fanamarinana ny tenany dia mila fanalahidy sy toe-javatra hafa ianao; tena mety ny mamatotra izany rehetra izany amin'ny rakitra iray. Afindra amin'ny mpampiasa ity rakitra ity ary ampidirina amin'ny mpanjifa OpenVPN ny mombamomba azy. Mba hanaovana izany dia hamorona môdely fikandrana sy script izay mamorona ny mombamomba.

Mila ampidirinao ao amin'ny mombamomba ny votoatin'ny taratasy fanamarinana fototra (ca.crt) sy TLS (ta.key).

Alohan'ny hamoahana ny mari-pankasitrahana mpampiasa aza adino ny mametraka ny fe-potoana manan-kery ilaina amin'ny fanamarinana ao amin'ny rakitra parameter. Tsy tokony ho lava loatra ianao; Manoro hevitra aho hametra ny tenanao ho 180 andro fara-fahakeliny.

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>

fanamarihana:

  • tady Apetraho ny... miova ho votoaty ny taratasy fanamarinana;
  • ao amin'ny torolalana lavitra, ambarao ny anarana/adiresy amin'ny vavahadinao;
  • ny toromarika auth-user-pass dia ampiasaina amin'ny fanamarinana ivelany fanampiny.

Ao amin'ny lahatahiry an-trano (na toerana hafa mety) dia mamorona script fangatahana taratasy fanamarinana sy famoronana mombamomba:

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 ~

Ny fanaovana ny rakitra azo tanterahana:

chmod a+x ~/make.profile.sh

Ary afaka mamoaka ny taratasy fanamarinana voalohany izahay.

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

Tadidio

Raha misy marimaritra iraisana amin'ny taratasy fanamarinana (very, halatra), dia ilaina ny manafoana ity taratasy fanamarinana ity:

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

Jereo ny taratasy fanamarinana navoaka sy nofoanana

Raha hijery ny mari-pankasitrahana navoaka sy nofoanana, jereo fotsiny ny rakitra fanondro:

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

fanazavana:

  • ny andalana voalohany dia ny taratasy fanamarinana mpizara;
  • toetra voalohany
    • V (valid) - manankery;
    • R (Nofoanana) - notsiahivina.

Fanamboarana tamba-jotra

Ny dingana farany dia ny manamboatra ny tamba-jotra fampitaovana - routing sy firewall.

Mamela ny fifandraisana amin'ny firewall eo an-toerana:

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

Manaraka, avelao ny fampandehanana fifamoivoizana IP:

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

Ao amin'ny tontolon'ny orinasa dia mety hisy subnetting ary mila milaza amin'ny router (s) ny fomba handefasana fonosana ho an'ny mpanjifanay VPN izahay. Amin'ny andalana baiko dia manatanteraka ny baiko amin'ny fomba (miankina amin'ny fitaovana ampiasaina):

# ip route 172.16.20.0 255.255.254.0 172.16.19.123

ary tehirizo ny configuration.

Ankoatra izany, eo amin'ny sisin-tany ny router interface tsara izay ny ivelany adiresy gw.abc.ru, dia ilaina ny mamela ny andalan-teny udp/1194 fonosana.

Raha toa ka manana fitsipika fiarovana henjana ny fikambanana dia tsy maintsy amboarina koa ny firewall amin'ny mpizara VPN. Raha ny hevitro, ny flexibilité lehibe indrindra dia omena amin'ny alàlan'ny fametrahana rojo iptables FORWARD, na dia tsy dia mety loatra aza ny fametrahana azy ireo. Kely kokoa momba ny fametrahana azy ireo. Mba hanaovana izany, dia mora kokoa ny mampiasa "fitsipika mivantana" - fitsipika mivantana, voatahiry ao anaty rakitra /etc/firewalld/direct.xml. Ny fanitsiana ny fitsipika ankehitriny dia azo jerena toy izao manaraka izao:

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

Alohan'ny hanovana rakitra dia manaova kopia backup azy:

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

Ny votoatin'ny rakitra dia:

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

fanazavana

Ireo dia fitsipika iptables tsy tapaka, samy hafa fonosana taorian'ny fahatongavan'ny firewalld.

Ny seha-pifaneraseran'ny toerana misy ny fandrindrana default dia tun0, ary ny interface ivelany ho an'ny tonelina dia mety tsy mitovy, ohatra, ny ens192, arakaraka ny sehatra ampiasaina.

Ny andalana farany dia ho an'ny fandraketana ireo fonosana nalatsaka. Mba hidirana amin'ny logiciel dia mila manova ny haavon'ny debug ao amin'ny config firewalld ianao:

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

Ny fampiharana ny fikajiana dia ny baiko firewalld mahazatra hamerenana ny fanovana:

$ sudo firewall-cmd --reload

Azonao atao ny mijery ny fonosana nilatsaka toy izao:

grep forward_fw /var/log/messages

Inona no manaraka?

Mahavita ny fanamboarana izany!

Ny hany sisa tavela dia ny fametrahana ny rindrambaiko mpanjifa eo amin'ny lafiny mpanjifa, manafatra ny mombamomba ary mifandray. Ho an'ny rafitra fiasa Windows, ny kitapo fizarana dia hita ao tranonkala developer.

Farany, mampifandray ny lohamilinay vaovao amin'ny rafitra fanaraha-maso sy fitehirizana, ary aza adino ny mametraka fanavaozana tsy tapaka.

Fifandraisana milamina!

Source: www.habr.com

Add a comment