Yan-yana yapışdırılmış iki ən az imtiyaz resepti daha sərt bir quraşdırma yaratmır. Bir model demonun imtiyazlı başlamasına və işə salındıqdan sonra imtiyazsız hesaba enməsinə imkan verir; digəri xidmət menecerinin onu ilk təlimatdan etibarən məhdud şəxsiyyət altında başlatmasını təmin edir. Hər biri təkbaşına işləyir, birləşmə isə çox vaxt iki işin heç birini təmiz yerinə yetirə bilməyən xidmət yaradır. Bunun qalan hissəsi qərarı sıra ilə izah edir.

İki model, keçidin bir sahibi

Birinci model demona aiddir. OpenVPN-in icma buraxılışındakı user və group seçimləri tunel və açarlar qurulduqdan sonra şəxsiyyəti dəyişir, persist-key və persist-tun isə həmin resursları sonradan istifadə oluna bilən saxlayır.

İkinci model xidmət menecerinə aiddir. systemd-də User= və ya Group= parametri prosesin hansı şəxsiyyət altında başladığını müəyyən edir, qabiliyyət göstərişləri isə onun nəyə sahib ola biləcəyini həll edir. Modellər arasında seçim etmək təhlükəsizlik məsələsindən əvvəl paketləmə məsələsidir və paket baxıcısı buna artıq cavab verib. Sizin işiniz üçüncü variant icad etmək deyil, həmin cavabı tapmaqdır.

Hər ikisi qanunidir. Səhv onları bir dizaynın qatları kimi qəbul etməkdir, çünki ikinci model birincinin şəxsiyyət keçidini prosesin artıq icazəsi olmayan əməliyyata çevirə bilər.

Şəxsiyyətin harada dəyişdiyini müəyyən edin

Əgər unit artıq xüsusi hesabla başlayırsa, demon üçün başqa hesaba keçmə təlimatı sərtləşdirilmiş xidmətin heç vaxt etməməli olduğu setuid keçidi tələb edir. Nasazlıq aydın siyasət mesajı kimi deyil, başlanğıcda icazə xətası kimi görünür. Bu, çatışmayan qabiliyyət kimi oxunur, bu da insanları şəxsiyyət sualından uzaqlaşdırıb daha geniş sərhəd dəstinə doğru aparır.

Heç nəyi redaktə etməzdən əvvəl quraşdırılmış paketin həqiqətən nə gətirdiyini oxuyun, drop-in qovluğu da daxil olmaqla. Bəzi unitlər demonun öz enişini qəsdən buraxmır, çünki menecer bunu artıq həll edir, bəziləri isə işə salındıqdan sonrakı keçid üçün həmin seçimlərə güvənir. Hansı modeli miras aldığınızı bilmədən birini silmək işləyən xidmətin başlamamasının yoludur.

Seçilmiş modeli bir sətirdə yazın: menecerə məxsus, yoxsa demona məxsus. Sonrakı hər göstəriş bu cümləyə uyğun olmalıdır və qarışıq unit kompromis deyil, səhv kimi qiymətləndirilməlidir.

Qabiliyyətlər hədlərdir, verilmə deyil

Qabiliyyət sərhəd dəsti prosesin ən çox nəyə sahib ola biləcəyini bildirir. Bu, tavandır və orada qabiliyyətin sadalanması özlüyündə heç nə vermir; buna görə geniş sərhəd dəsti olan unit yenə də tunel yarada bilməyə bilər.

Qabiliyyəti xidmətin ambient dəstinə həqiqətən yerləşdirən AmbientCapabilities=-dir. systemd icra arayışı iki göstərişi ayrı-ayrı sənədləşdirir və bu fərq onlayn qabiliyyət məsləhətlərinin çoxunu izah edir.

Qabiliyyəti yalnız uğursuz əməliyyat onu müəyyən etdikdən sonra əlavə edin. Daha geniş sərhəd dəsti əsl səbəbi gizlədir və xidməti dizaynın nəzərdə tutduğundan daha imtiyazlı saxlayır. O, həmçinin unitin nəzərdən keçirilməsini çətinləşdirir, çünki tavan artıq işi təsvir etmir. Əsl nasazlıq düzəldildikdən sonra əlavə qabiliyyəti silin.

Səlahiyyəti həyat dövrü boyunca xəritələyin

Prosesin hər mərhələdə nə etməli olduğunu sadalayın: başlanğıc, dayanıqlı vəziyyət, yenidən autentifikasiya və yekunlaşdırma. İnterfeys yaradılması, marşrut dəyişiklikləri, qorunan açarın oxunması və köməkçinin çağırılması hamısı eyni anda və eyni tələblər altında baş vermir. Siyahını qabiliyyətə görə sıralamazdan əvvəl mərhələyə görə sıralayın.

Davamlılıq seçimləri resursları yenidən danışıqlar boyunca qoruyur və heç vaxt saxlanılmamış icazələri vermir. Prosesin başlanğıcda oxuya bilmədiyi açar sonradan da oxunmaz olaraq qalacaq, davamlılıq bayraqları nə deyirsə desin. Bayraqlar artıq işləyən şeyi qoruyur.

Paylaşılan deyil, xüsusi hesabdan istifadə edin. OpenVPN-in rəsmi tərtibatçıları nobody işini ümumi nümunə kimi işlətmək vərdişindən çəkindirir, çünki hostdakı digər xidmətlər artıq həmin hesabla işləyə bilər və sizin sandığınız izolyasiya orada deyil.

Yerli yükü dəyişən xüsusiyyətlər, məsələn data-kanal ofloadı və ya fərqli şəkildə linklənən build, hansı əməliyyatların lazım olduğunu dəyişə bilər. Xəritəni nə isə pozulanda deyil, paket dəyişəndə yenidən nəzərdən keçirin.

Planı yazın və bərpa girişini saxlayın

Yerləşdirmə qeydi meneceri, başlanğıc şəxsiyyətini, nəzərdə tutulan dayanıqlı şəxsiyyəti və hər icazəni onu tələb edən əməliyyatla birlikdə adlandırmalıdır. Məhz bu qeyd növbəti dəyişikliyi eksperiment deyil, nəzərdən keçirilə bilən edir.

Redaktə edərkən konsol girişini açıq saxlayın, çünki başlanğıcda uğursuz olan uniti uzaqdan bərpa etmək çətindir. Dəyişikliyi tamamlanmış hesab etməzdən əvvəl yenidən başlatmanı və tam yenidən yükləməni sınaqdan keçirin. Yenidən başlatmaya dözən unit şəbəkə işə düşməzdən əvvəl yenə uğursuz ola bilər.

Uğur minimum səlahiyyətli, anlaşılmış həyat dövrüdür, təsadüfən kök olmayan ad altında işləyən proses deyil.

Əlaqəli məqalələr