Bir müştərinin girişini müvəqqəti dayandırmaqla onu birdəfəlik silmək, biri geri qaytarılana qədər eyni iş kimi görünür. Sertifikatı ləğv etmək serverin son hesab etdiyi bir qeyd yazır və bunu geri çevirmək emissiya edənin verilənlər bazasını əllə redaktə etmək deməkdir. Canlı tuneli qoparmaq isə etimadda heç nə dəyişməyən idarəetmə əmridir. Qolu seçərkən açarın hələ də etibarlı olub-olmadığını soruşun, sorğunun nə qədər təcili göründüyünü yox.

İnanc: ləğv edilmiş və dayandırılmış eyni şeydir

Bir podratçı bir həftəlik dayandırılır və refleks ləğv etmək olur, çünki ləğvetmə nəyisə söndürmək kimi səslənir. Səliqəli görünür, on saniyə çəkir və geri qayıtmağın yeganə yolu kimi verilənlər bazası redaktəsini qoyur. Refleks başa düşüləndir və qapını bağlamaqdan çox pasportu yandırmağa bənzəyir. Dayandırılmış cihazla kompromisə uğramış açar fərqli rəftar tələb edir və yalnız biri geri qaytarmaq üçün ucuzdur.

Fərq şəxsin deyil, etimad məlumatının özü ilə bağlıdır. Hələ də doğru əllərdə olan açar heç bir etimad itkisi olmadan dayandırılıb bərpa edilə bilər. Kopyalanmış ola biləcək açar heç vaxt bərpa edilməməlidir, çünki bərpa kopyanın mövcud olmadığını iddia edir.

Cavabı hər iki sistemə toxunmazdan əvvəl yazın. Açarın ifşa olub-olmadığını deyə bilmirsinizsə, ehtiyatlı cavab dəyişdirmədir.

Canlı sessiyanı idarəetmə interfeysi ilə qoparın

OpenVPN sessiyaları sadalaya və birini ümumi adla öldürə bilən idarəetmə interfeysi təqdim edir. Onu localhost-da aktivləşdirin, ictimai interfeysdən uzaq saxlayın və sessiya dərhal yox olmalı olduqda öldürmə əmrini göndərin. Əmr yalnız o tuneli bağlayır və bütün digər müştərilər işləməyə davam edir.

Bu aktiv problemə cavabdır, dayandırma siyasəti deyil. Eyni profil bir dəqiqə ərzində yenidən qoşula bilər, çünki etimad məlumatında heç nə dəyişməyib. Sessiya getməlidirsə və davamlı qərar hələ verilirsə, bundan istifadə edin.

Öldürməzdən əvvəl sessiyanın qoşulduğunu təsdiqləyin ki, heç vaxt qoşulmamış müştərini axtarmayasınız. Aşağıdakı status əmri hazırda qoşulu olanı çap edir.

printf 'status 2\nquit\n' | nc 127.0.0.1 7506
printf 'kill kiosk-14\nquit\n' | nc 127.0.0.1 7506

Öldürmə belə bir müştəri olmadığını bildirirsə, sertifikatdakı ümumi ad yazdığınız sətir deyil. Profil faylının adını deyil, status çıxışını oxuyun.

CRL əslində nəyə nəzarət edir

Server sertifikatda saxlanan ləğv bayrağına müraciət etmir. O, crl-verify ilə göstərilən sertifikat ləğv siyahısını hər yeni bağlantıda oxuyur və seriyası həmin siyahıda görünən sertifikatı rədd edir. Bundan iki nəticə çıxır və ikisi də əməliyyat baxımından vacibdir. Fayl serverin imtiyazları ötürdüyü hesab üçün oxunaqlı olmalıdır və artıq qoşulmuş müştəri yenidən qoşulana qədər işləməyə davam edir.

Bu ikinci nəticə insanları hadisələr zamanı təəccübləndirir. Sertifikatın ləğvi ondan hazırda istifadə edən tuneli bağlamır. Sessiya dərhal bitməlidirsə, ləğvi idarəetmə öldürməsi ilə cütləşdirin və bu iki hərəkəti təlimatda ayrı addımlar kimi qəbul edin.

