په OpenVPN کې د SMB سازمان د ریموټ کار تنظیم کول

د ستونزې تشکیل

مقاله د خلاصې سرچینې محصولاتو ته د کارمندانو لپاره د ریموټ لاسرسي تنظیم تشریح کوي او دواړه د بشپړ خپلواک سیسټم رامینځته کولو لپاره کارول کیدی شي ، او د پراختیا لپاره به ګټور وي کله چې په موجوده سوداګریز سیسټم کې د جوازونو کمښت شتون ولري یا د هغې فعالیت ناکافي وي.

د مقالې هدف دا دی چې یوې ادارې ته د ریموټ لاسرسي چمتو کولو لپاره بشپړ سیسټم پلي کړي ، کوم چې "په 10 دقیقو کې د OpenVPN نصبولو" څخه ډیر لږ دی.

د پایلې په توګه، موږ به یو سیسټم ترلاسه کړو په کوم کې چې سندونه او (اختیاري) د کارپوریټ فعال لارښود به د کاروونکو تصدیق کولو لپاره وکارول شي. هغه. موږ به د دوه تایید فکتورونو سره یو سیسټم ترلاسه کړو - هغه څه چې زه لرم (سند) او هغه څه چې زه پوهیږم (پټوم).

یوه نښه چې یو کارونکي ته د وصل کیدو اجازه ورکول کیږي د myVPNUsr ګروپ کې د دوی غړیتوب دی. د سند واک به آفلاین وکارول شي.

د حل پلي کولو لګښت یوازې د هارډویر کوچنۍ سرچینې او د سیسټم مدیر 1 ساعت کار دی.

موږ به په CetntOS 3 کې د OpenVPN او Easy-RSA نسخه 7 سره یو مجازی ماشین وکاروو، کوم چې په هر 100 اړیکو کې 4 vCPUs او 4 GiB RAM تخصیص شوي.

په مثال کې، زموږ د سازمان شبکه 172.16.0.0/16 ده، په کوم کې چې د VPN سرور د 172.16.19.123 پته سره په 172.16.19.0/24 برخه کې موقعیت لري، د DNS سرورونه 172.16.16.16 او 172.16.17.17 او فرعي 172.16.20.0. .23/XNUMX د VPN پیرودونکو لپاره تخصیص شوی.

د بهر څخه د نښلولو لپاره، د پورټ 1194/udp له لارې اړیکه کارول کیږي، او زموږ د سرور لپاره په DNS کې د A-ریکارډ gw.abc.ru رامینځته شوی.

دا په کلکه سپارښتنه نه کیږي چې د SELinux غیر فعال کړئ! OpenVPN د امنیتي پالیسیو غیر فعالولو پرته کار کوي.

منځپانګې

  1. د OS او غوښتنلیک سافټویر نصب کول
  2. د کریپټوګرافي تنظیم کول
  3. د OpenVPN تنظیم کول
  4. د AD تصدیق
  5. پیل او تشخیص
  6. د سند مسله او لغوه کول
  7. د شبکې تنظیم
  8. نور څه شی دی

د OS او غوښتنلیک سافټویر نصب کول

موږ د CentOS 7.8.2003 توزیع کاروو. موږ اړتیا لرو چې OS په لږترلږه ترتیب کې نصب کړو. د دې کارولو لپاره دا اسانه ده شروع کول، د مخکینۍ نصب شوي OS عکس او نورو وسیلو کلون کول.

د نصبولو وروسته، د شبکې انٹرفیس ته د پته ټاکل (د دندې د شرایطو سره سم 172.16.19.123)، موږ OS تازه کوو:

$ sudo yum update -y && reboot

موږ دا هم اړتیا لرو چې ډاډ ترلاسه کړو چې د وخت ترکیب زموږ په ماشین کې ترسره کیږي.
د اپلیکیشن سافټویر نصبولو لپاره، تاسو د اصلي مدیر په توګه Openvpn، openvpn-auth-ldap، easy-rsa او vim کڅوړو ته اړتیا لرئ (تاسو به د EPEL ذخیره ته اړتیا ولرئ).

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

د مجازی ماشین لپاره، دا ګټور دی چې د میلمه اجنټ نصب کړئ:

$ sudo yum install open-vm-tools

د VMware ESXi کوربه لپاره، یا د oVirt لپاره

$ sudo yum install ovirt-guest-agent

د کریپټوګرافي تنظیم کول

د اسانه-rsa لارښود ته لاړ شئ:

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

یو متغیر فایل جوړ کړئ:

$ sudo vim vars

لاندې مواد:

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 پیرامیټونه دلته تشریح شوي؛ تاسو کولی شئ دوی اصلي ته سم کړئ یا یې د مثال څخه پریږدئ. په پیرامیټونو کې ترټولو مهم شی وروستۍ کرښه ده، کوم چې په ورځو کې د سند اعتبار موده ټاکي. مثال د 10 کلونو ارزښت کاروي (365*10+2 لیپ کاله). دا ارزښت به د کارونکي سندونو صادرولو دمخه تنظیم کولو ته اړتیا ولري.

