د ځای پرځای کولو نښې هغه عادي دلیل دی چې خلک دې ځانګړتیا ته مخه کوي: هر اړیکه باید د سایټ یا رول په څیر یو څه وړي، او سرور باید دا د دوهم اعتبارنامې بڼې په جوړولو پرته ولولي۔ ټولنیز OpenVPN دا میکانیزم لا دمخه لري، او دا کوچنی دی۔ دردناکه برخه هیلې دي۔ په کلاینټ پروفایل کې یو عادي متغیر ټاکل په سرور کې هیڅ نه کوي، او رسېدلې ارزښت یوازې دا ثابتوي چې کلاینټ هغه لېږلی۔

دا د کارېدونکي لارې، هغه تصدیق ګام چې ښیي څه واقعاً ورسېدل، او هغه بیرته اخیستنې لپاره لارښود دی چې نیمګړې ترتیب شوې کړۍ نه پرېږدي۔ دلته هیڅ نوی سند، نوی پلگ‌ان یا پروتوکول پراخول نه غواړي۔

متغیر وټاکئ او لاره فعاله کړئ

په کلاینټ پروفایل کې دوه کرښې کار کوي، او دواړه اړینې دي۔ پرته له لومړۍ د لېږلو څه نشته؛ پرته له دویمې کلاینټ پییر معلومات هېڅ نه وړاندې کوي۔ ترتیب مهم نه دی، او دا پوهېدل ګټور دي ځکه دوه کرښې اکثراً د جوړ شوي پروفایل په بېلابېلو برخو کې تمامېږي۔ مهمه دا ده چې کلاینټ له لوستلو مخکې د پروفایل هر هغه بیا لیکنه چې وي، دواړه ژوندي پاتې شي۔

setenv UV_DEPLOY field-support
push-peer-info

UV_ مختاړی ښکلا نه ده۔ عادي DEPLOY متغیر د کلاینټ په پروسه کې ځایي پاتې کېږي او هېڅکله نه لېږدول کېږي، پداسې حال کې چې مختاړی لرونکې بڼه هغه نوم‌ځای دی چې پروتوکول د کارونکي ټاکل شوو ساحو لپاره ساتي۔ د تصویب شوي پروفایل پاتې برخه نه‌لاس‌وه‌ل شوې وساتئ او د ځای پرځای کولو دمخه ډاډه شئ چې تاسو چې کوم کلاینټ جوړښت ځای پرځای کوئ هغه دواړه لارښوونې ملاتړ کوي۔

یوه عملي څېړنه دلته ده، نه په پای کې: ډاډه شئ چې لارښوونه د کلاینټ باینري ته رسېږي او کوم پوښ یې نه تېروي۔ ګرافیکي کلاینټ چې خپله کمانډ کرښه جوړوي، یا مدیریتي انټرفیس چې ساتل شوی پروفایل بیا باروي، داسې کرښې غورځولی شي چې نه پېژني۔ که سرور هیڅ ونه ویني، دا لومړی ځای دی چې باید وګورئ۔

ساحه د سرور کړۍ څخه ولولئ

د سرور په خوا کې، ترلاسه شوې پییر معلومات تصدیق او د اړیکې کاري بهیر چاپېریال ته ننباسل کېږي، او همدا دا ستاسو له خوا د کوم پروتوکول کار پرته د کړۍ څخه لوستلو وړ ګرځوي۔ سرور ته اړتیا نشته چې کنټرول چینل تحلیل کړي یا ستاسو لپاره څه ذخیره کړي؛ ارزښت یوازې هغه وخت شتون لري چې اړیکه جوړېږي۔ لږترلږه client-connect سکریپټ چې نښه د تصدیق شوي نوم ترڅنګ ثبتوي داسې ښکاري۔

#!/bin/sh
# /etc/openvpn/server/hooks/label.sh
printf '%s %s\n' "$common_name" "${UV_DEPLOY:-unset}" \
  >> /var/log/openvpn/deploy-labels.log

متغیر د لاګ تحلیلولو پرځای د چاپېریال له لارې ولولئ، او تل ورته اصلي ارزښت ورکړئ۔ ${UV_DEPLOY:-unset} سکریپټ د هغو کلاینټونو لپاره هم فعال ساتي چې ساحه هېڅکله نه لېږي، کوم چې د پړاويز ځای پرځای کولو پر مهال نورمال حالت دی۔ د نوم موندلو لپاره ټول چاپېریال په لاګ کې مه اړوئ؛ پکې له نښې ډېر څه دي، په شمول هغه ارزښتونه چې تاسو یې ساتل نه غواړئ۔

