OpenVPN-ის ერთი კლიენტის შეჩერება: რატომ არის გაუქმება არასწორი ბერკეტი
სესიის მოკვლა შექცევადია; სერტიფიკატის გაუქმება არა. გადაწყვიტეთ, რომელი ბერკეტი სჭირდება საქმეს, და CRL ხელახლა ააგეთ მხოლოდ მაშინ, როცა ეს ხდება.
ერთი კლიენტის წვდომის შეჩერება და მისი სამუდამოდ წაშლა ერთი და იმავე საქმედ გვეჩვენება, სანამ ერთ-ერთის გაუქმებას არ ცდილობთ. სერტიფიკატის გაუქმება წერს ჩანაწერს, რომელსაც სერვერი საბოლოოდ მიიჩნევს, და მისი შებრუნება ნიშნავს გამომცემლის მონაცემთა ბაზის ხელით რედაქტირებას. მომუშავე გვირაბის მოშორება მართვის ბრძანებაა, რომელიც ნდობაში არაფერს ცვლის. ბერკეტი შეარჩიეთ კითხვით, არის თუ არა გასაღები კვლავ სანდო, და არა კითხვით, რამდენად სასწრაფო ჩანს მოთხოვნა.
რწმენა: გაუქმებული და შეჩერებული ერთი და იგივეა
კონტრაქტორს ერთი კვირით აჩერებენ და რეფლექსი გაუქმებაა, რადგან გაუქმება რაღაცის გამორთვას ჰგავს. გალამაზებულად გამოიყურება, ათ წამს იკავებს, და უკან დაბრუნების ერთადერთ გზად მონაცემთა ბაზის რედაქტირებას ტოვებს. რეფლექსი გასაგებია და ის უფრო ახლოს არის პასპორტის დაწვასთან, ვიდრე კარის დახურვასთან. შეჩერებულ მოწყობილობასა და გამჟღავნებულ გასაღებს სხვადასხვა მოპყრობა სჭირდება, და მათგან მხოლოდ ერთია იაფად შექცევადი.
განსხვავება რწმუნებაშია და არა ადამიანში. გასაღები, რომელიც ჯერ კიდევ სწორ ხელშია, შეიძლება შეჩერდეს და გაგრძელდეს ნდობის ყოველგვარი დაკარგვის გარეშე. გასაღები, რომელიც შეიძლება დაკოპირებულიყო, არასოდეს უნდა აღდგეს, რადგან აღდგენა ამტკიცებს, რომ ასლი არ არსებობს.
პასუხი ჩაწერეთ სანამ რომელიმე სისტემას შეეხებით. თუ ვერ ამბობთ, გამჟღავნდა თუ არა გასაღები, კონსერვატიული პასუხი შეცვლაა.
მოაშორეთ მოქმედი სესია მართვის ინტერფეისით
OpenVPN გვთავაზობს მართვის ინტერფეისს, რომელსაც შეუძლია სესიების ჩამოთვლა და ერთის მოკვლა საერთო სახელით. ჩართეთ ის localhost-ზე, შეინახეთ საჯარო ინტერფეისისგან მოშორებით, და გაგზავნეთ მოკვლის ბრძანება, როცა სესია ახლავე უნდა გაქრეს. ბრძანება მხოლოდ იმ გვირაბს ხურავს, და ყველა სხვა კლიენტი აგრძელებს მუშაობას.
ეს პასუხია აქტიურ პრობლემაზე და არა შეჩერების პოლიტიკა. იგივე პროფილს შეუძლია ერთ წუთში ხელახლა დაკავშირება, რადგან მის რწმუნებაში არაფერი შეცვლილა. გამოიყენეთ ის, როცა სესია უნდა წავიდეს და გრძელვადიანი გადაწყვეტილება ჯერ კიდევ მიიღება.
დარწმუნდით, რომ სესია დაკავშირებული იყო სანამ მოკლავთ, რათა არ ეძებოთ კლიენტი, რომელიც არასოდეს დაკავშირებულა. ქვემოთ მოცემული მდგომარეობის ბრძანება ბეჭდავს, რა არის ახლა დაკავშირებული.
printf 'status 2\nquit\n' | nc 127.0.0.1 7506
printf 'kill kiosk-14\nquit\n' | nc 127.0.0.1 7506თუ მოკვლა იტყობინება, რომ ასეთი კლიენტი არ არსებობს, სერტიფიკატში მოცემული საერთო სახელი არ არის ის სტრიქონი, რომელიც აკრიფეთ. წაიკითხეთ მდგომარეობის გამოტანა და არა პროფილის ფაილის სახელი.
რას აკონტროლებს CRL სინამდვილეში
სერვერი არ მიმართავს სერტიფიკატზე შენახულ გაუქმების დროშას. ის კითხულობს crl-verify-ში დასახელებულ სერტიფიკატების გაუქმების სიას ყოველ ახალ კავშირზე, და უარყოფს სერტიფიკატს, რომლის სერიული ნომერი ამ სიაშია. აქედან ორი შედეგი გამომდინარეობს და ორივე ოპერატიულად მნიშვნელოვანია. ფაილი უნდა იყოს წაკითხვადი იმ ანგარიშისთვის, რომელზეც სერვერი ამცირებს თავის უფლებებს, და უკვე დაკავშირებული კლიენტი აგრძელებს მუშაობას სანამ ხელახლა არ დაუკავშირდება.
მეორე შედეგი ინციდენტების დროს აკვირვებს ადამიანებს. სერტიფიკატის გაუქმება არ ხურავს გვირაბს, რომელიც ახლა იყენებს მას. თუ სესია დაუყოვნებლივ უნდა დასრულდეს, შეუთავსეთ გაუქმებას მართვის მოკვლა, და ორივე მოქმედება ცალკე ნაბიჯად განიხილეთ სახელმძღვანელოში.
შეამოწმეთ სია, რომ ნახოთ, რას აიძულებს სერვერი სინამდვილეში, ნაცვლად იმისა, რომ ენდოთ ბოლოს დაკოპირებული ფაილის დროის ნიშანს. სერიული ნომრების რაოდენობაა მნიშვნელოვანი ნაწილი.
openssl crl -in /etc/openvpn/server/crl.pem -noout -text | sed -n '1,14p'
ls -l /etc/openvpn/server/crl.pemჩანაწერების გარეშე სია და სწორი ჩანაწერების მქონე სია დირექტორიის სიაში ერთნაირად გამოიყურება, ამიტომ ღირს სერიული ნომრების რაოდენობის დაბეჭდვა. ნებართვების ხაზიც ისეთივე მნიშვნელოვანია, რადგან ფაილი, რომელსაც დემონი ვერ კითხულობს, წარმოქმნის ჩავარდნას, რომელიც უარყოფილ კლიენტს ჰგავს.
ჩანაწერის აღდგენა, ფრთხილად
სერტიფიკატის აღდგენა ნიშნავს გამოცემის მონაცემთა ბაზაში ჩანაწერის შებრუნებას და ახალი სიის გამოქვეყნებას. easy-rsa 3 ინახავს ამ ბაზას როგორც index.txt PKI დირექტორიაში, ხოლო ძველი განლაგებები სხვა წესრიგს იყენებდნენ. ხაზი იწყება მდგომარეობის ასოთი და ვადის გასვლის თარიღით. გაუქმებული ხაზი ჩასვამს გაუქმების დროის ნიშანს სანამ გააგრძელებს სერიული ნომრით, სერტიფიკატის ფაილის სახელით და განმასხვავებელი სახელით. ხაზის უკან დაბრუნება ნიშნავს იმ დროის ნიშნის წაშლას და ასოს შებრუნებას, დანარჩენი ყველაფრის უცვლელად დატოვებას.
ჯერ გააკეთეთ ფაილის სარეზერვო ასლი, და რედაქტირება შეასრულეთ სკრიპტით და არა ტექსტურ რედაქტორში კრეფით. ბეჭდვითი შეცდომა, რომელიც ცვლის რამდენ ველს ატარებს ხაზი, ამტვრევს გამოცემას ყოველი შემდგომში დამატებული სერტიფიკატისთვის. სწორედ ამიტომ ღირს ცვლილების ავტომატიზაცია და ფაილის შეხებამდე კოპირება.
იმავე სახელის მეორე გაუქმება ხშირადაც ვერ ხერხდება, რადგან პირველმა გაშვებამ ის სერტიფიკატი და მისი გასაღები გადაიტანა იმ დირექტორიებიდან, სადაც ხელსაწყო მათ პოვნას ელოდება. მაშინ ხელსაწყო ვერ პოულობს იმას, რისი გაუქმებაც სთხოვეს, და შეცდომის შეტყობინება ყოველთვის ნათლად არ ხსნის მიზეზს.
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გამოაქვეყნეთ ახალი სია, გაასწორეთ მისი მფლობელობა, და აიძულეთ სერვერს წაიკითხოს ის. გადატვირთვა საკმარისია უმეტეს ინსტალაციაში, მაგრამ დადასტურება ახალი კავშირიდან უნდა მოვიდეს, რადგან არსებულ სესიას არაფერი გადაუმოწმებია.
შეამოწმეთ, რომელი ბერკეტი იმსახურებს საქმე
დასვით ერთადერთი კითხვა, რომელიც მთელ სახელმძღვანელოს წყვეტს: არის თუ არა პირადი გასაღები ჯერ კიდევ მხოლოდ იქ, სადაც უნდა იყოს. თუ ასეა, სესიის მოკვლა და დოკუმენტირებული შეჩერება ფარავს საქმეს და მუდმივ ჩანაწერს არ ტოვებს. თუ არა, ერთადერთი უსაფრთხო პასუხი ახალი გასაღებია, ძველი სერტიფიკატი კი გაუქმებულად რჩება.
შემდეგ შეამოწმეთ შედეგი კავშირის ცდით და არა კონფიგურაციის სხვაობით. სხვაობა გეუბნებათ, რა გქონდათ განზრახული, და კავშირი გეუბნებათ, რას ახორციელებს სერვერი.
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როცა აღდგენილი კლიენტი უკავშირდება და ჩნდება მდგომარეობის გამოტანაში, ჩანაწერის რედაქტირებამ იმუშავა. როცა გაუქმებული კლიენტი უარყოფილია და ჟურნალი ასახელებს CRL-ს, გაუქმებამ იმუშავა. მათ შორის ყველაფერი ნებართვების ან გადატვირთვის პრობლემაა, და ღირს მისი გასწორება მომდევნო მოთხოვნის მოსვლამდე.