بیا ، موږ د تصدیق کولو خپلواکه اداره تنظیم کوو.

په ترتیب کې د متغیرونو صادرول، د CA پیل کول، د CA روټ کیلي او سند صادرول، د Diffie-Hellman کیلي، TLS کیلي، او د سرور کیلي او سند شامل دي. د CA کیلي باید په احتیاط سره خوندي او پټ وساتل شي! د پوښتنو ټول پیرامیټونه د ډیفالټ په توګه پریښودل کیدی شي.

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

دا د کریپټوګرافیک میکانیزم تنظیم کولو اصلي برخه بشپړوي.

د OpenVPN تنظیم کول

د OpenVPN ډایرکټرۍ ته لاړ شئ، د خدماتو لارښودونه جوړ کړئ او اسانه-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/

د اصلي 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 کې د حساب تصدیق وکاروو.

موږ په ډومین کې یو حساب ته اړتیا لرو چې د عادي کارونکي او یوې ډلې حقونه ولري، غړیتوب چې په کې به د نښلولو وړتیا وټاکي.

د ترتیب کولو فایل جوړ کړئ:

/etc/openvpn/ldap.conf

لاندې مواد

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

مهمې پیښې:

  • URL "ldap://ldap.abc.ru" - د ډومین کنټرولر پته؛
  • BindDN "CN=bindUsr,CN=Users,DC=abc,DC=ru" - LDAP ته د پابندۍ لپاره معتبر نوم (UZ - bindUsr په abc.ru/Users کانټینر کې)؛
  • پاسورډ b1ndP@SS — د پابندۍ لپاره د کارونکي پټنوم؛
  • BaseDN "OU=allUsr,DC=abc,DC=ru" - هغه لاره چې د کارونکي لټون پیل کوي؛
  • BaseDN "OU=myGrp,DC=abc,DC=ru" - د اجازه ورکوونکي ګروپ کانټینر (په کانټینر کې myVPNUsr ګروپ abc.rumyGrp)؛
  • د لټون فلټر "(cn=myVPNUsr)" د اجازه ورکوونکي ګروپ نوم دی.

پیل او تشخیص

اوس موږ کولی شو هڅه وکړو چې خپل سرور فعال او پیل کړو:

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

د پیل چک:

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 (درست) - معتبر؛
    • R (ردول) - یاد شوی.

د شبکې تنظیم

وروستي ګامونه د لیږد شبکې تنظیم کول دي - روټینګ او اور وژونکي.

په محلي فایروال کې د اړیکو اجازه ورکول:

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

بیا، د IP ټرافیک روټینګ فعال کړئ:

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

په کارپوریټ چاپیریال کې ، احتمال شتون لري چې فرعي نیټینګ وي او موږ اړتیا لرو چې روټر ته ووایو چې څنګه زموږ د 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

د فایل بدلولو دمخه، د هغې بیک اپ کاپي جوړه کړئ:

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

د فایل نږدې منځپانګې په لاندې ډول دي:

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

تشریحات

په لازمي ډول دا د iptables منظم مقررات دي ، د فایروالډ له راتګ وروسته په مختلف ډول بسته شوي.

د ډیفالټ ترتیباتو سره د منزل انٹرفیس tun0 دی ، او د تونل لپاره بهرنۍ انٹرفیس ممکن توپیر ولري ، د مثال په توګه ، ens192 ، د کارول شوي پلیټ فارم پورې اړه لري.

وروستنۍ کرښه د لوټ شوي پاکټونو د ننوتلو لپاره ده. د کار کولو لپاره د ننوتلو لپاره، تاسو اړتیا لرئ د فایروالډ ترتیب کې د ډیبګ کچه بدل کړئ:

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

د ترتیباتو پلي کول د تنظیماتو بیا لوستلو لپاره د فایر والډ معمول کمانډ دی:

$ sudo firewall-cmd --reload

تاسو کولی شئ په لاندې ډول غورځول شوي کڅوړې وګورئ:

grep forward_fw /var/log/messages

نور څه شی دی

دا تنظیم بشپړوي!

ټول هغه څه چې پاتې دي د پیرودونکي اړخ کې د پیرودونکي سافټویر نصب کول ، پروفایل واردول او وصل کول دي. د وینډوز عملیاتي سیسټمونو لپاره، د توزیع کټ په کې موقعیت لري پرمخ وړونکي ویب پاڼه.

په نهایت کې ، موږ خپل نوی سرور د نظارت او آرشیف سیسټمونو سره وصل کوو ، او په منظم ډول د تازه معلوماتو نصب کول مه هیروئ.

باثباته اړیکه!

سرچینه: www.habr.com

Add a comment