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

გაყავი ხარვეზი ორად დირექტივის შეცვლამდე

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

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

openvpn --config <profile>.ovpn --verb 4 2>&1 | head -n 40
journalctl -u [email protected] --since '-10 min' | grep -iE 'cipher|tls|verify'

მეორე მსმენელი სუსტი ზღვრის პატიოსანი ადგილია

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

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

tls-version-min 1.0
data-ciphers AES-128-GCM:AES-256-GCM:AES-256-CBC
data-ciphers-fallback AES-256-CBC

რას არღვევს სინამდვილეში ძველი პროვაიდერის სერტიფიკატი

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

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

remote-cert-tls server
tls-cipher "DEFAULT:@SECLEVEL=0"

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

verbosity 4-ზე ორივე მხარე ბეჭდავს საკონტროლო არხის TLS ვერსიას და შიფრს, რაზეც შეთანხმდნენ, და სესიის მონაცემთა შიფრს. წაიკითხე ეს ხაზები და არა ინიციალიზაციის ბანერი, რომელიც წარმატებას აცნობს და არა მის პირობებს. შემდეგ ხელახლა დაუკავშირე თანამედროვე კლიენტი მთავარ მსმენელს და დაადასტურე, რომ ის მაინც თანამედროვე კომპლექტზე ხვდება, რადგან საერთო კონფიგურაციაში გაჟონილი გამონაკლისი ჯერ აქ ჩნდება. ჩამოწერილი მნიშვნელობები შემდეგი გადახედვის საფუძველი ხდება.

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

ყოველ გამონაკლისს სჭირდება მფლობელი და თარიღი

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

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

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