سکریپټ په لاس وځغالئ او دا به هر څه لپاره unset راپور کړي، ځکه لاسي شیل د اړیکې چاپېریال نه وړي۔ دا د سکریپټ بګ نه دی او د ساحې نشتوالي ثبوت هم نه دی۔ دا د یوې ریښتینې اړیکې له لارې وآزموئ، کوم چې یوازینی زمینه ده چې متغیر پکې شتون لري۔

وګورئ چې واقعاً څه ورسېدل

یو کلاینټ د نښې سره او بل بې نښې وتړئ، بیا فایل ولولئ۔ جوړه ازموینه ده: یوه کرښه باید ارزښت وړي او بله اصلي ارزښت، او دواړه باید هغه ورته تصدیق شوې هویت ونومي چې تاسو یې توقع لرئ۔

tail -n 5 /var/log/openvpn/deploy-labels.log
# field-support deployed-client-07
# unset         legacy-laptop-02

هغه تبصره کرښې د وتنې بڼه ده، ستاسو د سرور کاپي نه ده؛ خپل فایل ولولئ۔ که دویم کلاینټ هم ارزښت ښکاره کړي، متغیر په چاپېریال کې بل ځای ټاکل شوی، او تاسو د پییر ساحې پرځای زوړ تنظیم لولئ۔

د اړیکې لپاره سرور لاګ هم وګورئ۔ پییر معلومات کېدای شي هلته ښکاره شي، دا د ډیبګ کولو لپاره اسانه ده او د دې لامل چې ارزښتونه ستړي وساتل شي: د خلکو نومونه نه، ټکټ شمېرې نه، لاګ لوستونکی یې وویني نو تاسو ته بد نه لګېږي هېڅ نه۔

نښه ادعا وګڼئ، نه هویت

هر څوک چې کلاینټ پروفایل سمولای شي د نښې بدلولای شي، او د تونل تصدیق کېدل نښه واکمنه نه کوي۔ ترانسپورت په لاره کې ارزښت ساتي؛ دا ادعا تصدیق نه کوي۔ اجازه لا هم تصدیق شوې هویت او د سرور ملکیت ثبت ریکارډ ته اړه لري، او کله چې مهم وي نښه له هغه ریکارډ سره پرتله کېږي۔

دا توپیر ټاکي چې نښه چېرې کارولای شئ۔ ښه کارونې دا دي چې یوه ناسته سم لاګ فایل ته واستول شي، په ډشبورډ کې د ښودنې ډله وټاکل شي، یا د ملاتړ ناسته نښه شي ترڅو یو انسان وروسته ومومي۔ بدې کارونې دا دي چې یو وسیله سبنیټ ته ننوځي، د فایر وال تګلاره وټاکل شي، یا پرېکړه وشي چې ناسته د کوم پیرودونکي ډاټا لولای شي۔

ارزښت تصدیق کړئ مخکې لدې چې لار، پوښتنه یا شیل کمانډ ته ورسېږي۔ د تمه شوو تارونو اجازه لړلیست د ځای پرځای کولو نښې لپاره بس دی، او هېڅ لګښت نه لري۔ هېڅکله د پییر ورکړل شوی تار په شیل کمانډ کرښه کې مه ننباسئ، او هر ذخیره شوی کتنه ناستې ته محدوده کړئ، نه هغه تونل پتې ته چې راتلونکی کلاینټ به یې بیا کاروي۔

case "${UV_DEPLOY:-}" in
  field-support|field-qa|lab) : ;;
  *) UV_DEPLOY=unknown ;;
esac

پاک بیرته یې راوګرځوئ

ځانګړتیا لرې کول دوه ړنګول او یو تصدیق دی۔ له کلاینټ پروفایل څخه setenv او push-peer-info کرښې لرې کړئ، بیا په سرور کې کړۍ او د هغې لاګ هدف لرې یا غیرفعال کړئ۔

grep -rn 'UV_DEPLOY\|push-peer-info' /etc/openvpn/
tail -n 3 /var/log/openvpn/deploy-labels.log

وروسته یو کلاینټ بیا وتړئ او ډاډه شئ چې لاګ کرښه نوره نه ښکاري۔ هغه کړۍ چې د پروفایل بدلون وروسته هم چلېږي معمولاً دوهم پروفایل وي چې لا هم په ازموینې وسیله ځای پرځای دی، او اوس یې موندل د پلټنې پر مهال موندلو څخه ارزانه دي۔

په پای کې پاتې کېدونکې یوه کوچنۍ، محدوده د ناستې میټاډاټا برخه ده چې سرچینه یې مستنده ده: کلاینټ یې ادعا کوي، سرور یې ثبتوي، او د لاسرسي په اړه هیڅ شی پرې تکیه نه کوي۔ دا د ځانګړتیا ګټورې بڼې ده، او هلته رسېدلو ته نوی اعتبارنامې ته اړتیا نشته۔

اړوندې مقالې