არის თუ არა წარუმატებელი VPN ხელის ჩამორთმევა ნამდვილად დაქვეითების შეტევა?
დაქვეითების შეტევები არსებობს, მაგრამ წარუმატებელი ხელის ჩამორთმევების უმეტესობა შეთავაზების შეუთანხმებლობა, ცუდი მარშრუტი ან ვადაგასული პროფილია. ჯერ შეამოწმეთ, რა შეთანხმდა.
შეცდომით დამთავრებული ხელის ჩამორთმევა შეტევად აღიქმება, სანამ შეტყობინებას არ შეხედავთ, და უმეტესად ეს არითმეტიკაა: საერთო შეთავაზება არ არის, სერტიფიკატს ვადა გაუვიდა ან პაკეტი არასდროს ჩამოვიდა. დაქვეითების შეტევა კონკრეტული რამ არის: მოწინააღმდეგე ორივე მხარეს უბიძგებს უფრო სუსტი ქცევისკენ, ვიდრე ისინი აირჩევდნენ, და სხვა მტკიცებულებებს ტოვებს. ყოველი წარუმატებლობის ბოროტებად მიჩნევა გაგზავნით ისეთ მსხვერპლის საძებნელად, რომელიც შეიძლება არ არსებობდეს, ხოლო ნამდვილი დაქვეითების კონფიგურაციის შეცდომად მიჩნევა უფრო სუსტ შედეგს ადგილზე ტოვებს. ეს ორი შეცდომა სხვადასხვანაირად ჯდება და მხოლოდ ერთია იაფად გამოსასწორებელი.
რას ცვლის სინამდვილეში დაქვეითების შეტევა
მიზანი შიფრის გატეხვა და გასაღების გამოცნობა არ არის. მიზანი გავლენაა მოლაპარაკებაზე, რომ ორივე მხარე უფრო ძველ ვერსიაზე ან უფრო სუსტ ალგორითმზე შეჩერდეს, რომელსაც თავდამსხმელი უმკლავდება, ან ერთი მხარე დაარწმუნოს, რომ მეორე მხოლოდ ამას უჭერს მხარს.
იცვლება შეთანხმება და არა ავთენტიფიკაცია. თუ თავდამსხმელი შეთავაზებას შეუმჩნევლად შეცვლის, მხარეები მაინც შეძლებენ ხელის ჩამორთმევის დასრულებას და ერთმანეთის ავთენტიფიკაციას, მაგრამ თავდამსხმელისთვის სასურველი პარამეტრებით. სწორედ ამიტომ საინტერესო კითხვაა, დაფარულია თუ არა თავად მოლაპარაკება მთლიანობის დაცვით.
რატომ უნდა იყოს ავთენტიფიცირებული თავად მოლაპარაკება
TLS 1.3 ამ დაცვას გამომჟღავნებულს ხდის. კლიენტი, რომელმაც უფრო ახალი ვერსია შესთავაზა, შეუძლია ამოიცნოს ჩუმად უკან დაბრუნებული სერვერი, რადგან სერვერის შემთხვევითი მნიშვნელობა ფიქსირებულ ნიმუშს ატარებს, როცა 1.2-ზე ან ქვემოთ მოლაპარაკებს, და კლიენტი ვალდებულია შეწყვიტოს მისი დანახვისას. სრული ტრანსკრიპტი ასევე დაფარულია დასკვნითი შეტყობინებებით, ამიტომ მოლაპარაკების ნებისმიერ ადგილას ცვლილება მოგვიანებით ვარდება, ჩუმად არ გადის.
ძველ პროტოკოლურ ვერსიებს უფრო სუსტი ისტორიები ჰქონდათ და სწორედ ამიტომ აქვს მნიშვნელობა უკან დაბრუნების წესებს. იმავე კონფიგურაციაში TLS 1.0-ის ბოლო წერტილი დაქვეითების შეტევა არ არის; ეს დაშვებული შედეგია, რომლის ნებართვაც თქვენ აირჩიეთ. განსხვავება იმაშია, უფრო სუსტი შედეგი დაცული გადაწყვეტილებიდან მოვიდა თუ დაუცველი გზიდან, რომელზეც შუამავალს გავლენა შეეძლო. როცა ასე ჩამოაყალიბებთ, შემთხვევების უმეტესობა კონფიგურაციის კითხვად იშლება.
IKEv2 სხვაგვარად იქცევა, მაგრამ იმავე იდეაზე დგას. შეთავაზება გადაიტანება გაცვლაში, რომელიც შემდეგ ორივე მხარეს ავთენტიფიცირებს, ამიტომ ალგორითმების გადამწერი შუალედური მოწყობილობა ავთენტიფიკაციას ამტვრევს და არ მართავს. OpenVPN-ის საკონტროლო არხი თავის მოლაპარაკებას TLS-ით იცავს და შემდეგ ამ არხით ათანხმებს მონაცემთა არხის შიფრებს, ამიტომ საინტერესო სწორედ საკონტროლო არხის ჟურნალის სტრიქონია.
კონფიგურირებული თავსებადობა შეტევა არ არის
ადმინისტრატორს შეუძლია განზრახ დაუშვას ძველი არჩევანი დოკუმენტირებული კლიენტის მხარდასაჭერად და ეს გადაწყვეტილება კონფიგურაციაში ჩანს. თავდამსხმელი ვერ შექმნის ამ კონფიგურაციას; მას მხოლოდ იმ გზის გამოყენება შეუძლია, რომელიც შეთავაზებაზე გავლენას აძლევს.
საშიში შეკეთება ისაა, რომელიც განსხვავების მტკიცებულებას შლის. ყველა ძველი არჩევანის ჩართვა, სერტიფიკატის შემოწმების გამორთვა ან ნებისმიერი შიფრის მიღება შეცდომის გასაქრობად აფართოებს იმას, რასაც ბოლო წერტილი დათანხმდება და შლის იმ შემოწმებებს, რომლებიც უფრო სუსტ შედეგს შეატყობინებდნენ.
თუ ერთი ძველი არჩევანის შენარჩუნება გიწევთ, დაასახელეთ მიზეზი და კლიენტი კონფიგურაციის კომენტარში, შემდეგ შეზღუდეთ არჩევანი იმ პროფილით, რომელსაც ის სჭირდება. ერთ მსმენელზე შეზღუდული თავსებადობის გამონაკლისი აუდიტირებადია; გლობალურად გამოყენებული უბრალოდ უფრო სუსტი ნაგულისხმევია, რომლის არჩევაც არავის ახსოვს.
წაიკითხეთ წარუმატებლობა სანამ მიზეზს დაასახელებთ
ნებისმიერ ცვლილებამდე შეინახეთ შეცდომის ზუსტი სტრიქონი, კლიენტისა და სერვერის ვერსიები და დრო. შემდეგ დაახარისხეთ: მხარეები შეთავაზებაზე არ შეთანხმდნენ, პაკეტის გზა ვარდა, თუ ერთმა მხარემ უარყო პარამეტრი, რომელსაც ოდესღაც იღებდა?
შეთავაზების შეუთანხმებლობა ჩვეულებრივ ასახელებს დამნაშავე ვერსიებს ან ალგორითმებს და ყოველ ჯერზე იმავე წერტილში ვარდება. მარშრუტიზაციის ან MTU-ის პრობლემა ჩერდება ან დროის ლიმიტს აღწევს და ხშირად ქსელის მიხედვით იცვლება. ვადაგასული სერტიფიკატი შემოწმების შეცდომას იძლევა და არა მოლაპარაკებისას.
ამათგან არც ერთი თავდამსხმელის მტკიცებულება არ არის. პირველ წარუმატებლობაზე ბოროტი მიზეზის მიწერა შეცდომაა, რადგან მალავს დეტერმინისტულ ხარვეზს, რომელიც ხვალ ისევ ვარდება.
დაადასტურეთ, რა აირჩიეს სინამდვილეში
ნებისმიერი შესწორების შემდეგ წაიკითხეთ შეთანხმებული შედეგი და ნუ დაეყრდნობით იმას, რომ კავშირი ავიდა. კავშირი, რომელიც იმიტომ წარმატდება, რომ შემოწმება მოხსნეს, ის შედეგია, რომლის თავიდან აცილებასაც ცდილობდით. შემდეგი ორი ბრძანება აჩვენებს TLS-ის წინ მდგარი ბოლო წერტილის არჩეულ ვერსიასა და შიფრს, ასევე OpenVPN სერვერის ჟურნალიდან საკონტროლო არხის სტრიქონს.
openssl s_client -connect 198.51.100.30:443 -servername vpn.example.net -brief </dev/null
grep -iE 'Control Channel|Data Channel' /var/log/openvpn.log | tail -5შეადარეთ შედეგი იმ კონფიგურაციას, რომელიც განიზრახეთ და არა იმას, რაც ახლა უკავშირდება. თუ არჩეული ვერსია დაშვებულ მინიმუმზე ძველია, პროფილი ან უკან დაბრუნების სიაა საძიებელი ადგილი და პასუხი ამ სიის გასწორებაა და არა შეტევის გამოცხადება და გარშემო ყველაფრის თავიდან აშენება.