სახელმძღვანელოში ერთნაირად რომ გამოიყურება ორი კატალოგი, სრულიად სხვადასხვა საქმეს აკეთებს. ერთი ინახავს სერტიფიკატის ორგანოს: მის პირად გასაღებს, სერიულ მრიცხველს და ყველაფრის ჩანაწერს, რაც მან ხელი მოაწერა. მეორე ინახავს იმას, რაც დემონს სჭირდება გაშვებისა და კლიენტების მომსახურებისთვის. ორივეს ერთ ჰოსტზე ერთი ანგარიშის ქვეშ შენახვა მოხერხებულია ერთი შუადღისთვის და ძვირია განლაგების დარჩენილი სიცოცხლისთვის, რადგან მაშინ დემონი მუშაობს იმ ერთადერთი გასაღების გვერდით, რომელსაც შეუძლია ნებისმიერი იდენტობის შექმნა.

რა შეიცავს CA-ის სამუშაო სივრცე

PKI კატალოგი გამცემის მდგომარეობაა და არა კონფიგურაცია. ის შეიცავს CA-ის პირად გასაღებსა და სერტიფიკატს, სერიულ ფაილს, გაცემული სერტიფიკატების ინდექსს და თითოეული იდენტობის მასალას, რომელიც მათგან შეიქმნა.

მოთხოვნაზე ხელმოწერა ცვლის ამ მდგომარეობას, ამიტომ სამუშაო სივრცე ეკუთვნის ადმინისტრატორის მიერ კონტროლირებულ ანგარიშს იმ ჰოსტზე, სადაც VPN სერვისი არ მუშაობს. ვისაც შეუძლია CA-ის პირადი გასაღების წაკითხვა, შეუძლია გასცეს სერტიფიკატი, რომელსაც სერვერი ენდობა, ამიტომ გასაღების დაცვა ერთ ფაილში მთელი ნდობის მოდელია. მისი მეორე ადგილას კოპირება ერთი ნაბიჯის დაზოგვისთვის ქმნის მეორე დასაცავ და მეორე დასავიწყებელ რამეს. ყოველი ხელმოწერა ასევე ზრდის სერიას და ინდექსში ჩანაწერს ამატებს, ამიტომ სამუშაო სივრცე მდგომარეობის ერთი ასლია და არა ფაილების საქაღალდე.

CA-ის საჯარო სერტიფიკატი სხვაა. ის გავრცელებისთვისაა განკუთვნილი და სწორედ მისით ამოწმებენ კლიენტები და სერვერები ერთმანეთს.

რას კითხულობს დემონი გაშვებისას

მოქმედი სერვერი მოიხმარს მცირე ნაკრებს: საკუთარ სერტიფიკატს, საკუთარ პირად გასაღებს, CA-ის სერტიფიკატს პარტნიორების შესამოწმებლად და იმ გასაღების მასალას, რასაც არჩეული რეჟიმი მოითხოვს. ის ამ გზებს კითხულობს გაშვებისას და კიდევ ერთხელ გადატვირთვისას.

მესაკუთრეობა უნდა შეფასდეს იმ ერთეულის მიმართ, რომელიც რეალურად უშვებს, და არა ინტერაქტიული root გარსის მიმართ. გამოცხადებულმა იზოლაციამ შეიძლება ფაილური სისტემის ნაწილი მხოლოდ-წაკითხვადი ან უხილავი გახადოს, მაშინაც კი, როცა root-ით ხელით შემოწმება წარმატებულია.

systemctl show -p User -p Group -p ReadOnlyPaths [email protected]
stat -c '%a %U:%G' /etc/openvpn/server/server.key
runuser -u openvpn -- test -r /etc/openvpn/server/server.key; echo $?

მესამე ხაზია ის, რასაც ხალხი გამოტოვებს. ის ეკითხება დემონის საკუთარ ანგარიშს, შეუძლია თუ არა გასაღების წაკითხვა, და ეს არის კითხვის ერთადერთი ფორმა, რომელსაც მნიშვნელობა აქვს პრივილეგიის ჩამოშლის შემდეგ. ნულოვანი გასვლა root-ით არაფერს გეუბნებათ იმაზე, თუ რა ხდება ჩამოშლის შემდეგ.

ორი მარცხის გზა ღირს გამოყოფად, სანამ რომელიმე ნებართვას შეცვლით. ხელმოწერის მარცხი მიუთითებს PKI კატალოგზე, მისი მშობელი კატალოგების ძებნის ნებართვაზე და იმ ანგარიშზე, რომელიც გამცემს უშვებს. გაშვების მარცხი მიუთითებს ერთეულზე, მის სამუშაო კატალოგზე და სერვერის კონფიგურაციაში დასახელებულ გზებზე. მთელი ხის ყველასთვის წაკითხვადი გახადვა არც ერთს არ ასწორებს და შლის იმ საზღვარს, რომელზეც ორივეა დამოკიდებული.