Serverin həqiqətən nəyi tətbiq edəcəyini görmək üçün siyahını yoxlayın, köçürdüyünüz son faylın zaman damğasına güvənməyin. Vacib olan hissə seriya sayıdır.

openssl crl -in /etc/openvpn/server/crl.pem -noout -text | sed -n '1,14p'
ls -l /etc/openvpn/server/crl.pem

Girişi olmayan siyahı ilə düzgün girişləri olan siyahı kataloq siyahısında eyni görünür, buna görə seriya sayını çap etməyə dəyər. İcazələr sətri də eyni dərəcədə vacibdir, çünki daemonun oxuya bilmədiyi fayl rədd edilmiş müştəriyə bənzəyən uğursuzluq yaradır.

Qeydi bərpa etmək, ehtiyatla

Sertifikatı bərpa etmək emissiya verilənlər bazasındakı qeydi tərsinə çevirmək və yeni siyahı yayımlamaq deməkdir. easy-rsa 3 həmin bazanı PKI qovluğunda index.txt kimi saxlayır, köhnə tərtibatlar isə fərqli düzülüşdən istifadə edirdi. Sətir status hərfi və bitmə tarixi ilə başlayır. Ləğv edilmiş sətir isə seriya nömrəsi, sertifikat faylının adı və fərqləndirici adla davam etməzdən əvvəl ləğv üçün zaman damğası daxil edir. Sətri geri qoymaq həmin zaman damğasını silmək və hərfi çevirmək, qalan hər şeyi isə toxunulmaz buraxmaq deməkdir.

Əvvəlcə faylın ehtiyat nüsxəsini götürün və düzəlişi mətn redaktorunda yazmaq əvəzinə skriptlə edin. Sətrin daşıdığı sahə sayını dəyişən yazı səhvi sonradan əlavə edilən hər sertifikat üçün emissiyanı pozur. Dəyişikliyi avtomatlaşdırmağın və toxunmazdan əvvəl faylı köçürməyin səbəbi budur.

Eyni adın ikinci ləğvi də çox vaxt uğursuz olur, çünki ilk icra həmin sertifikatı və açarını alətin onları gözlədiyi qovluqlardan kənara köçürüb. Sonra alət ləğv etmək tapşırılanı tapa bilmir və xəta mesajı səbəbi həmişə aydın izah etmir.

cp /etc/easy-rsa/pki/index.txt /root/index.txt.$(date +%F-%H%M)
grep -c '^R' /etc/easy-rsa/pki/index.txt
easyrsa gen-crl

Yeni siyahını yayımlayın, sahibliyini düzəldin və serverin onu oxumasını təmin edin. Əksər quraşdırmalarda yenidən yükləmə kifayətdir, amma təsdiq təzə bağlantıdan gəlməlidir, çünki mövcud sessiya heç nəyi yenidən yoxlamadı.

İşin hansı qolu haqq etdiyini yoxlayın

Bütün təlimatı həll edən bir sualı verin: şəxsi açar hələ də yalnız olmalı olduğu yerdədir. Əgər belədirsə, sessiyanın öldürülməsi və sənədləşdirilmiş dayandırma işi əhatə edir və arxada daimi qeyd qoymur. Əgər deyilsə, yeganə təhlükəsiz cavab köhnə sertifikat ləğv edilmiş halda yeni açardır.

Sonra nəticəni konfiqurasiya fərqi ilə deyil, bağlantı cəhdi ilə yoxlayın. Fərq sizə nə nəzərdə tutduğunuzu, bağlantı isə serverin nəyi tətbiq etdiyini deyir.

openssl crl -in /etc/openvpn/server/crl.pem -noout -text | grep -c 'Serial Number'
printf 'status 2\nquit\n' | nc 127.0.0.1 7506

Bərpa edilmiş müştəri qoşulub status çıxışında görünəndə qeyd redaktəsi işləmişdir. Ləğv edilmiş müştəri rədd olunub jurnal CRL-i göstərəndə ləğv işləmişdir. Arada qalan hər şey icazə və ya yenidən yükləmə problemidir və növbəti sorğu gəlməzdən əvvəl düzəldilməyə dəyər.

Əlaqəli məqalələr