Yerləşdirmə etiketləri insanların bu funksiyaya müraciət etməsinin adi səbəbidir: hər bağlantı sayt və ya rol kimi bir şey daşımalı, server isə ikinci bir etimadnamə formatı uydurmadan onu oxumalıdır. İcma OpenVPN-də mexanizm artıq var və o, kiçikdir. Ağrıdan hissə gözləntilərdir. Müştəri profilində adi dəyişən təyin etmək serverdə heç nə etmir və gələn dəyər yalnız müştərinin onu göndərdiyini sübut edir.

Bu, işləyən yol, həqiqətən nəyin gəldiyini göstərən yoxlama addımı və yarımkonfiqurasiya edilmiş qarmaq buraxmayan geri qaytarma üçün təlimatdır. Burada heç nə yeni sertifikat, yeni plagin və ya protokol uzantısı tələb etmir.

Dəyişəni təyin edin və yolu aktivləşdirin

Müştəri profilində işi iki sətir görür və hər ikisi tələb olunur. Birincisi olmadan göndəriləcək heç nə yoxdur; ikincisi olmadan müştəri ümumiyyətlə peer məlumatı təklif etmir. Sıra vacib deyil və bunu bilməyə dəyər, çünki iki sətir çox vaxt yaradılmış profilin müxtəlif hissələrinə düşür. Vacib olan odur ki, hər ikisi müştəri onu oxumazdan əvvəl profili yenidən yazan hər şeydən sağ çıxsın.

setenv UV_DEPLOY field-support
push-peer-info

UV_ prefiksi bəzək deyil. Adi DEPLOY dəyişəni müştəri prosesinə məxsus qalır və heç vaxt ötürülmür, prefiksli forma isə protokolun istifadəçi tərəfindən təyin edilmiş sahələr üçün ayırdığı ad məkanıdır. Təsdiqlənmiş profilin qalan hissəsini toxunulmaz saxlayın və yerləşdirdiyiniz müştəri qurğusunun hər iki direktivi dəstəklədiyini yayımdan əvvəl təsdiqləyin.

Bir praktiki yoxlama burada, sonda deyil, yer alır: direktivin müştəri ikili faylına çatdığına və bir sarğı tərəfindən udulmadığına əmin olun. Öz əmr sətrini yaradan qrafik müştəri və ya saxlanmış profili yenidən yükləyən idarəetmə interfeysi tanımadığı sətirləri ata bilər. Server heç nə görmürsə, ilk baxılacaq yer buradır.

Sahəni server qarmağından oxuyun

Server tərəfində alınan peer məlumatı yoxlanılır və bağlantı iş axınının mühitinə daxil edilir; bu da onu sizin heç bir protokol işiniz olmadan qarmaqdan oxunaqlı edir. Serverin nəzarət kanalını təhlil etməsinə və ya sizin üçün nə isə saxlamasına ehtiyac yoxdur; dəyər sadəcə bağlantı qurularkən orada olur. Etiketi doğrulanmış adın yanında qeyd edən minimal client-connect skripti belə görünür.

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

Dəyişəni logu təhlil etmək əvəzinə mühit vasitəsilə oxuyun və həmişə ona standart dəyər verin. ${UV_DEPLOY:-unset} sahəni heç vaxt göndərməyən müştərilər üçün skripti işlək saxlayır ki, bu da mərhələli yayım zamanı normal vəziyyətdir. Adı tapmaq üçün bütün mühiti loga boşaltmayın; orada etiketdən qat-qat çox şey var, o cümlədən saxlamaq istəmədiyiniz dəyərlər.

Skripti əl ilə işə salın və o, hər şey üçün unset göstərəcək, çünki əl qabığı bağlantı mühitini daşımır. Bu skriptdə xəta deyil və sahənin çatışmadığına dəlil deyil. Onu yalnız dəyişənin mövcud olduğu kontekst olan real bağlantı vasitəsilə sınayın.

Həqiqətən nəyin gəldiyini yoxlayın

Etiketli bir müştəri və etiketsiz bir müştəri qoşun, sonra faylı oxuyun. Cütlük sınaqdır: bir sətir dəyəri, digəri standart dəyəri daşımalı və hər ikisi gözlədiyiniz eyni doğrulanmış kimliyi göstərməlidir.

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

O şərh sətirləri çıxışın formasıdır, serverinizdən transkript deyil; öz faylınızı oxuyun. İkinci müştəri də dəyər göstərirsə, dəyişən mühitin başqa yerində təyin edilib və siz peer sahəsini deyil, köhnə parametri oxuyursunuz.

Bağlantı üçün server logunu da yoxlayın. Peer məlumatı orada görünə bilər ki, bu da sazlama üçün rahatdır və dəyərləri darıxdırıcı saxlamaq üçün səbəbdir: insan adları yox, bilet nömrələri yox, log oxuyanın görməsindən narahat olacağınız heç nə yox.

Etiketi kimlik deyil, iddia kimi qəbul edin

Müştəri profilini redaktə edə bilən hər kəs etiketi dəyişə bilər və tunelin doğrulanması etiketi səlahiyyətli etmir. Nəqliyyat dəyəri uçuşda qoruyur; iddianı təsdiqləmir. Avtorizasiya yenə də doğrulanmış kimliyə və serverin sahib olduğu qeydiyyat qeydinə aiddir, etiket isə lazım olduqda həmin qeydlə müqayisə edilir.

Bu fərq etiketin harada istifadə oluna biləcəyini müəyyən edir. Yaxşı istifadələr sessiyanı düzgün log faylına yönəltmək, idarə panelində göstərmə qrupunu seçmək və ya dəstək sessiyasını etiketləməkdir ki, insan onu sonra tapa bilsin. Pis istifadələr cihazı alt şəbəkəyə qəbul etmək, firewall siyasəti seçmək və ya sessiyanın hansı müştərinin məlumatlarını oxuya biləcəyini qərar verməkdir.

Dəyəri yol, sorğu və ya qabıq əmrinə çatmazdan əvvəl yoxlayın. Gözlənilən sətirlərin icazə siyahısı yerləşdirmə etiketi üçün kifayətdir və heç bir xərc tələb etmir. Peer tərəfindən verilən sətri heç vaxt qabıq əmr sətrinə daxil etməyin və saxlanılan hər hansı müşahidəni növbəti müştərinin yenidən istifadə edəcəyi tunel ünvanına deyil, sessiyaya bağlayın.

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

Təmiz şəkildə geri qaytarın

Funksiyanı silmək iki silmə və bir yoxlamadır. Müştəri profilindən setenv və push-peer-info sətirlərini çıxarın, sonra serverdə qarmağı və onun log hədəfini silin və ya deaktiv edin.

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

Sonra bir müştərini yenidən qoşun və log sətrinin artıq görünmədiyini təsdiqləyin. Profil dəyişikliyindən sonra işləməyə davam edən qarmaq adətən test cihazına hələ də yerləşdirilmiş ikinci profildir və onu indi tapmaq audit zamanı tapmaqdan daha ucuzdur.

Sonda qalan şey mənşəyi sənədləşdirilmiş kiçik, məhdud sessiya metadatasıdır: müştəri onu iddia edir, server onu qeyd edir və girişlə bağlı heç nə ondan asılı deyil. Bu, funksiyanın faydalı versiyasıdır və ora çatmaq üçün yeni etimadnamə tələb olunmur.

Əlaqəli məqalələr