რატომ მარცხდება მოგვიანებით CA-ის გასაღების სერვერზე კოპირება

ასლი ჩვეულებრივ იწყება როგორც გამართვის ნაბიჯი: ვიღაცას სურს კლიენტის განახლება VPN ჰოსტზე, ამიტომ CA-ის გასაღები ხვდება /etc/openvpn-ში და განახლება მუშაობს. მყისიერი ამოცანა წარმატდება და საზღვარი ქრება.

შემდეგ სერვერი სარეზერვოდ კოპირდება და ხელმოწერის ორგანო ემატება სარეზერვო ასლებს. სნეპშოტი, მხარდაჭერის პაკეტი ან კონფიგურაციის კატალოგის ასლი ახლა ატარებს სანდო იდენტობების გაცემის უნარს, სანამ CA ძალაშია. ვინც ინახავს ამ ასლს, შეუძლია შექმნას სერტიფიკატი ნებისმიერი სახელისთვის, რომელსაც სერვერი იღებს, მათ შორის ისეთი სახელებისთვის, რომლებიც არასდროს გაცემულა. ამ გაცემის ერთადერთი ჩანაწერი ის არის, რაც მათ შენახვას არჩევენ.

ასეთი მდგომარეობიდან აღდგენა ფაილის წაშლის საკითხი არ არის. უნდა გადაწყვიტოთ, გამჟღავნდა თუ არა გასაღები, თუ დიახ — მოატრიალოთ CA და გადაანაწილოთ ნდობა ყველა პარტნიორზე. ცალკე სამუშაო სივრცე მთელ ამ საუბარს იცილებს.

ანგარიშები, კატალოგები, სარეზერვო ასლები

მიეცით გამცემს საკუთარი ანგარიში და სახლის კატალოგი, შორს VPN ჰოსტიდან, სადაც ეს პრაქტიკულად შესაძლებელია. მიეცით დემონს სხვა ანგარიში, განლაგებული მასალის წაკითხვის უფლებით და სერტიფიკატების გამცემ არაფერზე ჩაწერის უფლების გარეშე. განალაგეთ საჯარო სერტიფიკატების გარეთ კოპირებით და არასდროს გამცემის პირადი მდგომარეობის შიგნით ჩათრევით. გააკეთეთ ორივე როლის სარეზერვო ასლი ცალ-ცალკე, რადგან მათი მგრძნობელობა და აღდგენის ისტორიები განსხვავდება.

გაუქმების შემდეგ განაახლეთ CRL ფაილი, რომელსაც სერვერის კონფიგურაცია ასახელებს, შემდეგ გადატვირთეთ სერვისი, რათა ახალმა კავშირებმა წაიკითხონ ის. Easy-RSA-ის დოკუმენტაცია აღწერს სამუშაო სივრცის აწყობას და ხელმოწერის პროცესს; მის გარშემო მესაკუთრეობის წესები თქვენი ჰოსტის გადაწყვეტილებად რჩება. დაადასტურეთ, რა ჩატვირთა სერვისმა openssl crl -in /etc/openvpn/crl.pem -noout -lastupdate -nextupdate-ით, ნაცვლად იმის ვარაუდისა, რომ გადატვირთვამ ის აიტაცა.

ტესტი, რომელიც ადასტურებს გაყოფას

შეამოწმეთ უარყოფითი შემთხვევა და არა მხოლოდ მოქმედი. მოაწერეთ სერტიფიკატს ხელი გამცემის ანგარიშიდან, როგორც გათვალისწინებულია, შემდეგ დაადასტურეთ, რომ იმავე ანგარიშს არ შეუძლია სერვისის გაშვება ან სერვერის პირადი გასაღების წაკითხვა. შემდეგ დაადასტურეთ, რომ დემონის ანგარიშს არ შეუძლია CA-ის პირადი გასაღების წაკითხვა.

ეს სამი შემოწმება რამდენიმე წუთს იკავებს და პერსონალის ცვლას გადაურჩება, რადგან ეს ნებართვებზეა ნათქვამი და არა ჩვევაზე. ჩაწერეთ შედეგი მის მიერ დაფარულ გზებთან და ანგარიშებთან ერთად, და იმ თარიღთან, როცა ისინი გაუშვით. წინააღმდეგ შემთხვევაში ამ განლაგების მემკვიდრე შემდეგი ადამიანი საზღვარს ხელახლა გამოიღებს იმ სახელმძღვანელოდან, სადაც საზღვარი არასდროს ყოფილა. თარიღიანი ჩანაწერია ისიც, რაც შემდეგ მიმოხილვას წუთებად აქცევს და არა შუადღედ.

დაკავშირებული სტატიები